You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
3.8 KiB
174 lines
3.8 KiB
package http |
|
|
|
import ( |
|
"fmt" |
|
|
|
"go-common/app/admin/main/coupon/model" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/xstr" |
|
) |
|
|
|
func exportCode(c *bm.Context) { |
|
var ( |
|
err error |
|
codes []string |
|
) |
|
arg := new(model.ArgCouponCode) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
if codes, err = svc.ExportCode(c, arg); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
writer := c.Writer |
|
header := writer.Header() |
|
header.Add("Content-disposition", "attachment; filename="+fmt.Sprintf("%v", arg.BatchToken)+".txt") |
|
header.Add("Content-Type", "application/x-download;charset=utf-8") |
|
for _, v := range codes { |
|
writer.Write([]byte(fmt.Sprintf("%v\r\n", v))) |
|
} |
|
} |
|
|
|
func codePage(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgCouponCode) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
c.JSON(svc.CodePage(c, arg)) |
|
} |
|
|
|
func codeBlock(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgCouponCode) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
c.JSON(nil, svc.CodeBlock(c, arg)) |
|
} |
|
|
|
func codeUnBlock(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgCouponCode) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
c.JSON(nil, svc.CodeUnBlock(c, arg)) |
|
} |
|
|
|
func codeAddBatch(c *bm.Context) { |
|
var ( |
|
err error |
|
token string |
|
) |
|
arg := new(model.ArgAllowanceBatchInfo) |
|
if err = c.Bind(arg); err != nil { |
|
log.Error("c.Bind err(%+v)", err) |
|
return |
|
} |
|
operator, ok := c.Get("username") |
|
if !ok { |
|
c.JSON(nil, ecode.AccessDenied) |
|
return |
|
} |
|
if _, ok := model.ProdLimMonthMap[arg.ProdLimMonth]; !ok { |
|
c.JSON(nil, ecode.RequestErr) |
|
return |
|
} |
|
b := new(model.CouponBatchInfo) |
|
b.AppID = arg.AppID |
|
b.Name = arg.Name |
|
if arg.MaxCount == 0 || arg.MaxCount > model.BatchCodeMaxCount { |
|
c.JSON(nil, ecode.CouponCodeMaxLimitErr) |
|
return |
|
} |
|
b.MaxCount = arg.MaxCount |
|
if arg.LimitCount == 0 { |
|
b.LimitCount = -1 |
|
} else { |
|
b.LimitCount = arg.LimitCount |
|
} |
|
b.StartTime = arg.StartTime |
|
b.ExpireTime = arg.ExpireTime |
|
b.Operator = operator.(string) |
|
b.Amount = arg.Amount |
|
b.FullAmount = arg.FullAmount |
|
b.ExpireDay = arg.ExpireDay |
|
b.PlatformLimit = xstr.JoinInts(arg.PlatformLimit) |
|
b.ProdLimMonth = arg.ProdLimMonth |
|
b.ProdLimRenewal = arg.ProdLimRenewal |
|
b.CouponType = model.CouponAllowanceCode |
|
if token, err = svc.AddAllowanceBatchInfo(c, b); err != nil { |
|
c.JSON(nil, err) |
|
return |
|
} |
|
c.JSON(nil, svc.InitCodes(c, token)) |
|
} |
|
|
|
func codeBatchModify(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgAllowanceBatchInfoModify) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
operator, ok := c.Get("username") |
|
if !ok { |
|
c.JSON(nil, ecode.AccessDenied) |
|
return |
|
} |
|
b := new(model.CouponBatchInfo) |
|
b.AppID = arg.AppID |
|
b.Name = arg.Name |
|
if arg.LimitCount == 0 { |
|
b.LimitCount = -1 |
|
} else { |
|
b.LimitCount = arg.LimitCount |
|
} |
|
b.Operator = operator.(string) |
|
b.PlatformLimit = xstr.JoinInts(arg.PlatformLimit) |
|
b.ProdLimMonth = arg.ProdLimMonth |
|
b.ProdLimRenewal = arg.ProdLimRenewal |
|
b.ID = arg.ID |
|
c.JSON(nil, svc.UpdateCodeBatchInfo(c, b)) |
|
} |
|
|
|
func codeBatchList(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgBatchList) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
arg.Type = model.CouponAllowanceCode |
|
c.JSON(svc.BatchList(c, arg)) |
|
} |
|
|
|
func codeBatchBlock(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgAllowance) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
operator, ok := c.Get("username") |
|
if !ok { |
|
c.JSON(nil, ecode.AccessDenied) |
|
return |
|
} |
|
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateBlock, operator.(string), arg.ID)) |
|
} |
|
|
|
func codeBatchUnBlock(c *bm.Context) { |
|
var err error |
|
arg := new(model.ArgAllowance) |
|
if err = c.Bind(arg); err != nil { |
|
return |
|
} |
|
operator, ok := c.Get("username") |
|
if !ok { |
|
c.JSON(nil, ecode.AccessDenied) |
|
return |
|
} |
|
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateNormal, operator.(string), arg.ID)) |
|
}
|
|
|