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,53 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"activity.go",
"bp.go",
"coupon.go",
"http.go",
"notify.go",
"order.go",
"order2.go",
"panel.go",
"point.go",
"resouce.go",
"sync.go",
"tips.go",
"user.go",
"vip.go",
],
importpath = "go-common/app/service/main/vip/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/vip/conf:go_default_library",
"//app/service/main/vip/model:go_default_library",
"//app/service/main/vip/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/middleware/verify:go_default_library",
"//library/net/metadata: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,15 @@
package http
import (
"go-common/app/service/main/vip/model"
bm "go-common/library/net/http/blademaster"
)
func thirdPrizeGrant(c *bm.Context) {
a := new(model.ArgThirdPrizeGrant)
if err := c.Bind(a); err != nil {
return
}
a.AppID = model.EleAppID
c.JSON(nil, vipSvc.ThirdPrizeGrant(c, a))
}

View File

@@ -0,0 +1,27 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func bpList(c *bm.Context) {
var (
err error
res *model.BcoinSalaryResp
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if res, err = vipSvc.BcoinGive(c, arg.Mid); err != nil {
log.Error(" BcoinGive mid(%d), err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}

View File

@@ -0,0 +1,29 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func cancelUseCoupon(c *bm.Context) {
var (
err error
arg = new(model.ArgCancelUseCoupon)
)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, vipSvc.CancelUseCoupon(c, arg.Mid, arg.CouponToken, metadata.String(c, metadata.RemoteIP)))
}
func allowanceInfo(c *bm.Context) {
var err error
arg := new(model.ArgCancelUseCoupon)
if err = c.Bind(arg); err != nil {
log.Error("use allowance coupon bind %+v", err)
return
}
c.JSON(vipSvc.AllowanceInfo(c, arg.Mid, arg.CouponToken))
}

View File

@@ -0,0 +1,128 @@
package http
import (
"net/http"
"go-common/app/service/main/vip/conf"
"go-common/app/service/main/vip/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/http/blademaster/middleware/verify"
)
var (
vipSvc *service.Service
vrfSvr *verify.Verify
)
// Init init http sever instance.
func Init(c *conf.Config, s *service.Service) {
vrfSvr = verify.New(nil)
vipSvc = service.New(c)
// init router
engineOuter := bm.DefaultServer(c.BM)
innerRouter(engineOuter)
if err := engineOuter.Start(); err != nil {
log.Error("engineOuter.Start() error(%v)", err)
panic(err)
}
}
// innerRouter init inner router.
func innerRouter(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
//internal api
big := e.Group("/x/internal/big", vrfSvr.Verify)
{
big.GET("/batchInfo", batchInfo)
big.POST("/useBatchInfo", useBatchInfo)
}
vip := e.Group("/x/internal/vip", vrfSvr.Verify)
{
// bcoin
vip.GET("/bcoin/list", bpList)
// point
vip.POST("/point/exchange_vip", buyVipWithPoint)
vip.POST("/point/rule", rule)
// user
vip.GET("/user/info", byMid)
vip.GET("/user/list", vipInfos)
vip.GET("/user/history", vipHistory)
vip.GET("/user/history/h5", vipH5History)
vip.GET("/user/infobo", vipInfo) // for old service.
// order
vip.GET("/order/status", status)
vip.GET("/order/list", orders)
vip.POST("/order/create", createOrder)
vip.POST("/order/oldcreate", createOldOrder) // for old service
vip.GET("/order/mng", orderMng)
vip.GET("/order/rescision", rescision)
//panel
vip.GET("/panel", pannelInfoNew)
// panel
vip.GET("/panel/single/info", vipUserMonthPanel)
vip.GET("/panel/pirce", vipPirce)
// price
vip.GET("/price/by_product_id", priceceByProductID)
vip.GET("/price/by_id", priceceByID)
// code
vip.GET("/code/verify", webToken)
vip.POST("/code/open", openCode)
vip.GET("/code/info", codeInfo)
vip.GET("/code/infos", codeInfos)
vip.POST("/code/belong", belong)
vip.POST("/active/infos", actives)
vip.GET("/code/opened", codeOpened)
// tips
vip.GET("/tips", tips)
//coupon
vip.POST("/coupon/cancel", cancelUseCoupon)
vip.GET("/coupon/info", allowanceInfo)
// FIXME: sync user
vip.POST("/sync/user", syncUser)
vip.POST("/order/create/qr", createQrCodeOrder)
//act
vip.POST("/activity/prize/grant", thirdPrizeGrant)
vip.POST("/ele/vip/grant", grantAssociateVip)
}
vip2 := e.Group("/x/internal/vip/v2", vrfSvr.Verify)
{
vip2.POST("/order/create", createOrder2)
}
vipNotSign := e.Group("/x/internal/vip")
{
// notify
vipNotSign.GET("/notify", notify)
vipNotSign.GET("/notify/v2", notify2)
vipNotSign.GET("/notify/sign", signNotify)
vipNotSign.GET("/notify/refund", refundOrderNotify)
}
}
// ping check server ok.
func ping(c *bm.Context) {
var err error
if err = vipSvc.Ping(c); err != nil {
log.Error("service ping error(%v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
// register check server ok.
func register(c *bm.Context) {
c.JSON(map[string]interface{}{}, nil)
}

View File

@@ -0,0 +1,117 @@
package http
import (
"encoding/json"
"go-common/app/service/main/vip/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
const (
_payNotifySuccess = "SUCCESS"
_payNotifyFail = "FAIL"
)
func notify(c *bm.Context) {
d := new(model.PayCallBackResult)
if err := c.Bind(d); err != nil {
log.Error("pr.Bind err(%+v)", err)
return
}
if d.TradeNO == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if d.OutTradeNO == "" {
c.JSON(nil, ecode.RequestErr)
return
}
if d.TradeStatus != model.TradeSuccess {
c.JSON(nil, ecode.RequestErr)
return
}
if err := vipSvc.PayNotify(c, d); err != nil {
log.Error("s.PayNotify err(%+v)", err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func notify2(c *bm.Context) {
var (
err error
)
arg := new(struct {
MsgContent string `form:"msgContent" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
c.Writer.Write([]byte(_payNotifyFail))
return
}
p := &model.PayNotifyContent{}
if err = json.Unmarshal([]byte(arg.MsgContent), p); err != nil {
c.Writer.Write([]byte(_payNotifyFail))
return
}
if err = vipSvc.PayNotify2(c, p); err != nil {
log.Error("s.PayNotify2 err(%+v)", err)
if err == ecode.VipOrderAlreadyHandlerErr {
c.Writer.Write([]byte(_payNotifySuccess))
return
}
c.Writer.Write([]byte(_payNotifyFail))
return
}
c.Writer.Write([]byte(_payNotifySuccess))
}
func signNotify(c *bm.Context) {
var (
err error
)
arg := new(struct {
MsgContent string `form:"msgContent" validate:"required"`
})
if err = c.Bind(arg); err != nil {
return
}
p := new(model.PaySignNotify)
if err = json.Unmarshal([]byte(arg.MsgContent), p); err != nil {
c.Writer.Write([]byte(_payNotifyFail))
return
}
if err = vipSvc.PaySignNotify(c, p); err != nil {
log.Error("vip.paySignNotify(%+v) error(%+v)", p, err)
c.Writer.Write([]byte(_payNotifyFail))
return
}
c.Writer.Write([]byte(_payNotifySuccess))
}
func refundOrderNotify(c *bm.Context) {
var (
err error
)
arg := new(struct {
MsgContent string `form:"msgContent" validate:"required"`
})
if err = c.Bind(arg); err != nil {
return
}
p := new(model.PayRefundNotify)
log.Info("refun order notify params:%+v", arg.MsgContent)
if err = json.Unmarshal([]byte(arg.MsgContent), p); err != nil {
log.Error("error(%+v)", err)
c.Writer.Write([]byte(_payNotifyFail))
return
}
if err = vipSvc.RefundNotify(c, p); err != nil {
log.Error("vip.refundNotify(%+v) error(%+v)", arg.MsgContent, err)
c.Writer.Write([]byte(_payNotifyFail))
return
}
c.Writer.Write([]byte(_payNotifySuccess))
}

View File

@@ -0,0 +1,179 @@
package http
import (
"fmt"
"go-common/app/service/main/vip/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func status(c *bm.Context) {
var (
o *model.OrderInfo
vip *model.VipInfo
err error
)
arg := new(struct {
OrderNo string `form:"order_no" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if o, err = vipSvc.OrderInfo(c, arg.OrderNo); err != nil {
log.Error("vipSvc.OrderInfo(%s) err(%+v)", arg.OrderNo, err)
c.JSON(nil, err)
return
}
if o == nil {
c.JSON(nil, ecode.VipOrderNotFoundErr)
return
}
res := new(struct {
OrderNo string `json:"order_no"`
Status int8 `json:"status"`
Message *model.OrderMessage `json:"message"`
})
res.OrderNo = o.OrderNo
res.Status = o.Status
if o.Status == model.SUCCESS {
if vip, err = vipSvc.VipInfo(c, o.Mid); err != nil {
c.JSON(nil, err)
return
}
message := new(model.OrderMessage)
message.RightButton = "知道了"
message.Title = "开通成功"
message.Content = fmt.Sprintf("你已成功开通%d个月大会员目前有效期%s", o.BuyMonths, vip.VipOverdueTime.Time().Format("2006-01-02"))
res.Message = message
} else if o.Status == model.FAILED {
message := new(model.OrderMessage)
message.RightButton = "知道了"
message.Title = "支付失败"
message.Content = fmt.Sprintf("订单号:%s \nUID:%d \n支付失败了试试重新购买吧。", o.OrderNo, vip.Mid)
res.Message = message
}
c.JSON(res, nil)
}
func orders(c *bm.Context) {
var (
orders []*model.PayOrderResp
total int64
err error
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required,min=1,gte=1"`
Ps int `form:"ps" default:"20" validate:"min=0,max=50"`
Pn int `form:"pn" default:"1"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if orders, total, err = vipSvc.OrderList(c, arg.Mid, arg.Pn, arg.Ps); err != nil {
log.Error("vipSvc.OrderList(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
res := new(struct {
Data []*model.PayOrderResp `json:"list"`
Total int64 `json:"total"`
})
res.Data = orders
res.Total = total
c.JSON(orders, nil)
}
func createOrder(c *bm.Context) {
var (
err error
pp map[string]interface{}
)
arg := new(model.ArgCreateOrder)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if pp, err = vipSvc.CreateOrder(c, arg, metadata.String(c, metadata.RemoteIP)); err != nil {
log.Error("vipSvc.CreateOrder(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(pp, nil)
}
func pannelInfoNew(c *bm.Context) {
var (
pi *model.PannelInfo
err error
)
arg := new(model.ArgPannel)
if err = c.Bind(arg); err != nil {
log.Error("pannelInfoNew(%+v)", err)
return
}
if pi, err = vipSvc.PannelInfoNew(c, arg.Mid, arg); err != nil {
log.Error("vipSvc.PannelInfoNew(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(pi, nil)
}
func createOldOrder(c *bm.Context) {
var (
err error
)
arg := new(model.ArgOldPayOrder)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
c.JSON(nil, vipSvc.CreateOldOrder(c, arg))
}
func orderMng(c *bm.Context) {
var (
err error
order *model.OrderMng
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required,min=1,gte=1"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if order, err = vipSvc.OrderMng(c, arg.Mid); err != nil {
c.JSON(nil, err)
return
}
c.JSON(order, err)
}
func rescision(c *bm.Context) {
var (
err error
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required,mid=1,gte=1"`
DeviceType int32 `form:"deviceType" validate:"required"`
})
if err = c.Bind(arg); err != nil {
return
}
err = vipSvc.Rescision(c, arg.Mid, arg.DeviceType)
c.JSON(nil, err)
}

View File

@@ -0,0 +1,42 @@
package http
import (
"net"
"go-common/app/service/main/vip/model"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func createOrder2(c *bm.Context) {
var (
err error
r *model.CreateOrderRet
)
arg := new(model.ArgCreateOrder2)
if err = c.Bind(arg); err != nil {
return
}
arg.IP = net.ParseIP(metadata.String(c, metadata.RemoteIP))
r, _, err = vipSvc.CreateOrder2(c, arg)
c.JSON(r, err)
}
func createQrCodeOrder(c *bm.Context) {
var err error
arg := new(model.ArgCreateOrder2)
if err = c.Bind(arg); err != nil {
return
}
arg.IP = net.ParseIP(metadata.String(c, metadata.RemoteIP))
c.JSON(vipSvc.CreateQrCodeOrder(c, arg))
}
func grantAssociateVip(c *bm.Context) {
var err error
arg := new(model.ArgEleVipGrant)
if err = c.Bind(arg); err != nil {
return
}
c.JSON(nil, vipSvc.EleVipGrant(c, arg))
}

View File

@@ -0,0 +1,42 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func vipUserMonthPanel(c *bm.Context) {
arg := new(model.ArgVipConfigMonth)
if err := c.Bind(arg); err != nil {
return
}
plat := vipSvc.GetPlatID(c, arg.Platform, arg.PanelType, arg.MobiApp, arg.Device, 0)
c.JSON(vipSvc.VipUserPrice(c, arg.Mid, arg.Month, plat, arg.SubType, arg.IgnoreAutoRenewStatus, arg.Build))
}
func vipPirce(c *bm.Context) {
arg := new(model.ArgVipConfigMonth)
if err := c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
plat := vipSvc.GetPlatID(c, arg.Platform, arg.PanelType, arg.MobiApp, arg.Device, 0)
c.JSON(vipSvc.VipPrice(c, arg.Mid, arg.Month, plat, arg.SubType, arg.CouponToken, arg.Platform, arg.Build))
}
func priceceByProductID(c *bm.Context) {
arg := new(model.ArgPriceByProduct)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.PriceByProductID(c, arg.ProductID))
}
func priceceByID(c *bm.Context) {
arg := new(model.ArgVipPriceByID)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.VipPriceByID(c, arg))
}

View File

@@ -0,0 +1,28 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func buyVipWithPoint(c *bm.Context) {
var (
err error
)
arg := new(model.ArgBuyPoint)
if err = c.Bind(arg); err != nil {
log.Error("buyVipWithPoint Bind err(%+v)", err)
return
}
if err = vipSvc.BuyVipWithPoint(c, arg.Mid, arg.Month); err != nil {
log.Error("BuyVipWithPoint(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(nil, nil)
}
func rule(c *bm.Context) {
c.JSON(vipSvc.PointRule(c))
}

View File

@@ -0,0 +1,91 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func codeInfo(c *bm.Context) {
arg := new(struct {
Code string `form:"code" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.CodeInfo(c, arg.Code))
}
func codeInfos(c *bm.Context) {
arg := new(struct {
Codes []string `form:"codes,split" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.CodeInfos(c, arg.Codes))
}
func openCode(c *bm.Context) {
var (
token *model.TokenResq
code *model.VipResourceCode
err error
)
arg := new(struct {
Token string `form:"token" validate:"required"`
Code string `form:"code" validate:"required"`
Verify string `form:"verify" validate:"required"`
Mid int64 `form:"mid" validate:"required"`
})
if err = c.Bind(arg); err != nil {
return
}
if token, err = vipSvc.Verify(c, arg.Token, arg.Verify); err != nil {
c.JSON(nil, ecode.CreativeGeetestErr)
return
}
if token.Code != 0 {
c.JSON(nil, ecode.CreativeGeetestErr)
return
}
if code, err = vipSvc.OpenCode(c, arg.Code, arg.Mid); err != nil {
c.JSON(nil, err)
return
}
c.JSON(code, nil)
}
func belong(c *bm.Context) {
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.Belong(c, arg.Mid))
}
func actives(c *bm.Context) {
arg := new(struct {
RelationIDs []string `form:"relationIds,split" `
})
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.Actives(c, arg.RelationIDs))
}
func webToken(c *bm.Context) {
c.JSON(vipSvc.WebToken(c))
}
func codeOpened(c *bm.Context) {
arg := new(model.ArgCodeOpened)
if err := c.Bind(arg); err != nil {
return
}
c.JSON(vipSvc.CodeOpened(c, arg))
}

View File

@@ -0,0 +1,16 @@
package http
import (
"go-common/app/service/main/vip/model"
bm "go-common/library/net/http/blademaster"
)
func syncUser(c *bm.Context) {
var err error
user := new(model.VipUserInfo)
if err = c.Bind(user); err != nil {
return
}
vipSvc.SyncUser(c, user)
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,26 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// tips info.
func tips(c *bm.Context) {
var (
res []*model.TipsResp
err error
arg = new(model.ArgTips)
)
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if res, err = vipSvc.Tips(c, arg); err != nil {
log.Error("vipSvc.Tips(%+v) err(%+v)", arg, err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}

View File

@@ -0,0 +1,101 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
// byMid get vipinfo by mid.
func byMid(c *bm.Context) {
var (
res *model.VipInfoResp
err error
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if res, err = vipSvc.ByMid(c, arg.Mid); err != nil {
log.Error("vipSvc.ByMid(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}
func vipInfos(c *bm.Context) {
var (
vMap map[int64]*model.VipInfoResp
err error
)
arg := new(struct {
Mids []int64 `form:"mids,split" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err %+v", err)
return
}
if vMap, err = vipSvc.VipInfos(c, arg.Mids); err != nil {
log.Error("vipSvc.VipInfos(%v) err(%+v)", arg.Mids, err)
c.JSON(nil, err)
return
}
c.JSON(vMap, nil)
}
func vipHistory(c *bm.Context) {
var (
err error
)
arg := new(model.ArgChangeHistory)
if c.Bind(arg); err != nil {
log.Error("vipHistory(%d) err(%+v)", arg.Mid, err)
return
}
vh, count, err := vipSvc.History(c, arg)
rel := make(map[string]interface{})
rel["data"] = vh
rel["total"] = count
c.JSON(rel, err)
}
func vipH5History(c *bm.Context) {
var (
err error
)
arg := new(model.ArgChangeHistory)
if c.Bind(arg); err != nil {
log.Error("vipH5History(%d) err(%+v)", arg.Mid, err)
return
}
c.JSON(vipSvc.H5History(c, arg))
}
// vipInfo (for old service).
func vipInfo(c *bm.Context) {
var (
res *model.VipInfoBoResp
err error
)
arg := new(struct {
Mid int64 `form:"mid" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("c.Bind err(%+v)", err)
return
}
if res, err = vipSvc.VipInfoBo(c, arg.Mid); err != nil {
log.Error("vipSvc.VipInfo(%d) err(%+v)", arg.Mid, err)
c.JSON(nil, err)
return
}
c.JSON(res, nil)
}

View File

@@ -0,0 +1,52 @@
package http
import (
"go-common/app/service/main/vip/model"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func batchInfo(c *bm.Context) {
var (
err error
vib *model.VipResourceBatch
)
arg := new(struct {
BatchID int64 `form:"batchId" validate:"required,min=1,gte=1"`
Appkey string `form:"appkey"`
})
if err = c.Bind(arg); err != nil {
log.Error("batchInfo Bind error(%v)", err)
return
}
if vib, _, err = vipSvc.BatchInfo(c, arg.BatchID, arg.Appkey); err != nil {
log.Error("vipSvc.BatchInfo(%d) error(%v)", arg.BatchID, err)
c.JSON(nil, err)
return
}
c.JSON(vib, nil)
}
func useBatchInfo(c *bm.Context) {
var (
err error
)
arg := new(struct {
BatchID int64 `form:"batchId" validate:"required,min=1,gte=1"`
Appkey string `form:"appkey"`
Mid int64 `form:"mid" validate:"required,min=1,gte=1"`
OrderNo string `form:"orderNo" validate:"required"`
Remark string `form:"remark" validate:"required"`
})
if err = c.Bind(arg); err != nil {
log.Error("useBatchInfo Bind error(%v)", err)
return
}
c.JSON(nil, vipSvc.ResourceBatchOpenVip(c, &model.ArgUseBatch{
Mid: arg.Mid,
OrderNo: arg.OrderNo,
Remark: arg.Remark,
Appkey: arg.Appkey,
BatchID: arg.BatchID,
}))
}