fuwencai 5 сар өмнө
parent
commit
9bebb37290

+ 1 - 0
.gitignore

@@ -16,3 +16,4 @@ manifest/output/
 temp/
 temp.yaml
 bin
+/.output/

+ 17 - 0
api/equity_info/equity_info.go

@@ -0,0 +1,17 @@
+// =================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// =================================================================================
+
+package equity_info
+
+import (
+	"context"
+
+	"demo/api/equity_info/v1"
+)
+
+type IEquityInfoV1 interface {
+	Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error)
+	Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error)
+	GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error)
+}

+ 54 - 0
api/equity_info/v1/equity_info.go

@@ -0,0 +1,54 @@
+package v1
+
+import (
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/net/ghttp"
+	"github.com/gogf/gf/v2/os/gtime"
+)
+
+type CreateReq struct {
+	g.Meta         `path:"/equity_info" method:"post" tags:"equity_info" summary:"Create equity_info"`
+	ActiveId       int               `json:"activeId"   orm:"active_id"   description:"关联活动id"` // 关联活动id
+	PrizeId        int               `json:"prizeId"    dc:"lottery_prize_info---id"`
+	File           *ghttp.UploadFile ` json:"file" type:"file"  dc:"活动id"`
+	EquityInfoList []struct {
+		SerialNum string      `json:"serialNum"  dc:"序号"`       // 序号
+		Code      string      `json:"code"       dc:"权益码(唯一性)"` // 权益码(唯一性)
+		Name      string      `json:"name"       dc:"权益名称"`     // 权益名称
+		ExEndTime *gtime.Time `json:"exEndTime"  dc:"兑换截止时间"`   // 兑换截止时间
+	} `json:"equity_info_list"`
+}
+type CreateRes struct {
+}
+
+type UpdateReq struct {
+	g.Meta      `path:"/equity_info/{id}" method:"put" tags:"equity_info" summary:"Update equity_info"`
+	ActiveId    *int `description:"关联活动id"` // 关联活动id
+	PrizeId     *int `dc:"lottery_prize_info---id"`
+	NewActiveId *int `description:"新的关联活动id"`
+	NewPrizeId  *int `dc:"新的lottery_prize_info---id"`
+	Count       *int `dc:"划转过去多少个"`
+}
+type UpdateRes struct{}
+
+// GetListReq 兑换码剩余数量
+type GetListReq struct {
+	g.Meta   `path:"/equity_info" method:"get" tags:"equity_info" summary:"Get equity_info"`
+	ActiveId *int `description:"关联活动id"` // 关联活动id
+	PrizeId  *int `dc:"lottery_prize_info---id"`
+}
+type EquityInfoCount struct {
+	Name      string      `dc:"权益名称"`            // 权益名称
+	ExEndTime *gtime.Time `dc:"兑换截止时间"`          // 兑换截止时间
+	ActiveId  *int        `description:"关联活动id"` // 关联活动id
+	PrizeId   *int        `dc:"lottery_prize_info---id"`
+}
+type GetListRes struct {
+	List  []*EquityInfoCount `json:"list" dc:"equity_info list"`
+	Total int                `json:"total" dc:"equity_info list total"`
+}
+
+//type GetActivityConfigReq struct {
+//	g.Meta `path:"/activity-config" method:"get" tags:"ActivityConfig" summary:"Get Activitys config"`
+//}
+//type GetActivityConfigRes map[string]interface{}

+ 2 - 2
api/prize_base_info/v1/prize_base_info.go

@@ -51,6 +51,6 @@ type GetListReq struct {
 	Limit  int `d:"10" dc:"每页条数"`
 }
 type GetListRes struct {
-	List  []*entity.LotteryPrizeInfo `json:"list" dc:"prize_base_info list"`
-	Total int                        `json:"total" dc:"prize_base_info list total"`
+	List  []*entity.PrizeBaseInfo `json:"list" dc:"prize_base_info list"`
+	Total int                     `json:"total" dc:"prize_base_info list total"`
 }

+ 2 - 2
api/product_rule/v1/product_rule.go

@@ -33,8 +33,8 @@ type GetListReq struct {
 	Limit      int  `d:"10" dc:"每页条数"`
 }
 type GetListRes struct {
-	List  []*entity.ActivityInfo `json:"list" dc:"product_rule list"`
-	Total int                    `json:"total" dc:"product_rule list total"`
+	List  []*entity.ProductRule `json:"list" dc:"product_rule list"`
+	Total int                   `json:"total" dc:"product_rule list total"`
 }
 
 type DelReq struct {

BIN
exampl.xlsx


+ 1 - 0
go.mod

@@ -6,6 +6,7 @@ require (
 	app.yhyue.com/moapp/jybase v0.0.0-20250228070014-019656d96e4c
 	github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.3
 	github.com/gogf/gf/v2 v2.8.3
+	github.com/tealeg/xlsx v1.0.5
 )
 
 require (

+ 4 - 1
go.sum

@@ -65,6 +65,8 @@ github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE=
+github.com/tealeg/xlsx v1.0.5/go.mod h1:btRS8dz54TDnvKNosuAqxrM1QgN1udgk9O34bDCnORM=
 github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
 github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
@@ -112,8 +114,9 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
 golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 8 - 0
internal/cmd/cmd.go

@@ -3,7 +3,11 @@ package cmd
 import (
 	"context"
 	"demo/internal/controller/activity"
+	"demo/internal/controller/equity_info"
 	"demo/internal/controller/lottery_prize_info"
+	"demo/internal/controller/prize_base_info"
+	"demo/internal/controller/product_info"
+	"demo/internal/controller/product_rule"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
 	"github.com/gogf/gf/v2/os/gcmd"
@@ -25,6 +29,10 @@ var (
 					hello.NewV1(),
 					activity.NewV1(),
 					lottery_prize_info.NewV1(),
+					equity_info.NewV1(),
+					prize_base_info.NewV1(),
+					product_info.NewV1(),
+					product_rule.NewV1(),
 				)
 			})
 			//s.SetSwaggerUITemplate(MySwaggerUITemplate)

+ 5 - 0
internal/controller/equity_info/equity_info.go

@@ -0,0 +1,5 @@
+// =================================================================================
+// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
+// =================================================================================
+
+package equity_info

+ 15 - 0
internal/controller/equity_info/equity_info_new.go

@@ -0,0 +1,15 @@
+// =================================================================================
+// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
+// =================================================================================
+
+package equity_info
+
+import (
+	"demo/api/equity_info"
+)
+
+type ControllerV1 struct{}
+
+func NewV1() equity_info.IEquityInfoV1 {
+	return &ControllerV1{}
+}

+ 57 - 0
internal/controller/equity_info/equity_info_v1_create.go

@@ -0,0 +1,57 @@
+package equity_info
+
+import (
+	"context"
+	"demo/api/equity_info/v1"
+	"demo/internal/dao"
+	"demo/internal/model/do"
+	"demo/utility"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/os/gtime"
+)
+
+func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
+	saveData := []do.EquityInfo{}
+	if req.File != nil {
+		slice, err := utility.GetFileSlice(req.File)
+		if err != nil {
+			g.Log().Error(ctx, err)
+			return nil, err
+		}
+		if len(slice) > 0 && len(slice[0]) > 1 {
+			for i := 0; i < len(slice[0]); i++ {
+				if len(slice[0][i]) != 4 {
+					continue
+				}
+				saveData = append(saveData, do.EquityInfo{
+					ActiveId:   req.ActiveId,
+					PrizeId:    req.PrizeId,
+					SerialNum:  slice[0][i][0],
+					Name:       slice[0][i][1],
+					Code:       slice[0][i][2],
+					ExEndTime:  gtime.ParseTimeFromContent(slice[0][i][3]),
+					CreateTime: gtime.Now(),
+				})
+			}
+		}
+	}
+	if len(req.EquityInfoList) != 0 {
+		for i := 0; i < len(req.EquityInfoList); i++ {
+			saveData = append(saveData, do.EquityInfo{
+				ActiveId:   req.ActiveId,
+				PrizeId:    req.PrizeId,
+				SerialNum:  req.EquityInfoList[i].SerialNum,
+				Name:       req.EquityInfoList[i].Name,
+				Code:       req.EquityInfoList[i].Code,
+				ExEndTime:  req.EquityInfoList[i].ExEndTime,
+				CreateTime: gtime.Now(),
+			})
+		}
+	}
+	_, err = dao.EquityInfo.Ctx(ctx).Data(saveData).Insert()
+	if err != nil {
+		g.Log().Error(ctx, err)
+		return nil, err
+	}
+	return nil, err
+}

+ 24 - 0
internal/controller/equity_info/equity_info_v1_get_list.go

@@ -0,0 +1,24 @@
+package equity_info
+
+import (
+	"context"
+	"demo/internal/dao"
+	"github.com/gogf/gf/v2/frame/g"
+
+	"demo/api/equity_info/v1"
+)
+
+func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) {
+	columns := dao.EquityInfo.Columns()
+	res = &v1.GetListRes{}
+	err = dao.EquityInfo.Ctx(ctx).Fields("count(*) as total ,name,active_id,prize_id,ex_end_time").Where(
+		g.Map{
+			columns.ActiveId: req.ActiveId,
+			columns.PrizeId:  req.PrizeId,
+			columns.State:    0,
+		}).OmitEmpty().Group(columns.ActiveId, columns.PrizeId, columns.Name, columns.ExEndTime).OrderDesc(columns.ActiveId).ScanAndCount(&res.List, &res.Total, false)
+	if err != nil {
+		return nil, err
+	}
+	return res, err
+}

+ 27 - 0
internal/controller/equity_info/equity_info_v1_update.go

@@ -0,0 +1,27 @@
+package equity_info
+
+import (
+	"context"
+	"demo/internal/dao"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/os/gtime"
+
+	"demo/api/equity_info/v1"
+)
+
+func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
+	columns := dao.EquityInfo.Columns()
+	_, err = dao.EquityInfo.Ctx(ctx).Data(g.Map{
+		columns.ActiveId:   req.NewActiveId,
+		columns.PrizeId:    req.PrizeId,
+		columns.UpdateTime: gtime.Now(),
+	}).Where(g.Map{
+		columns.ActiveId: req.ActiveId,
+		columns.PrizeId:  req.PrizeId,
+	}).Limit(*req.Count).Update()
+	if err != nil {
+		g.Log().Error(ctx, err)
+		return nil, err
+	}
+	return res, err
+}

+ 1 - 1
internal/controller/lottery_prize_info/lottery_prize_info_v1_del.go

@@ -8,5 +8,5 @@ import (
 
 func (c *ControllerV1) Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, err error) {
 	_, err = dao.LotteryPrizeInfo.Ctx(ctx).Data("state=1").Where("id=?", req.Id).Update()
-	return &v1.DelRes{State: 0}, err
+	return nil, err
 }

+ 10 - 4
internal/controller/product_rule/product_rule_v1_create.go

@@ -2,13 +2,19 @@ package product_rule
 
 import (
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
+	"demo/internal/dao"
+	"demo/internal/model/do"
 
 	"demo/api/product_rule/v1"
 )
 
 func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	_, err = dao.ProductRule.Ctx(ctx).Data(do.ProductRule{
+		ActiveId:      req.ActiviteId,
+		ProductInfoId: req.ProductInfoId, // 活动奖励对应的剑鱼产品id
+		PrizeId:       req.PrizeId,       // 活动奖品信息表lottery_prize_info的id
+		State:         req.State,         // 是否可用;默认0:可用;1:不可用
+		Cycle:         req.Cycle,         // 可兑换周期(单位天): 90
+	}).Insert()
+	return nil, err
 }

+ 3 - 5
internal/controller/product_rule/product_rule_v1_del.go

@@ -2,13 +2,11 @@ package product_rule
 
 import (
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
-
 	"demo/api/product_rule/v1"
+	"demo/internal/dao"
 )
 
 func (c *ControllerV1) Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, err error) {
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	_, err = dao.ProductRule.Ctx(ctx).Where("id=?", req.Id).Delete()
+	return nil, err
 }

+ 8 - 4
internal/controller/product_rule/product_rule_v1_get_list.go

@@ -2,13 +2,17 @@ package product_rule
 
 import (
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
+	"demo/internal/dao"
 
 	"demo/api/product_rule/v1"
 )
 
 func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) {
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	res = &v1.GetListRes{}
+
+	err = dao.ProductRule.Ctx(ctx).Limit(req.Offset, req.Limit).ScanAndCount(&res.List, &res.Total, false)
+	if err != nil {
+		return nil, err
+	}
+	return res, err
 }

+ 10 - 4
internal/controller/product_rule/product_rule_v1_update.go

@@ -2,13 +2,19 @@ package product_rule
 
 import (
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
+	"demo/internal/dao"
+	"demo/internal/model/do"
 
 	"demo/api/product_rule/v1"
 )
 
 func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	_, err = dao.ProductRule.Ctx(ctx).Data(do.ProductRule{
+		ActiveId:      req.ActiviteId,
+		ProductInfoId: req.ProductInfoId, // 活动奖励对应的剑鱼产品id
+		PrizeId:       req.PrizeId,       // 活动奖品信息表lottery_prize_info的id
+		State:         req.State,         // 是否可用;默认0:可用;1:不可用
+		Cycle:         req.Cycle,         // 可兑换周期(单位天): 90
+	}).OmitEmpty().Where("id=?", req.Id).Save()
+	return nil, err
 }

+ 0 - 1
internal/logic/activity/activity.go

@@ -1 +0,0 @@
-package activity

+ 8 - 0
internal/service/activity.go

@@ -0,0 +1,8 @@
+// ================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// You can delete these comments if you wish manually maintain this interface file.
+// ================================================================================
+
+package service
+
+type ()

+ 3 - 0
main.go

@@ -3,8 +3,11 @@ package main
 import (
 	_ "demo/internal/boot"
 	_ "demo/internal/packed"
+
 	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
 
+	_ "demo/internal/logic"
+
 	"github.com/gogf/gf/v2/os/gctx"
 
 	"demo/internal/cmd"

+ 11 - 0
manifest/config/option.yaml

@@ -68,3 +68,14 @@ lottery_prize_info_config: #奖品选择项
         name: "大会员"
       - value: "v"
         name: "超级订阅"
+equity_info_config:
+  state:
+    multiple: false # 是否多选
+    option:
+      - value: 0
+        name: "有效"
+        default: true
+      - value: 1
+        name: "已赠送"
+      - value: -1
+          name: "失效"

+ 2 - 2
manifest/docker/Dockerfile

@@ -4,9 +4,9 @@ FROM loads/alpine:3.8
 #                                INSTALLATION
 ###############################################################################
 
-ENV WORKDIR                 /app
+ENV WORKDIR                 /demo
 ADD resource                $WORKDIR/
-ADD ./temp/linux_amd64/main $WORKDIR/main
+ADD .output/demo_linux      $WORKDIR/main
 RUN chmod +x $WORKDIR/main
 
 ###############################################################################

+ 0 - 0
utility/.gitkeep


+ 27 - 0
utility/file.go

@@ -0,0 +1,27 @@
+package utility
+
+import (
+	"github.com/gogf/gf/v2/net/ghttp"
+	"github.com/tealeg/xlsx"
+)
+
+func GetFileSlice(uploadFile *ghttp.UploadFile) (output [][][]string, err error) {
+	file, err := uploadFile.Open()
+	if err != nil {
+		return nil, err
+	}
+	var b []byte
+	_, err = file.Read(b)
+	if err != nil {
+		return nil, err
+	}
+	fileXlsx, err := xlsx.OpenBinary(b)
+	if err != nil {
+		return nil, err
+	}
+	slice, err := fileXlsx.ToSlice()
+	if err != nil {
+		return nil, err
+	}
+	return slice, nil
+}