bilibili-backup/app/admin/main/growup/http/trade.go
2019-04-22 02:59:20 +00:00

140 lines
3.1 KiB
Go

package http
import (
"fmt"
"net/http"
"time"
"go-common/app/admin/main/growup/model"
"go-common/library/log"
"go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/render"
)
func goodsSync(c *blademaster.Context) {
var arg = new(struct {
GoodsType int `form:"goods_type" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
eff, err := svr.SyncGoods(c, arg.GoodsType)
if err != nil {
log.Error("svr.SyncGoods err(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(eff, nil)
}
func goodsUpdate(c *blademaster.Context) {
var arg = new(struct {
ID int64 `form:"id" validate:"required"`
Discount int `form:"discount" validate:"min=1,max=100"`
})
if err := c.Bind(arg); err != nil {
return
}
eff, err := svr.UpdateGoodsInfo(c, arg.Discount, arg.ID)
if err != nil {
log.Error("svr.UpdateGoodsInfo err(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(eff, nil)
}
func goodsDisplay(c *blademaster.Context) {
arg := new(struct {
IDs []int64 `form:"ids,split" validate:"required"`
Display int `form:"display" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
eff, err := svr.UpdateGoodsDisplay(c, model.DisplayStatus(arg.Display), arg.IDs)
if err != nil {
log.Error("svr.UpdateGoodsDisplay err(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(eff, nil)
}
func goodsList(c *blademaster.Context) {
arg := new(struct {
From int `form:"from" validate:"min=0" default:"0"`
Limit int `form:"limit" validate:"min=1" default:"20"`
})
if err := c.Bind(arg); err != nil {
return
}
total, list, err := svr.GoodsList(c, arg.From, arg.Limit)
if err != nil {
log.Error("svr.GoodsList err(%v)", err)
c.JSON(nil, err)
return
}
renderPagRes(list, total, arg.Limit)(c)
}
func orderList(c *blademaster.Context) {
arg := new(model.OrderQueryArg)
if err := c.Bind(arg); err != nil {
return
}
total, list, err := svr.OrderList(c, arg, arg.From, arg.Limit)
if err != nil {
log.Error("svr.OrderList err(%v)", err)
c.JSON(nil, err)
return
}
renderPagRes(list, total, arg.Limit)(c)
}
func renderPagRes(list interface{}, total int64, ps int) func(c *blademaster.Context) {
return func(c *blademaster.Context) {
c.Render(http.StatusOK, render.MapJSON(map[string]interface{}{
"code": 0,
"message": "0",
"data": list,
"paging": map[string]interface{}{
"page_size": ps,
"total": total,
},
}))
}
}
func orderExport(c *blademaster.Context) {
arg := new(model.OrderQueryArg)
if err := c.Bind(arg); err != nil {
return
}
content, err := svr.OrderExport(c, arg, arg.From, arg.Limit)
if err != nil {
log.Error("svr.OrderExport err(%v)", err)
c.JSON(nil, err)
return
}
c.Render(http.StatusOK, CSV{
Content: content,
Title: fmt.Sprintf("%s-%s", time.Now().Format("2006-01-02"), "creative_order"),
})
}
func orderStatistics(c *blademaster.Context) {
arg := new(model.OrderQueryArg)
if err := c.Bind(arg); err != nil {
return
}
res, err := svr.OrderStatistics(c, arg)
if err != nil {
log.Error("svr.OrderStatistics err(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}