Create & Init Project...
This commit is contained in:
54
app/admin/main/vip/http/BUILD
Normal file
54
app/admin/main/vip/http/BUILD
Normal file
@ -0,0 +1,54 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"business.go",
|
||||
"dialog.go",
|
||||
"http.go",
|
||||
"jointly.go",
|
||||
"month.go",
|
||||
"order.go",
|
||||
"panel.go",
|
||||
"platform.go",
|
||||
"privilege.go",
|
||||
"push.go",
|
||||
"resouce.go",
|
||||
"tips.go",
|
||||
"version.go",
|
||||
"vip.go",
|
||||
"welfare.go",
|
||||
],
|
||||
importpath = "go-common/app/admin/main/vip/http",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/admin/main/vip/conf:go_default_library",
|
||||
"//app/admin/main/vip/model:go_default_library",
|
||||
"//app/admin/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/binding:go_default_library",
|
||||
"//library/net/http/blademaster/middleware/permit: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"],
|
||||
)
|
83
app/admin/main/vip/http/business.go
Normal file
83
app/admin/main/vip/http/business.go
Normal file
@ -0,0 +1,83 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
const (
|
||||
_defpn = 1
|
||||
_defps = 10
|
||||
)
|
||||
|
||||
func business(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
r *model.VipBusinessInfo
|
||||
)
|
||||
arg := new(model.ArgID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if r, err = vipSvc.BusinessInfo(c, int(arg.ID)); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(r, nil)
|
||||
}
|
||||
|
||||
func updateBusiness(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.VipBusinessInfo)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.ID == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpdateBusinessInfo(c, arg))
|
||||
}
|
||||
|
||||
func addBusiness(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.VipBusinessInfo)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.AddBusinessInfo(c, arg))
|
||||
}
|
||||
|
||||
func businessList(c *bm.Context) {
|
||||
var (
|
||||
infos []*model.VipBusinessInfo
|
||||
total int64
|
||||
err error
|
||||
arg = new(model.ArgPage)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.Pn == 0 {
|
||||
arg.Pn = _defpn
|
||||
}
|
||||
if arg.Ps == 0 {
|
||||
arg.Ps = _defps
|
||||
}
|
||||
if infos, total, err = vipSvc.BusinessList(c, arg.Pn, arg.Ps, arg.Status); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
res := new(struct {
|
||||
Data []*model.VipBusinessInfo `json:"data"`
|
||||
Total int64 `json:"total"`
|
||||
})
|
||||
res.Data = infos
|
||||
res.Total = total
|
||||
c.JSON(res, nil)
|
||||
}
|
74
app/admin/main/vip/http/dialog.go
Normal file
74
app/admin/main/vip/http/dialog.go
Normal file
@ -0,0 +1,74 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func dialogList(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
AppID int64 `form:"app_id"`
|
||||
Platform int64 `form:"platform"`
|
||||
Status string `form:"status"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.DialogAll(c, arg.AppID, arg.Platform, arg.Status))
|
||||
}
|
||||
|
||||
func dialogInfo(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.DialogByID(c, arg))
|
||||
}
|
||||
|
||||
func dialogSave(c *bm.Context) {
|
||||
arg := new(model.ConfDialog)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.StartTime != 0 && arg.EndTime != 0 && arg.StartTime >= arg.EndTime {
|
||||
c.JSON(nil, ecode.VipDialogTimeErr)
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(vipSvc.DialogSave(c, arg))
|
||||
}
|
||||
|
||||
func dialogEnable(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required"`
|
||||
Stage bool `form:"stage"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.DialogEnable(c, &model.ConfDialog{ID: arg.ID, Stage: arg.Stage, Operator: username.(string)}))
|
||||
}
|
||||
|
||||
func dialogDel(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.DialogDel(c, arg, username.(string)))
|
||||
}
|
183
app/admin/main/vip/http/http.go
Normal file
183
app/admin/main/vip/http/http.go
Normal file
@ -0,0 +1,183 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/conf"
|
||||
"go-common/app/admin/main/vip/service"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/middleware/permit"
|
||||
)
|
||||
|
||||
var (
|
||||
// depend service
|
||||
vipSvc *service.Service
|
||||
authSvc *permit.Permit
|
||||
cf *conf.Config
|
||||
)
|
||||
|
||||
//Init init http
|
||||
func Init(c *conf.Config) {
|
||||
cf = c
|
||||
initService(c)
|
||||
// init external router
|
||||
engine := bm.DefaultServer(c.BM)
|
||||
initRouter(engine)
|
||||
// init Outer serve
|
||||
if err := engine.Start(); err != nil {
|
||||
log.Error("engine.Start error(%v)", err)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// initService init services.
|
||||
func initService(c *conf.Config) {
|
||||
vipSvc = service.New(c)
|
||||
authSvc = permit.New(c.Auth)
|
||||
}
|
||||
|
||||
// initRouter init outer router api path.
|
||||
func initRouter(e *bm.Engine) {
|
||||
e.Ping(moPing)
|
||||
group := e.Group("/x/admin/vip", authSvc.Verify())
|
||||
{
|
||||
monthGroup := group.Group("/month", authSvc.Permit("VIP_MONTH"))
|
||||
{
|
||||
monthGroup.GET("/list", monthList)
|
||||
monthGroup.POST("/edit", monthEdit)
|
||||
monthGroup.GET("/price/list", priceList)
|
||||
monthGroup.POST("/price/add", priceAdd)
|
||||
monthGroup.POST("/price/edit", priceEdit)
|
||||
}
|
||||
poolGroup := group.Group("/pool", authSvc.Permit("VIP_POOL"))
|
||||
{
|
||||
poolGroup.GET("/list", queryPool)
|
||||
poolGroup.GET("/info", getPool)
|
||||
poolGroup.POST("/save", savePool)
|
||||
|
||||
batchGroup := poolGroup.Group("/batch")
|
||||
{
|
||||
batchGroup.GET("/list", queryBatch)
|
||||
batchGroup.GET("/info", getBatch)
|
||||
batchGroup.POST("/add", addBatch)
|
||||
batchGroup.POST("/edit", saveBatch)
|
||||
batchGroup.POST("/consume", grantResouce)
|
||||
}
|
||||
|
||||
}
|
||||
batchCodeGroup := group.Group("/batchCode", authSvc.Permit("VIP_BATCH_CODE"))
|
||||
{
|
||||
batchCodeGroup.GET("/list", batchCodes)
|
||||
batchCodeGroup.POST("/save", saveBatchCode)
|
||||
batchCodeGroup.POST("/frozen", frozenBatchCode)
|
||||
batchCodeGroup.GET("/export", exportCodes)
|
||||
codeGroup := batchCodeGroup.Group("/code")
|
||||
{
|
||||
codeGroup.GET("/list", codes)
|
||||
codeGroup.POST("/frozen", frozenCode)
|
||||
}
|
||||
}
|
||||
pushGroup := group.Group("/push", authSvc.Permit("VIP_PUSH"))
|
||||
{
|
||||
pushGroup.GET("/list", pushs)
|
||||
pushGroup.POST("/save", savePush)
|
||||
pushGroup.GET("/info", push)
|
||||
pushGroup.GET("/del", delPush)
|
||||
pushGroup.GET("/disable", disablePush)
|
||||
|
||||
}
|
||||
|
||||
vipGroup := group.Group("/user", authSvc.Permit("VIP_USER"))
|
||||
{
|
||||
vipGroup.POST("/drawback", drawback)
|
||||
vipGroup.GET("/log/list", historyList)
|
||||
vipGroup.GET("/info", vipInfo)
|
||||
}
|
||||
bizGroup := group.Group("/biz", authSvc.Permit("VIP_BIZ"))
|
||||
{
|
||||
bizGroup.GET("/list", businessList)
|
||||
bizGroup.POST("/add", addBusiness)
|
||||
bizGroup.GET("/info", business)
|
||||
bizGroup.POST("/edit", updateBusiness)
|
||||
}
|
||||
verGroup := group.Group("/version", authSvc.Permit("VIP_VERSION"))
|
||||
{
|
||||
verGroup.GET("/list", versions)
|
||||
verGroup.POST("/edit", updateVersion)
|
||||
}
|
||||
tipsGroup := group.Group("/tips", authSvc.Permit("VIP_TIPS"))
|
||||
{
|
||||
tipsGroup.GET("/list", tips)
|
||||
tipsGroup.GET("/info", tipbyid)
|
||||
tipsGroup.POST("/add", tipadd)
|
||||
tipsGroup.POST("/edit", tipupdate)
|
||||
tipsGroup.GET("/delete", tipdelete)
|
||||
tipsGroup.POST("/expire", tipexpire)
|
||||
}
|
||||
panelGroup := group.Group("/panel")
|
||||
{
|
||||
panelGroup.GET("/conf/types", authSvc.Permit("VIP_PRICE_PANEL"), vipPanelTypes)
|
||||
panelGroup.GET("/conf/list", authSvc.Permit("VIP_PRICE_PANEL"), vipPriceConfigs)
|
||||
panelGroup.GET("/conf/info", authSvc.Permit("VIP_PRICE_PANEL"), vipPriceConfigID)
|
||||
panelGroup.POST("/conf/add", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), addVipPriceConfig)
|
||||
panelGroup.POST("/conf/up", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), upVipPriceConfig)
|
||||
panelGroup.POST("/conf/del", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), delVipPriceConfig)
|
||||
panelGroup.GET("/conf/dprice/list", authSvc.Permit("VIP_PRICE_PANEL"), vipDPriceConfigs)
|
||||
panelGroup.GET("/conf/dprice/info", authSvc.Permit("VIP_PRICE_PANEL"), vipDPriceConfigID)
|
||||
panelGroup.POST("/conf/dprice/add", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), addVipDPriceConfig)
|
||||
panelGroup.POST("/conf/dprice/up", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), upVipDPriceConfig)
|
||||
panelGroup.POST("/conf/dprice/del", authSvc.Permit("VIP_PRICE_PANEL_CONTROL"), delVipDPriceConfig)
|
||||
}
|
||||
pgGroup := group.Group("/privilege", authSvc.Permit("VIP_PRIVILEGE"))
|
||||
{
|
||||
pgGroup.GET("/list", privileges)
|
||||
pgGroup.POST("/update/state", updatePrivilegeState)
|
||||
pgGroup.POST("/delete", deletePrivilege)
|
||||
pgGroup.POST("/update/order", updateOrder)
|
||||
pgGroup.POST("/add", addPrivilege)
|
||||
pgGroup.POST("/modify", updatePrivilege)
|
||||
}
|
||||
jointlyGroup := group.Group("/jointly", authSvc.Permit("VIP_JOINTLY"))
|
||||
{
|
||||
jointlyGroup.GET("/list", jointlys)
|
||||
jointlyGroup.POST("/add", addJointly)
|
||||
jointlyGroup.POST("/modify", modifyJointly)
|
||||
jointlyGroup.POST("/delete", deleteJointly)
|
||||
}
|
||||
refundGroup := group.Group("/order", authSvc.Permit("VIP_ORDER"))
|
||||
{
|
||||
refundGroup.GET("/list", orderList)
|
||||
refundGroup.POST("/refund", authSvc.Permit("VIP_REFUND"), refund)
|
||||
}
|
||||
dialogGroup := group.Group("/dialog", authSvc.Permit("VIP_DIALOG"))
|
||||
{
|
||||
dialogGroup.GET("/list", dialogList)
|
||||
dialogGroup.GET("/info", dialogInfo)
|
||||
dialogGroup.POST("/save", dialogSave)
|
||||
dialogGroup.POST("/enable", dialogEnable)
|
||||
dialogGroup.POST("/del", dialogDel)
|
||||
}
|
||||
platformGroup := group.Group("/platform", authSvc.Permit("VIP_PLATFORM"))
|
||||
{
|
||||
platformGroup.GET("/list", platformList)
|
||||
platformGroup.GET("/info", platformInfo)
|
||||
platformGroup.POST("/save", platformSave)
|
||||
platformGroup.POST("/del", platformDel)
|
||||
}
|
||||
welfareGroup := group.Group("/welfare", authSvc.Permit("VIP_WELFARE"))
|
||||
{
|
||||
welfareGroup.POST("/type/save", welfareTypeSave)
|
||||
welfareGroup.POST("/type/state", welfareTypeState)
|
||||
welfareGroup.GET("/type/list", welfareTypeList)
|
||||
welfareGroup.POST("/save", welfareSave)
|
||||
welfareGroup.POST("/state", welfareState)
|
||||
welfareGroup.GET("/list", welfareList)
|
||||
welfareGroup.POST("/batch/upload", welfareBatchUpload)
|
||||
welfareGroup.GET("/batch/list", welfareBatchList)
|
||||
welfareGroup.POST("/batch/state", welfareBatchState)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func moPing(c *bm.Context) {
|
||||
vipSvc.Ping(c)
|
||||
}
|
51
app/admin/main/vip/http/jointly.go
Normal file
51
app/admin/main/vip/http/jointly.go
Normal file
@ -0,0 +1,51 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func jointlys(c *bm.Context) {
|
||||
arg := new(model.ArgQueryJointly)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.JointlysByState(c, arg.State))
|
||||
}
|
||||
|
||||
func addJointly(c *bm.Context) {
|
||||
arg := new(model.ArgAddJointly)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(nil, vipSvc.AddJointly(c, arg))
|
||||
}
|
||||
|
||||
func modifyJointly(c *bm.Context) {
|
||||
arg := new(model.ArgModifyJointly)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(nil, vipSvc.ModifyJointly(c, arg))
|
||||
}
|
||||
|
||||
func deleteJointly(c *bm.Context) {
|
||||
arg := new(model.ArgJointlyID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.DeleteJointly(c, arg.ID))
|
||||
}
|
92
app/admin/main/vip/http/month.go
Normal file
92
app/admin/main/vip/http/month.go
Normal file
@ -0,0 +1,92 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func monthList(c *bm.Context) {
|
||||
var (
|
||||
res []*model.VipMonth
|
||||
err error
|
||||
)
|
||||
if res, err = vipSvc.MonthList(c); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
page := &model.PageInfo{Count: len(res), Item: res}
|
||||
c.JSON(page, nil)
|
||||
}
|
||||
|
||||
func monthEdit(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.ArgIDExtra)
|
||||
)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(nil, vipSvc.MonthEdit(c, arg.ID, arg.Status, arg.Operator))
|
||||
}
|
||||
|
||||
func priceList(c *bm.Context) {
|
||||
var (
|
||||
res []*model.VipMonthPrice
|
||||
err error
|
||||
arg = new(model.ArgID)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.PriceList(c, arg.ID); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
page := &model.PageInfo{Count: len(res), Item: res}
|
||||
c.JSON(page, nil)
|
||||
}
|
||||
|
||||
func priceAdd(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mp = new(model.VipMonthPrice)
|
||||
)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
mp.Operator = username.(string)
|
||||
if err = c.Bind(mp); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.PriceAdd(c, mp))
|
||||
}
|
||||
|
||||
func priceEdit(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
mp = new(model.VipMonthPrice)
|
||||
)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
mp.Operator = username.(string)
|
||||
if err = c.Bind(mp); err != nil {
|
||||
return
|
||||
}
|
||||
if mp.ID <= 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.PriceEdit(c, mp))
|
||||
}
|
36
app/admin/main/vip/http/order.go
Normal file
36
app/admin/main/vip/http/order.go
Normal file
@ -0,0 +1,36 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func orderList(c *bm.Context) {
|
||||
arg := new(model.ArgPayOrder)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
res, count, err := vipSvc.OrderList(c, arg)
|
||||
info := new(model.PageInfo)
|
||||
info.Count = int(count)
|
||||
info.Item = res
|
||||
info.CurrentPage = arg.PN
|
||||
c.JSON(info, err)
|
||||
}
|
||||
|
||||
func refund(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
OrderNo string `form:"order_no" validate:"required"`
|
||||
RefundAmount float64 `form:"refund_amount" validate:"required"`
|
||||
})
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.Refund(c, arg.OrderNo, username.(string), arg.RefundAmount))
|
||||
}
|
95
app/admin/main/vip/http/panel.go
Normal file
95
app/admin/main/vip/http/panel.go
Normal file
@ -0,0 +1,95 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func vipPriceConfigs(c *bm.Context) {
|
||||
arg := new(model.ArgVipPrice)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.VipPriceConfigs(c, arg))
|
||||
}
|
||||
|
||||
func vipPriceConfigID(c *bm.Context) {
|
||||
arg := new(model.ArgVipPriceID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.VipPriceConfigID(c, arg))
|
||||
}
|
||||
|
||||
func addVipPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgAddOrUpVipPrice)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.AddVipPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func upVipPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgAddOrUpVipPrice)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.ID == 0 {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpVipPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func delVipPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgVipPriceID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.DelVipPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func vipDPriceConfigs(c *bm.Context) {
|
||||
arg := new(model.ArgVipPriceID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.VipDPriceConfigs(c, arg))
|
||||
}
|
||||
|
||||
func vipDPriceConfigID(c *bm.Context) {
|
||||
arg := new(model.ArgVipDPriceID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.VipDPriceConfigID(c, arg))
|
||||
}
|
||||
|
||||
func addVipDPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgAddOrUpVipDPrice)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.AddVipDPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func upVipDPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgAddOrUpVipDPrice)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpVipDPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func delVipDPriceConfig(c *bm.Context) {
|
||||
arg := new(model.ArgVipDPriceID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.DelVipDPriceConfig(c, arg))
|
||||
}
|
||||
|
||||
func vipPanelTypes(c *bm.Context) {
|
||||
c.JSON(vipSvc.PanelPlatFormTypes(c))
|
||||
}
|
59
app/admin/main/vip/http/platform.go
Normal file
59
app/admin/main/vip/http/platform.go
Normal file
@ -0,0 +1,59 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func platformList(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
Order string `form:"order" default:"desc"`
|
||||
// PN int `form:"pn" default:"1"`
|
||||
// PS int `form:"ps" default:"20"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.PlatformAll(c, arg.Order))
|
||||
}
|
||||
|
||||
func platformInfo(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.PlatformByID(c, arg))
|
||||
}
|
||||
|
||||
func platformSave(c *bm.Context) {
|
||||
arg := new(model.ConfPlatform)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
// platform:必填,可选项为:android、ios、web、public
|
||||
if _, ok := model.PlatformMap[arg.Platform]; !ok {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(vipSvc.PlatformSave(c, arg))
|
||||
}
|
||||
|
||||
func platformDel(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.PlatformDel(c, arg, username.(string)))
|
||||
}
|
234
app/admin/main/vip/http/privilege.go
Normal file
234
app/admin/main/vip/http/privilege.go
Normal file
@ -0,0 +1,234 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/net/http/blademaster/binding"
|
||||
)
|
||||
|
||||
const (
|
||||
_maxnamelen = 30
|
||||
_maxtitlelen = 60
|
||||
_maxexplainlen = 1200
|
||||
)
|
||||
|
||||
// regexp utf8 char 0x0e0d~0e4A
|
||||
var (
|
||||
_emptyUnicodeReg = []*regexp.Regexp{
|
||||
regexp.MustCompile(`[\x{202e}]+`), // right-to-left override
|
||||
regexp.MustCompile(`[\x{200b}]+`), // zeroWithChar
|
||||
regexp.MustCompile(`[\x{1f6ab}]+`), // no_entry_sign
|
||||
}
|
||||
// trim
|
||||
returnReg = regexp.MustCompile(`[\n]{3,}`)
|
||||
returnReg2 = regexp.MustCompile(`(\r\n){3,}`)
|
||||
spaceReg = regexp.MustCompile(`[ ]{5,}`) // Chinese quanjiao space character
|
||||
)
|
||||
|
||||
func privileges(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(struct {
|
||||
Langtype int8 `form:"lang_type"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.Privileges(c, arg.Langtype))
|
||||
}
|
||||
|
||||
func updatePrivilegeState(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgStatePrivilege)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpdatePrivilegeState(c, &model.Privilege{
|
||||
ID: arg.ID,
|
||||
State: arg.Status,
|
||||
}))
|
||||
}
|
||||
|
||||
func deletePrivilege(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgPivilegeID)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.DeletePrivilege(c, arg.ID))
|
||||
}
|
||||
|
||||
func updateOrder(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgOrder)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpdateOrder(c, arg))
|
||||
}
|
||||
|
||||
func addPrivilege(c *bm.Context) {
|
||||
var err error
|
||||
arg := new(model.ArgAddPrivilege)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
|
||||
return
|
||||
}
|
||||
if len(arg.Name) > _maxnamelen {
|
||||
c.JSON(nil, ecode.VipPrivilegeNameTooLongErr)
|
||||
return
|
||||
}
|
||||
if len(arg.Title) > _maxtitlelen {
|
||||
c.JSON(nil, ecode.VipPrivilegeTitleTooLongErr)
|
||||
return
|
||||
}
|
||||
if len(arg.Explain) > _maxexplainlen {
|
||||
c.JSON(nil, ecode.VipPrivilegeExplainTooLongErr)
|
||||
return
|
||||
}
|
||||
img := new(model.ArgImage)
|
||||
if img.IconBody, img.IconFileType, err = file(c, "icon"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.IconFileType == "" {
|
||||
c.JSON(nil, ecode.VipFileImgEmptyErr)
|
||||
return
|
||||
}
|
||||
if img.IconGrayBody, img.IconGrayFileType, err = file(c, "gray_icon"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.IconGrayFileType == "" {
|
||||
c.JSON(nil, ecode.VipFileImgEmptyErr)
|
||||
return
|
||||
}
|
||||
if img.WebImageBody, img.WebImageFileType, err = file(c, "web_image"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.AppImageBody, img.AppImageFileType, err = file(c, "app_image"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
arg.Explain = filterContent(arg.Explain)
|
||||
c.JSON(nil, vipSvc.AddPrivilege(c, arg, img))
|
||||
}
|
||||
|
||||
func updatePrivilege(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
arg := new(model.ArgUpdatePrivilege)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
if err = c.BindWith(arg, binding.FormMultipart); err != nil {
|
||||
return
|
||||
}
|
||||
if len(arg.Name) > _maxnamelen {
|
||||
c.JSON(nil, ecode.VipPrivilegeNameTooLongErr)
|
||||
return
|
||||
}
|
||||
if len(arg.Title) > _maxtitlelen {
|
||||
c.JSON(nil, ecode.VipPrivilegeTitleTooLongErr)
|
||||
return
|
||||
}
|
||||
if len(arg.Explain) > _maxexplainlen {
|
||||
c.JSON(nil, ecode.VipPrivilegeExplainTooLongErr)
|
||||
return
|
||||
}
|
||||
img := new(model.ArgImage)
|
||||
if img.IconBody, img.IconFileType, err = file(c, "icon"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.IconGrayBody, img.IconGrayFileType, err = file(c, "gray_icon"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.WebImageBody, img.WebImageFileType, err = file(c, "web_image"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if img.AppImageBody, img.AppImageFileType, err = file(c, "app_image"); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
arg.Explain = filterContent(arg.Explain)
|
||||
c.JSON(nil, vipSvc.UpdatePrivilege(c, arg, img))
|
||||
}
|
||||
|
||||
func file(c *bm.Context, name string) (body []byte, filetype string, err error) {
|
||||
var file multipart.File
|
||||
if file, _, err = c.Request.FormFile(name); err != nil {
|
||||
if err == http.ErrMissingFile {
|
||||
err = nil
|
||||
return
|
||||
}
|
||||
err = ecode.RequestErr
|
||||
return
|
||||
}
|
||||
if file == nil {
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
if body, err = ioutil.ReadAll(file); err != nil {
|
||||
err = ecode.RequestErr
|
||||
return
|
||||
}
|
||||
filetype = http.DetectContentType(body)
|
||||
if err = checkImgFileType(filetype); err != nil {
|
||||
return
|
||||
}
|
||||
err = checkFileBody(body)
|
||||
return
|
||||
}
|
||||
|
||||
func checkImgFileType(filetype string) error {
|
||||
switch filetype {
|
||||
case "image/jpeg", "image/jpg":
|
||||
case "image/png":
|
||||
default:
|
||||
return ecode.VipFileTypeErr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkFileBody(body []byte) error {
|
||||
if len(body) == 0 {
|
||||
return ecode.FileNotExists
|
||||
}
|
||||
if len(body) > cf.Bfs.MaxFileSize {
|
||||
return ecode.FileTooLarge
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func filterContent(str string) string {
|
||||
tmp := str
|
||||
// check params
|
||||
tmp = strings.TrimSpace(tmp)
|
||||
tmp = spaceReg.ReplaceAllString(tmp, " ")
|
||||
tmp = returnReg.ReplaceAllString(tmp, "\n\n\n")
|
||||
tmp = returnReg2.ReplaceAllString(tmp, "\n\n\n")
|
||||
// checkout empty
|
||||
for _, reg := range _emptyUnicodeReg {
|
||||
tmp = reg.ReplaceAllString(tmp, "")
|
||||
}
|
||||
return tmp
|
||||
}
|
65
app/admin/main/vip/http/push.go
Normal file
65
app/admin/main/vip/http/push.go
Normal file
@ -0,0 +1,65 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func pushs(c *bm.Context) {
|
||||
arg := new(model.ArgPushData)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
res, count, err := vipSvc.PushDatas(c, arg)
|
||||
|
||||
result := make(map[string]interface{})
|
||||
result["data"] = res
|
||||
result["total"] = count
|
||||
c.JSON(result, err)
|
||||
}
|
||||
|
||||
func push(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(vipSvc.GetPushData(c, arg.ID))
|
||||
}
|
||||
|
||||
func disablePush(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(nil, vipSvc.DisablePushData(c, arg.ID))
|
||||
}
|
||||
|
||||
func delPush(c *bm.Context) {
|
||||
arg := new(model.ArgID)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(nil, vipSvc.DelPushData(c, arg.ID))
|
||||
}
|
||||
|
||||
func savePush(c *bm.Context) {
|
||||
arg := new(model.VipPushData)
|
||||
username, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
arg.Operator = username.(string)
|
||||
c.JSON(nil, vipSvc.SavePushData(c, arg))
|
||||
}
|
331
app/admin/main/vip/http/resouce.go
Normal file
331
app/admin/main/vip/http/resouce.go
Normal file
@ -0,0 +1,331 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func queryPool(c *bm.Context) {
|
||||
var (
|
||||
arg = new(model.ResoucePoolBo)
|
||||
pools []*model.VipResourcePool
|
||||
count int
|
||||
err error
|
||||
)
|
||||
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if pools, count, err = vipSvc.QueryPool(c, arg); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
for _, v := range pools {
|
||||
var business *model.VipBusinessInfo
|
||||
if business, err = vipSvc.BusinessInfo(c, v.BusinessID); err != nil {
|
||||
return
|
||||
}
|
||||
v.BusinessName = business.BusinessName
|
||||
}
|
||||
dataMap := make(map[string]interface{})
|
||||
dataMap["item"] = pools
|
||||
dataMap["count"] = count
|
||||
c.JSONMap(dataMap, nil)
|
||||
}
|
||||
|
||||
func getPool(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.ArgID)
|
||||
pool *model.VipResourcePool
|
||||
business *model.VipBusinessInfo
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if pool, err = vipSvc.PoolInfo(c, int(arg.ID)); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if pool == nil {
|
||||
c.JSON(pool, nil)
|
||||
return
|
||||
}
|
||||
if business, err = vipSvc.BusinessInfo(c, pool.BusinessID); err != nil {
|
||||
return
|
||||
}
|
||||
if business != nil {
|
||||
pool.BusinessName = business.BusinessName
|
||||
}
|
||||
|
||||
c.JSON(pool, nil)
|
||||
|
||||
}
|
||||
|
||||
func savePool(c *bm.Context) {
|
||||
arg := new(model.ResoucePoolBo)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.ID == 0 {
|
||||
c.JSON(nil, vipSvc.AddPool(c, arg))
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.UpdatePool(c, arg))
|
||||
}
|
||||
|
||||
func getBatch(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.ArgID)
|
||||
batch *model.VipResourceBatch
|
||||
pool *model.VipResourcePool
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if batch, err = vipSvc.BatchInfo(c, int(arg.ID)); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if batch == nil {
|
||||
c.JSON(nil, nil)
|
||||
return
|
||||
}
|
||||
if pool, err = vipSvc.PoolInfo(c, batch.PoolID); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if pool == nil {
|
||||
c.JSON(nil, ecode.VipPoolIDErr)
|
||||
return
|
||||
}
|
||||
vo := new(model.ResouceBatchVo)
|
||||
vo.Unit = batch.Unit
|
||||
vo.ID = batch.ID
|
||||
vo.PoolName = pool.PoolName
|
||||
vo.SurplusCount = batch.SurplusCount
|
||||
vo.PoolID = batch.PoolID
|
||||
vo.Count = batch.Count
|
||||
vo.StartTime = batch.StartTime
|
||||
vo.EndTime = batch.EndTime
|
||||
vo.DirectUseCount = batch.DirectUseCount
|
||||
vo.Ver = batch.Ver
|
||||
vo.CodeUseCount = batch.CodeUseCount
|
||||
c.JSON(vo, nil)
|
||||
}
|
||||
|
||||
func queryBatch(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.ArgPoolID)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.BatchInfoOfPool(c, arg.PoolID))
|
||||
}
|
||||
|
||||
func addBatch(c *bm.Context) {
|
||||
var arg = new(model.ResouceBatchBo)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.AddBatch(c, arg))
|
||||
}
|
||||
|
||||
func saveBatch(c *bm.Context) {
|
||||
var arg = new(model.ArgReSource)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(nil, vipSvc.UpdateBatch(c, arg.ID, arg.Increment, arg.StartTime, arg.EndTime))
|
||||
|
||||
}
|
||||
|
||||
func grantResouce(c *bm.Context) {
|
||||
var (
|
||||
req = c.Request
|
||||
mids []int
|
||||
username string
|
||||
file multipart.File
|
||||
err error
|
||||
failMids []int
|
||||
uc *http.Cookie
|
||||
)
|
||||
|
||||
if file, _, err = req.FormFile("uploadFile"); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
r := bufio.NewReader(file)
|
||||
for {
|
||||
var buf []byte
|
||||
buf, _, err = r.ReadLine()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
midStr := string(buf)
|
||||
if len(midStr) > 0 && midStr != "0" {
|
||||
mid := 0
|
||||
if mid, err = strconv.Atoi(midStr); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
} else if err == nil {
|
||||
mids = append(mids, mid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if uc, err = c.Request.Cookie("username"); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
username = uc.Value
|
||||
arg := new(struct {
|
||||
Mid int `form:"mid"`
|
||||
BatchID int64 `form:"batch_id" validate:"required"`
|
||||
Remark string `form:"remark" validate:"required"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
if arg.Mid > 0 {
|
||||
mids = append(mids, arg.Mid)
|
||||
}
|
||||
|
||||
if failMids, err = vipSvc.GrandResouce(c, arg.Remark, arg.BatchID, mids, username); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(failMids, nil)
|
||||
|
||||
}
|
||||
|
||||
func saveBatchCode(c *bm.Context) {
|
||||
arg := new(model.BatchCode)
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, exists := c.Get("username")
|
||||
if exists {
|
||||
arg.Operator = username.(string)
|
||||
}
|
||||
c.JSON(nil, vipSvc.SaveBatchCode(c, arg))
|
||||
}
|
||||
|
||||
func batchCodes(c *bm.Context) {
|
||||
|
||||
arg := new(model.ArgBatchCode)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
pageArg := new(struct {
|
||||
PN int `form:"pn"`
|
||||
PS int `form:"ps"`
|
||||
})
|
||||
if err := c.Bind(pageArg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
res, total, err := vipSvc.SelBatchCode(c, arg, pageArg.PN, pageArg.PS)
|
||||
result := make(map[string]interface{})
|
||||
result["data"] = res
|
||||
result["total"] = total
|
||||
c.JSON(result, err)
|
||||
}
|
||||
|
||||
func frozenCode(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required"`
|
||||
Status int8 `form:"status" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(nil, vipSvc.FrozenCode(c, arg.ID, arg.Status))
|
||||
}
|
||||
func frozenBatchCode(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required"`
|
||||
Status int8 `form:"status" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(nil, vipSvc.FrozenBatchCode(c, arg.ID, arg.Status))
|
||||
}
|
||||
func codes(c *bm.Context) {
|
||||
arg := new(model.ArgCode)
|
||||
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
pageArg := new(struct {
|
||||
PS int `form:"ps"`
|
||||
Cursor int64 `form:"cursor"`
|
||||
Username string `form:"username"`
|
||||
})
|
||||
if err := c.Bind(pageArg); err != nil {
|
||||
return
|
||||
}
|
||||
username, exists := c.Get("username")
|
||||
if exists {
|
||||
pageArg.Username = username.(string)
|
||||
}
|
||||
res, cursor, pre, err := vipSvc.SelCode(c, arg, pageArg.Username, pageArg.Cursor, pageArg.PS)
|
||||
result := make(map[string]interface{})
|
||||
result["data"] = res
|
||||
result["cursor"] = cursor
|
||||
result["pre"] = pre
|
||||
c.JSON(result, err)
|
||||
}
|
||||
|
||||
func exportCodes(c *bm.Context) {
|
||||
var (
|
||||
batchCodes []*model.BatchCode
|
||||
err error
|
||||
codes []string
|
||||
)
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
batchIds := []int64{arg.ID}
|
||||
if batchCodes, err = vipSvc.SelBatchCodes(c, batchIds); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
if len(batchCodes) == 0 {
|
||||
c.JSON(nil, ecode.VipBatchIDErr)
|
||||
return
|
||||
}
|
||||
|
||||
if codes, err = vipSvc.ExportCode(c, arg.ID); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
writer := c.Writer
|
||||
header := writer.Header()
|
||||
header.Add("Content-disposition", "attachment; filename="+fmt.Sprintf("%v", batchCodes[0].BatchName)+".txt")
|
||||
header.Add("Content-Type", "application/x-download;charset=utf-8")
|
||||
for _, v := range codes {
|
||||
writer.Write([]byte(fmt.Sprintf("%v\r\n", v)))
|
||||
}
|
||||
}
|
150
app/admin/main/vip/http/tips.go
Normal file
150
app/admin/main/vip/http/tips.go
Normal file
@ -0,0 +1,150 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
// tips info.
|
||||
func tips(c *bm.Context) {
|
||||
var (
|
||||
res []*model.Tips
|
||||
err error
|
||||
)
|
||||
arg := new(struct {
|
||||
State int8 `form:"state"`
|
||||
Platform int8 `form:"platform"`
|
||||
Position int8 `form:"position"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.TipList(c, arg.Platform, arg.State, arg.Position); err != nil {
|
||||
log.Error("vipSvc.TipList(%+v) err(%+v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
// tips info.
|
||||
func tipbyid(c *bm.Context) {
|
||||
var (
|
||||
res *model.Tips
|
||||
err error
|
||||
)
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required,min=1,gte=1"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
if res, err = vipSvc.TipByID(c, arg.ID); err != nil {
|
||||
log.Error("vipSvc.TipByID(%d) err(%+v)", arg.ID, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
||||
|
||||
// tips add.
|
||||
func tipadd(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.Tips)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
opI, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = opI.(string)
|
||||
if err = vipSvc.AddTip(c, arg); err != nil {
|
||||
log.Error("vipSvc.AddTip(%v) err(%+v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
// tips update.
|
||||
func tipupdate(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
arg = new(model.Tips)
|
||||
)
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
opI, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
arg.Operator = opI.(string)
|
||||
if err = vipSvc.TipUpdate(c, arg); err != nil {
|
||||
log.Error("vipSvc.TipUpdate(%v) err(%+v)", arg, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
// tips delete.
|
||||
func tipdelete(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required,min=1,gte=1"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
opI, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err = vipSvc.DeleteTip(c, arg.ID, opI.(string)); err != nil {
|
||||
log.Error("vipSvc.DeleteTip(%d) err(%+v)", arg.ID, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
// tips expire.
|
||||
func tipexpire(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required,min=1,gte=1"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
log.Error("c.Bind err(%+v)", err)
|
||||
return
|
||||
}
|
||||
opI, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err = vipSvc.ExpireTip(c, arg.ID, opI.(string)); err != nil {
|
||||
log.Error("vipSvc.ExpireTip(%d) err(%+v)", arg.ID, err)
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
50
app/admin/main/vip/http/version.go
Normal file
50
app/admin/main/vip/http/version.go
Normal file
@ -0,0 +1,50 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func updateVersion(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
)
|
||||
arg := new(struct {
|
||||
ID int64 `form:"id" validate:"required"`
|
||||
Version string `form:"version" `
|
||||
Tip string `form:"tip"`
|
||||
Link string `form:"link"`
|
||||
})
|
||||
if err = c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
operator, ok := c.Get("username")
|
||||
if !ok {
|
||||
c.JSON(nil, ecode.AccessDenied)
|
||||
return
|
||||
}
|
||||
if err = vipSvc.UpdateVersion(c, &model.VipAppVersion{
|
||||
ID: arg.ID,
|
||||
Version: arg.Version,
|
||||
Tip: arg.Tip,
|
||||
Operator: operator.(string),
|
||||
Link: arg.Link,
|
||||
}); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func versions(c *bm.Context) {
|
||||
var (
|
||||
res []*model.VipAppVersion
|
||||
err error
|
||||
)
|
||||
if res, err = vipSvc.AllVersion(c); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(res, nil)
|
||||
}
|
67
app/admin/main/vip/http/vip.go
Normal file
67
app/admin/main/vip/http/vip.go
Normal file
@ -0,0 +1,67 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
func drawback(c *bm.Context) {
|
||||
var (
|
||||
mid int64
|
||||
params = c.Request.Form
|
||||
err error
|
||||
remark = params.Get("remark")
|
||||
username string
|
||||
days int
|
||||
)
|
||||
if nameInter, ok := c.Get("username"); ok {
|
||||
username = nameInter.(string)
|
||||
}
|
||||
midStr := params.Get("mid")
|
||||
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
daysStr := params.Get("days")
|
||||
if days, err = strconv.Atoi(daysStr); err != nil {
|
||||
c.JSON(nil, ecode.RequestErr)
|
||||
return
|
||||
}
|
||||
if err = vipSvc.Drawback(c, days, mid, username, remark); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
c.JSON(nil, nil)
|
||||
}
|
||||
|
||||
func historyList(c *bm.Context) {
|
||||
var (
|
||||
err error
|
||||
count int
|
||||
res []*model.VipChangeHistory
|
||||
req = new(model.UserChangeHistoryReq)
|
||||
)
|
||||
|
||||
if err = c.Bind(req); err != nil {
|
||||
return
|
||||
}
|
||||
if res, count, err = vipSvc.HistoryPage(c, req); err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
page := &model.PageInfo{Count: count, Item: res}
|
||||
c.JSON(page, nil)
|
||||
}
|
||||
|
||||
func vipInfo(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
Mid int64 `form:"mid"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.VipInfo(c, arg.Mid))
|
||||
}
|
147
app/admin/main/vip/http/welfare.go
Normal file
147
app/admin/main/vip/http/welfare.go
Normal file
@ -0,0 +1,147 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
|
||||
"go-common/app/admin/main/vip/model"
|
||||
"go-common/library/ecode"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
)
|
||||
|
||||
const (
|
||||
_maxFileSize = 1048576
|
||||
)
|
||||
|
||||
func welfareTypeSave(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int `form:"id"`
|
||||
Name string `form:"name" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareTypeSave(arg.ID, arg.Name, username.(string)))
|
||||
}
|
||||
|
||||
func welfareTypeState(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int `form:"id" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareTypeState(c, arg.ID, username.(string)))
|
||||
}
|
||||
|
||||
func welfareTypeList(c *bm.Context) {
|
||||
c.JSON(vipSvc.WelfareTypeList())
|
||||
}
|
||||
|
||||
func welfareSave(c *bm.Context) {
|
||||
const _redirectThridPage = 3
|
||||
|
||||
wfReq := new(model.WelfareReq)
|
||||
if err := c.Bind(wfReq); err != nil {
|
||||
return
|
||||
}
|
||||
if wfReq.UsageForm == _redirectThridPage && wfReq.ReceiveUri == "" {
|
||||
c.JSON(nil, ecode.VipWelfareRequestErr)
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareSave(username.(string), wfReq))
|
||||
}
|
||||
|
||||
func welfareState(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int `form:"id" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareState(arg.ID, username.(string)))
|
||||
}
|
||||
|
||||
func welfareList(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
TID int `form:"tid"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.WelfareList(arg.TID))
|
||||
}
|
||||
|
||||
func welfareBatchUpload(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
WID int `form:"wid"`
|
||||
Filename string `form:"filename"`
|
||||
Vtime int `form:"vtime"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
fileBody, _, err := getFileBody(c, "file")
|
||||
if err != nil {
|
||||
c.JSON(nil, err)
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareBatchUpload(fileBody, arg.Filename, username.(string), arg.WID, arg.Vtime))
|
||||
}
|
||||
|
||||
func welfareBatchList(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
WID int `form:"wid" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
c.JSON(vipSvc.WelfareBatchList(arg.WID))
|
||||
}
|
||||
|
||||
func welfareBatchState(c *bm.Context) {
|
||||
arg := new(struct {
|
||||
ID int `form:"id" validate:"required"`
|
||||
})
|
||||
if err := c.Bind(arg); err != nil {
|
||||
return
|
||||
}
|
||||
username, _ := c.Get("username")
|
||||
c.JSON(nil, vipSvc.WelfareBatchState(c, arg.ID, username.(string)))
|
||||
}
|
||||
|
||||
func getFileBody(c *bm.Context, name string) (body []byte, filetype string, err error) {
|
||||
var file multipart.File
|
||||
if file, _, err = c.Request.FormFile(name); err != nil {
|
||||
if err == http.ErrMissingFile {
|
||||
err = nil
|
||||
return
|
||||
}
|
||||
err = ecode.RequestErr
|
||||
return
|
||||
}
|
||||
if file == nil {
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
if body, err = ioutil.ReadAll(file); err != nil {
|
||||
err = ecode.RequestErr
|
||||
return
|
||||
}
|
||||
filetype = http.DetectContentType(body)
|
||||
if filetype != "text/plain; charset=utf-8" {
|
||||
err = ecode.VipFileTypeErr
|
||||
return
|
||||
}
|
||||
if len(body) > _maxFileSize {
|
||||
err = ecode.FileTooLarge
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user