Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"allowance.go",
"code.go",
"coupon.go",
"http.go",
"view.go",
],
importpath = "go-common/app/admin/main/coupon/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/coupon/conf:go_default_library",
"//app/admin/main/coupon/model:go_default_library",
"//app/admin/main/coupon/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/binding:go_default_library",
"//library/net/http/blademaster/middleware/permit:go_default_library",
"//library/xstr:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,268 @@
package http
import (
"bytes"
"io"
"mime/multipart"
"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/net/http/blademaster/binding"
"go-common/library/xstr"
)
// batchadd add.
func allowanceBatchadd(c *bm.Context) {
var err error
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 {
b.MaxCount = -1
} else {
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.CouponAllowance
_, err = svc.AddAllowanceBatchInfo(c, b)
c.JSON(nil, err)
}
// batchadd allowance modify.
func allowanceBatchModify(c *bm.Context) {
var err error
arg := new(model.ArgAllowanceBatchInfoModify)
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
}
b := new(model.CouponBatchInfo)
b.AppID = arg.AppID
b.Name = arg.Name
if arg.MaxCount == 0 {
b.MaxCount = -1
} else {
b.MaxCount = arg.MaxCount
}
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.UpdateAllowanceBatchInfo(c, b))
}
// allowanceBlock .
func allowanceBatchBlock(c *bm.Context) {
var err error
arg := new(model.ArgAllowance)
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
}
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateBlock, operator.(string), arg.ID))
}
// allowanceUnBlock .
func allowanceBatchUnBlock(c *bm.Context) {
var err error
arg := new(model.ArgAllowance)
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
}
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateNormal, operator.(string), arg.ID))
}
func allowanceSalary(c *bm.Context) {
var (
f multipart.File
h *multipart.FileHeader
err error
)
arg := new(model.ArgAllowanceSalary)
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if len(arg.Mids) <= 0 {
f, h, err = c.Request.FormFile("file")
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
c.JSON(svc.AllowanceSalary(c, f, h, arg.Mids, arg.BatchToken, arg.MsgType))
}
func batchInfo(c *bm.Context) {
var (
err error
)
arg := new(model.ArgAllowanceInfo)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(svc.BatchInfo(c, arg.BatchToken))
}
// func allowancePage(c *bm.Context) {
// var err error
// arg := new(model.ArgAllowanceSearch)
// if err = c.Bind(arg); err != nil {
// log.Error("c.Bind err(%+v)", err)
// return
// }
// _, ok := c.Get("username")
// if !ok {
// c.JSON(nil, ecode.AccessDenied)
// return
// }
// c.JSON(svc.AllowancePage(c, arg))
// }
func allowanceList(c *bm.Context) {
var err error
arg := new(model.ArgAllowanceSearch)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(svc.AllowanceList(c, arg))
}
func allowanceBlock(c *bm.Context) {
var (
err error
)
arg := new(model.ArgAllowanceState)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(nil, svc.UpdateAllowanceState(c, arg.Mid, model.Block, arg.CouponToken))
}
func allowanceUnBlock(c *bm.Context) {
var err error
arg := new(model.ArgAllowanceState)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(nil, svc.UpdateAllowanceState(c, arg.Mid, model.NotUsed, arg.CouponToken))
}
func batchSalaryCoupon(c *bm.Context) {
var err error
req := new(model.ArgBatchSalaryCoupon)
if err = c.Bind(req); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(nil, svc.ActivitySalaryCoupon(c, req))
}
func uploadFile(c *bm.Context) {
var (
f multipart.File
err error
)
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
arg := new(model.ArgUploadFile)
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
f, _, err = c.Request.FormFile("file")
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
defer f.Close()
buf := new(bytes.Buffer)
if _, err = io.Copy(buf, f); err != nil {
c.JSON(nil, err)
return
}
c.JSON(nil, svc.OutFile(c, buf.Bytes(), arg.FileURL))
}

View File

@@ -0,0 +1,174 @@
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))
}

View File

@@ -0,0 +1,115 @@
package http
import (
"go-common/app/admin/main/coupon/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// batchadd add.
func batchadd(c *bm.Context) {
var (
err error
)
arg := new(model.ArgBatchInfo)
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
}
b := new(model.CouponBatchInfo)
b.AppID = arg.AppID
b.Name = arg.Name
if arg.MaxCount == 0 {
b.MaxCount = -1
} else {
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)
if err = svc.AddBatchInfo(c, b); err != nil {
log.Error("svc.AddBatchInfo(%v) err(%+v)", arg, err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func batchlist(c *bm.Context) {
var (
err error
res []*model.CouponBatchResp
)
arg := new(model.ArgBatchList)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if res, err = svc.BatchList(c, arg); err != nil {
log.Error("svc.BatchList(%v) err(%+v)", arg, err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}
func allAppInfo(c *bm.Context) {
c.JSON(svc.AllAppInfo(c), nil)
}
func salaryCoupon(c *bm.Context) {
var err error
arg := new(model.ArgSalaryCoupon)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if err = svc.SalaryCoupon(c, arg.Mid, arg.CouponType, arg.Count, arg.BranchToken); err != nil {
log.Error("svc.SalaryCoupon(%v) err(%+v)", arg, err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func batchBlock(c *bm.Context) {
var err error
arg := new(model.ArgAllowance)
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
}
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateBlock, operator.(string), arg.ID))
}
// allowanceUnBlock .
func batchUnBlock(c *bm.Context) {
var err error
arg := new(model.ArgAllowance)
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
}
c.JSON(nil, svc.UpdateBatchStatus(c, model.BatchStateNormal, operator.(string), arg.ID))
}

View File

@@ -0,0 +1,93 @@
package http
import (
"net/http"
"go-common/app/admin/main/coupon/conf"
"go-common/app/admin/main/coupon/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/permit"
)
var (
svc *service.Service
authSvc *permit.Permit
)
// Init init
func Init(c *conf.Config) {
initService(c)
// init router
engine := bm.DefaultServer(c.BM)
initRouter(engine)
if err := engine.Start(); err != nil {
log.Error("engine.Start error(%v)", err)
panic(err)
}
}
// initService init services.
func initService(c *conf.Config) {
authSvc = permit.New(c.Auth)
svc = service.New(c)
}
// initRouter init outer router api path.
func initRouter(e *bm.Engine) {
//init api
e.Ping(ping)
group := e.Group("/x/admin/coupon", authSvc.Permit("CONPON"))
group.GET("/batch/list", batchlist)
group.POST("/batch/add", batchadd)
group.GET("/appinfo/list", allAppInfo)
group.POST("/salary", salaryCoupon)
allowance := group.Group("/allowance", authSvc.Permit("CONPON_ALLOWANCE"))
allowance.GET("/batch/list", batchlist)
allowance.GET("/batch/info", batchInfo)
allowance.POST("/batch/block", allowanceBatchBlock)
allowance.POST("/batch/unblock", allowanceBatchUnBlock)
allowance.POST("/batch/add", allowanceBatchadd)
allowance.POST("/batch/modify", allowanceBatchModify)
allowance.GET("/list", allowanceList)
allowance.POST("/block", allowanceBlock)
allowance.POST("/unblock", allowanceUnBlock)
allowance.POST("/salary", allowanceSalary)
allowance.POST("/activity/salary", batchSalaryCoupon)
allowance.POST("/uploadfile", uploadFile)
view := group.Group("/view", authSvc.Permit("COUPON_VIEW"))
{
view.GET("/batch/list", batchlist)
view.GET("/batch/info", batchInfo)
view.POST("/batch/block", batchBlock)
view.POST("/batch/unblock", batchUnBlock)
view.POST("/batch/add", viewBatchAdd)
view.POST("/batch/save", viewBatchSave)
view.GET("/list", viewList)
view.POST("/block", viewBlock)
view.POST("/unblock", viewUnblock)
view.POST("/salary", salaryView)
}
// code
group.GET("/batch_code/list", codeBatchList)
group.POST("/batch_code/block", codeBatchBlock)
group.POST("/batch_code/unblock", codeBatchUnBlock)
group.POST("/batch_code/add", codeAddBatch)
group.POST("/batch_code/modify", codeBatchModify)
group.GET("/code/list", codePage)
group.POST("/code/block", codeBlock)
group.POST("/code/unblock", codeUnBlock)
group.GET("/code/export", exportCode)
}
// ping check server ok.
func ping(c *bm.Context) {
if err := svc.Ping(c); err != nil {
log.Error("coupon http admin ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}

View File

@@ -0,0 +1,115 @@
package http
import (
"mime/multipart"
"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/net/http/blademaster/binding"
)
func viewBatchAdd(c *bm.Context) {
var err error
arg := new(model.ArgCouponViewBatch)
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
}
arg.Operator = operator.(string)
c.JSON(nil, svc.CouponViewBatchAdd(c, arg))
}
func viewBatchSave(c *bm.Context) {
var err error
arg := new(model.ArgCouponViewBatch)
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
}
arg.Operator = operator.(string)
c.JSON(nil, svc.CouponViewbatchSave(c, arg))
}
func viewBlock(c *bm.Context) {
var err error
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
CouponToken string `form:"coupon_token" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(nil, svc.CouponViewBlock(c, arg.Mid, arg.CouponToken))
}
func viewUnblock(c *bm.Context) {
var err error
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
CouponToken string `form:"coupon_token" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.bind err(%+v)", err)
return
}
_, ok := c.Get("username")
if !ok {
c.JSON(nil, ecode.AccessDenied)
return
}
c.JSON(nil, svc.CouponViewUnblock(c, arg.Mid, arg.CouponToken))
}
func viewList(c *bm.Context) {
var err error
arg := new(model.ArgSearchCouponView)
if err = c.Bind(arg); err != nil {
log.Error("c.bind err(%+v)", err)
return
}
res, count, err := svc.CouponViewList(c, arg)
info := new(model.PageInfo)
info.CurrentPage = arg.PN
info.Count = int(count)
info.Item = res
c.JSON(info, err)
}
func salaryView(c *bm.Context) {
var (
f multipart.File
h *multipart.FileHeader
err error
)
arg := new(model.ArgAllowanceSalary)
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
if len(arg.Mids) <= 0 {
f, h, err = c.Request.FormFile("file")
if err != nil {
c.JSON(nil, ecode.RequestErr)
return
}
}
c.JSON(svc.CouponViewSalary(c, f, h, arg.Mids, arg.BatchToken))
}