Browse Source

wip:开发中

fuwencai 5 months ago
parent
commit
020f3bdfda
41 changed files with 669 additions and 83 deletions
  1. 57 22
      api/activity/v1/activity.go
  2. 4 16
      api/lottery_prize_info/v1/lottery_prize_info.go
  3. 18 0
      api/prize_base_info/prize_base_info.go
  4. 56 0
      api/prize_base_info/v1/prize_base_info.go
  5. 15 0
      api/product_info/product_info.go
  6. 14 0
      api/product_info/v1/product_info.go
  7. 18 0
      api/product_rule/product_rule.go
  8. 45 0
      api/product_rule/v1/product_rule.go
  9. 13 1
      go.mod
  10. 58 3
      go.sum
  11. 3 0
      hack/config.yaml
  12. 13 0
      internal/boot/boot_enums.go
  13. 2 0
      internal/cmd/cmd.go
  14. 21 14
      internal/consts/consts.go
  15. 4 2
      internal/controller/activity/activity_v1_create.go
  16. 12 0
      internal/controller/lottery_prize_info/lottery_prize_info.go
  17. 5 6
      internal/controller/lottery_prize_info/lottery_prize_info_v1_create.go
  18. 3 5
      internal/controller/lottery_prize_info/lottery_prize_info_v1_del.go
  19. 11 4
      internal/controller/lottery_prize_info/lottery_prize_info_v1_get_list.go
  20. 22 4
      internal/controller/lottery_prize_info/lottery_prize_info_v1_update.go
  21. 5 0
      internal/controller/prize_base_info/prize_base_info.go
  22. 15 0
      internal/controller/prize_base_info/prize_base_info_new.go
  23. 22 0
      internal/controller/prize_base_info/prize_base_info_v1_create.go
  24. 16 0
      internal/controller/prize_base_info/prize_base_info_v1_del.go
  25. 17 0
      internal/controller/prize_base_info/prize_base_info_v1_get_list.go
  26. 22 0
      internal/controller/prize_base_info/prize_base_info_v1_update.go
  27. 5 0
      internal/controller/product_info/product_info.go
  28. 15 0
      internal/controller/product_info/product_info_new.go
  29. 18 0
      internal/controller/product_info/product_info_v1_get_list.go
  30. 5 0
      internal/controller/product_rule/product_rule.go
  31. 15 0
      internal/controller/product_rule/product_rule_new.go
  32. 14 0
      internal/controller/product_rule/product_rule_v1_create.go
  33. 14 0
      internal/controller/product_rule/product_rule_v1_del.go
  34. 14 0
      internal/controller/product_rule/product_rule_v1_get_list.go
  35. 14 0
      internal/controller/product_rule/product_rule_v1_update.go
  36. 4 0
      internal/dao/internal/activity_info.go
  37. 2 0
      internal/model/do/activity_info.go
  38. 2 0
      internal/model/entity/activity_info.go
  39. 1 0
      main.go
  40. 11 1
      manifest/config/config.yaml
  41. 44 5
      test.http

+ 57 - 22
api/activity/v1/activity.go

@@ -6,34 +6,69 @@ import (
 	"github.com/gogf/gf/v2/os/gtime"
 	"github.com/gogf/gf/v2/os/gtime"
 )
 )
 
 
-type CreateReq struct {
-	g.Meta           `path:"/activity" method:"post" tags:"Activity" summary:"Create activity"`
-	Id               string      `v:"required" dc:"活动id"`
-	Name             string      `v:"required" dc:"活动名称"`
-	StartTime        *gtime.Time `v:"required|datetime" dc:"活动开始时间:2024-04-13 00:00:00"`
-	EndTime          *gtime.Time `v:"required|datetime" dc:"活动结束时间:2024-05-27 23:59:59"`
-	LotteryStartTime string      `v:"required-if:mold,2,mold,1|date-format:H:i:s" dc:"抽奖开始时间:0:00:00"`
-	LotteryEndTime   string      `v:"required-if:mold,2,mold,1|date-format:H:i:s" dc:"抽奖结束时间:23:59:59"`
-	Cost             int         `v:"required-if:mold,2,mold,1" dc:"'抽奖花费:1、默X个剑鱼币兑换1次抽奖机会;传X 2、订单抽奖: 抽奖次数动态根据下单次数判断  传-1'"`
-	DailyNum         int         `v:"required|min:0" dc:" 每人每个身份每天抽奖次数限制"`
-	DeviceNum        int         `v:"required|min:0" dc:" 每个设备每天抽奖次数限制"`
-	IpNum            int         `v:"required|min:0" dc:" 每个IP每天抽奖次数限制"`
-	Pic              string      `v:"required-if:mold,2,mold,1" dc:" 活动图片"`
-	Rule             string      `v:"required" dc:" 活动规则:[  {    \"text\": \"活动时间:2024.5.13-2024.5.31,00:00至24:00。\"  }]"`
-	ShareCopy        string      `v:"required|json" dc:" 分享文案:{  \"PC\": {    \"title\": \"\",    \"subtitle\": \"\",    \"pic\": \"\",    \"href\": \"\"  },  \"APP\": {    \"title\": \"\",    \"subtitle\": \"\",    \"pic\": \"\",    \"href\": \"\"  },  \"H5\": {    \"title\": \"\",    \"subtitle\": \"!\",    \"pic\": \"\",   \"href\": \"\"  },  \"WX\": {    \"title\": \"\",    \"subtitle\": \"\",    \"pic\": \"\",    \"href\": \"\"  }}"`
-	State            int         `v:"required|in:0,1" dc:" 活动状态默认0:有效;1:已取消"`
-	Mold             int         `v:"required|in:0,1,2" dc:" 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖"`
-	OrderType        string      `v:"required-if:mold,2|in:m_1,v_1,v_2,v_3" dc:"订单类型: 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割"`
+type RuleStruct struct {
+	Text string `json:"text"`
 }
 }
-type CreateRes struct {
+type ShareCopyStruct struct {
+	PC struct {
+		Title    string `json:"title"`
+		Subtitle string `json:"subtitle"`
+		Pic      string `json:"pic"`
+		Href     string `json:"href"`
+	} `json:"PC"`
+	APP struct {
+		Title    string `json:"title"`
+		Subtitle string `json:"subtitle"`
+		Pic      string `json:"pic"`
+		Href     string `json:"href"`
+	} `json:"APP"`
+	H5 struct {
+		Title    string `json:"title"`
+		Subtitle string `json:"subtitle"`
+		Pic      string `json:"pic"`
+		Href     string `json:"href"`
+	} `json:"H5"`
+	WX struct {
+		Title    string `json:"title"`
+		Subtitle string `json:"subtitle"`
+		Pic      string `json:"pic"`
+		Href     string `json:"href"`
+	} `json:"WX"`
 }
 }
-type Status int
+type PicStruct struct {
+	Pc  string `json:"pc"`
+	App string `json:"app"`
+}
+type ActivityState int
 
 
 const (
 const (
-	StatusOK       Status = 0 // User is OK.
-	StatusDisabled Status = 1 // User is disabled.
+	ActivityStateValid   ActivityState = iota
+	ActivityStateInvalid ActivityState = 1
 )
 )
 
 
+type CreateReq struct {
+	g.Meta           `path:"/activity" method:"post" tags:"Activity" summary:"Create activity"`
+	Id               string           `v:"required" dc:"活动id"`
+	Name             string           `v:"required" dc:"活动名称"`
+	StartTime        *gtime.Time      `v:"required|datetime" dc:"活动开始时间:2024-04-13 00:00:00"`
+	EndTime          *gtime.Time      `v:"required|datetime" dc:"活动结束时间:2024-05-27 23:59:59"`
+	LotteryStartTime string           `v:"required-if:mold,2,mold,1|date-format:H:i:s" dc:"抽奖开始时间:0:00:00"`
+	LotteryEndTime   string           `v:"required-if:mold,2,mold,1|date-format:H:i:s" dc:"抽奖结束时间:23:59:59"`
+	Cost             int              `v:"required-if:mold,2,mold,1" dc:"'抽奖花费:1、默X个剑鱼币兑换1次抽奖机会;传X 2、订单抽奖: 抽奖次数动态根据下单次数判断  传-1'"`
+	DailyNum         int              `v:"required|min:0" dc:" 每人每个身份每天抽奖次数限制"`
+	DeviceNum        int              `v:"required|min:0" dc:" 每个设备每天抽奖次数限制"`
+	IpNum            int              `v:"required|min:0" dc:" 每个IP每天抽奖次数限制"`
+	Pic              *PicStruct       `v:"required-if:mold,2,mold,1" dc:" 活动图片"`
+	Rule             *[]RuleStruct    `v:"required" dc:" 活动规则:[  {    \"text\": \"活动时间:2024.5.13-2024.5.31,00:00至24:00。\"  }]"`
+	ShareCopy        *ShareCopyStruct `v:"required|json" dc:" 分享文案"`
+	State            ActivityState    `v:"required|enums" dc:" 活动状态默认0:有效;1:已取消"`
+	Mold             int              `v:"required|enums|in:1,2" dc:" 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖  当前现状不支持新增mold为0的活动,mold固定为活动6"`
+	OrderType        string           `v:"required-if:mold,2|in:m_1,v_1,v_2,v_3" dc:"订单类型: 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割"`
+	BgPic            PicStruct        `dc:"背景图片"`
+}
+type CreateRes struct {
+}
+
 type UpdateReq struct {
 type UpdateReq struct {
 	g.Meta           `path:"/activity/{id}" method:"put" tags:"Activity" summary:"Update activity"`
 	g.Meta           `path:"/activity/{id}" method:"put" tags:"Activity" summary:"Update activity"`
 	Id               int64       `v:"required" dc:"活动 id"`
 	Id               int64       `v:"required" dc:"活动 id"`

+ 4 - 16
api/lottery_prize_info/v1/lottery_prize_info.go

@@ -23,21 +23,13 @@ type CreateReq struct {
 }
 }
 
 
 type CreateRes struct {
 type CreateRes struct {
-	State int `json:"state" `
 }
 }
-type Status int
-
-const (
-	StatusOK       Status = 0 // User is OK.
-	StatusDisabled Status = 1 // User is disabled.
-)
 
 
 type DelReq struct {
 type DelReq struct {
-	g.Meta `path:"/lottery_prize_info/{id}" method:"put" tags:"lottery_prize_info" summary:"Update lottery_prize_info"`
+	g.Meta `path:"/lottery_prize_info/{id}" method:"delete" tags:"lottery_prize_info" summary:"Update lottery_prize_info"`
 	Id     *int64 ` v:"required" dc:"lottery_prize_info id"`
 	Id     *int64 ` v:"required" dc:"lottery_prize_info id"`
 }
 }
 type DelRes struct {
 type DelRes struct {
-	State int `json:"state" `
 }
 }
 type UpdateReq struct {
 type UpdateReq struct {
 	g.Meta         `path:"/lottery_prize_info/{id}" method:"put" tags:"lottery_prize_info" summary:"Update lottery_prize_info"`
 	g.Meta         `path:"/lottery_prize_info/{id}" method:"put" tags:"lottery_prize_info" summary:"Update lottery_prize_info"`
@@ -56,13 +48,9 @@ type UpdateReq struct {
 type UpdateRes struct{}
 type UpdateRes struct{}
 type GetListReq struct {
 type GetListReq struct {
 	g.Meta   `path:"/lottery_prize_info" method:"get" tags:"lottery_prize_info" summary:"Get lottery_prize_info"`
 	g.Meta   `path:"/lottery_prize_info" method:"get" tags:"lottery_prize_info" summary:"Get lottery_prize_info"`
-	ActiveId int    `v:"required" dc:" ActiveId  关联活动id"`
-	State    int    `v:"in:0,1" dc:" 奖品状态默认0:有效;1:已取消"`
-	Mold     int    `v:"in:0,1" dc:" 奖品类型 0:会员福利;1:参与奖"`
-	Name     string `dc:"奖品名称"`
-	Id       int    `dc:"奖品id"`
-	Offset   int    `d:"0" dc:"分页开始条数"`
-	Limit    int    `d:"10" dc:"每页条数"`
+	ActiveId int `v:"required" dc:" ActiveId  关联活动id"`
+	Offset   int `d:"0" dc:"分页开始条数"`
+	Limit    int `d:"10" dc:"每页条数"`
 }
 }
 type GetListRes struct {
 type GetListRes struct {
 	List  []*entity.LotteryPrizeInfo `json:"list" dc:"lottery_prize_info list"`
 	List  []*entity.LotteryPrizeInfo `json:"list" dc:"lottery_prize_info list"`

+ 18 - 0
api/prize_base_info/prize_base_info.go

@@ -0,0 +1,18 @@
+// =================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// =================================================================================
+
+package prize_base_info
+
+import (
+	"context"
+
+	"demo/api/prize_base_info/v1"
+)
+
+type IPrizeBaseInfoV1 interface {
+	Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error)
+	Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, 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)
+}

+ 56 - 0
api/prize_base_info/v1/prize_base_info.go

@@ -0,0 +1,56 @@
+package v1
+
+import (
+	"demo/internal/model/entity"
+	"github.com/gogf/gf/v2/frame/g"
+)
+
+type CreateReq struct {
+	g.Meta    `path:"/prize_base_info" method:"post" tags:"prize_base_info" summary:"Create prize_base_info 奖品基础信息"`
+	Name      string `v:"required" dc:"奖品名称"`
+	Attribute int    `v:"required" dc:"属性:0:剑鱼;1:三方会员"`
+	DrawPic   string `dc:"抽奖奖品图片"`
+	WinPic    string `dc:"中奖奖品图片"`
+	Notes     string `dc:"奖品类型说明:超级订阅1个月(单省)| WPS会员月卡"`
+	Url       string `dc:"奖品对应查看链接"`
+	Label     string `dc:"标签"`
+}
+
+type CreateRes struct {
+	State int `json:"state" `
+}
+type Status int
+
+const (
+	StatusOK       Status = 0 // User is OK.
+	StatusDisabled Status = 1 // User is disabled.
+)
+
+type DelReq struct {
+	g.Meta `path:"/prize_base_info/{id}" method:"delete" tags:"prize_base_info" summary:"Del prize_base_info"`
+	Id     *int64 ` v:"required" dc:"prize_base_info id"`
+}
+type DelRes struct {
+	State int `json:"state" `
+}
+type UpdateReq struct {
+	g.Meta    `path:"/prize_base_info/{id}" method:"put" tags:"prize_base_info" summary:"Update prize_base_info"`
+	Id        *int64 ` v:"required" dc:"prize_base_info id"`
+	Name      string `v:"required" dc:"奖品名称"`
+	Attribute *int   `dc:"属性:0:剑鱼;1:三方会员"`
+	DrawPic   string `dc:"抽奖奖品图片"`
+	WinPic    string `dc:"中奖奖品图片"`
+	Notes     string `dc:"奖品类型说明:超级订阅1个月(单省)| WPS会员月卡"`
+	Url       string `dc:"奖品对应查看链接"`
+	Label     string `dc:"标签"`
+}
+type UpdateRes struct{}
+type GetListReq struct {
+	g.Meta `path:"/prize_base_info" method:"get" tags:"prize_base_info" summary:"Get prize_base_info"`
+	Offset int `d:"0" dc:"分页开始条数"`
+	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"`
+}

+ 15 - 0
api/product_info/product_info.go

@@ -0,0 +1,15 @@
+// =================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// =================================================================================
+
+package product_info
+
+import (
+	"context"
+
+	"demo/api/product_info/v1"
+)
+
+type IProductInfoV1 interface {
+	GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error)
+}

+ 14 - 0
api/product_info/v1/product_info.go

@@ -0,0 +1,14 @@
+package v1
+
+import (
+	"demo/internal/model/entity"
+	"github.com/gogf/gf/v2/frame/g"
+)
+
+type GetListReq struct {
+	g.Meta `path:"/product_info" method:"get" tags:"product_info.go" summary:"Get product_info"`
+}
+type GetListRes struct {
+	List  []*entity.LotteryPrizeInfo `json:"list" dc:"product_info list"`
+	Total int                        `json:"total" dc:"product_info list total"`
+}

+ 18 - 0
api/product_rule/product_rule.go

@@ -0,0 +1,18 @@
+// =================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// =================================================================================
+
+package product_rule
+
+import (
+	"context"
+
+	"demo/api/product_rule/v1"
+)
+
+type IProductRuleV1 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)
+	Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, err error)
+}

+ 45 - 0
api/product_rule/v1/product_rule.go

@@ -0,0 +1,45 @@
+package v1
+
+import (
+	"demo/internal/model/entity"
+	"github.com/gogf/gf/v2/frame/g"
+)
+
+type CreateReq struct {
+	g.Meta        `path:"/product_rule" method:"post" tags:"product_rule" summary:"Create product_rule"`
+	ActiviteId    *int `v:"required" dc:"活动id"`
+	ProductInfoId *int `v:"required" dc:"活动奖励对应的剑鱼产品id product_info的id"`
+	PrizeId       *int `v:"required" dc:"活动奖品信息表lottery_prize_info的id"`
+	State         *int `v:"required" dc:"是否可用;默认0:可用;1:不可用"`
+	Cycle         *int `v:"required" dc:"可兑换周期(单位天): 90"`
+}
+type CreateRes struct {
+}
+
+type UpdateReq struct {
+	g.Meta        `path:"/product_rule/{id}" method:"put" tags:"Activity" summary:"Update activity"`
+	Id            *int `v:"required" dc:"赠送规则id"`
+	ActiviteId    *int ` dc:"活动id"`
+	ProductInfoId *int ` dc:"活动奖励对应的剑鱼产品id product_info的id"`
+	PrizeId       *int ` dc:"活动奖品信息表lottery_prize_info的id"`
+	State         *int ` dc:"是否可用;默认0:可用;1:不可用"`
+	Cycle         *int ` dc:"可兑换周期(单位天): 90"`
+}
+type UpdateRes struct{}
+type GetListReq struct {
+	g.Meta     `path:"/product_rule" method:"get" tags:"product_rule" summary:"Get product_rule"`
+	ActiviteId *int ` dc:"活动id"`
+	Offset     int  `d:"0" dc:"分页开始条数"`
+	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"`
+}
+
+type DelReq struct {
+	g.Meta `path:"/product_rule/{id}" method:"delete" tags:"product_rule" summary:"Update product_rule"`
+	Id     *int64 ` v:"required" dc:"product_rule id"`
+}
+type DelRes struct {
+}

+ 13 - 1
go.mod

@@ -3,6 +3,7 @@ module demo
 go 1.18
 go 1.18
 
 
 require (
 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/contrib/drivers/mysql/v2 v2.8.3
 	github.com/gogf/gf/v2 v2.8.3
 	github.com/gogf/gf/v2 v2.8.3
 )
 )
@@ -16,20 +17,31 @@ require (
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-logr/logr v1.4.2 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
 	github.com/go-sql-driver/mysql v1.7.1 // indirect
 	github.com/go-sql-driver/mysql v1.7.1 // indirect
+	github.com/go-stack/stack v1.8.0 // indirect
+	github.com/golang/snappy v0.0.4 // indirect
 	github.com/gorilla/websocket v1.5.3 // indirect
 	github.com/gorilla/websocket v1.5.3 // indirect
 	github.com/grokify/html-strip-tags-go v0.1.0 // indirect
 	github.com/grokify/html-strip-tags-go v0.1.0 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
 	github.com/magiconair/properties v1.8.9 // indirect
 	github.com/magiconair/properties v1.8.9 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-colorable v0.1.13 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-runewidth v0.0.16 // indirect
 	github.com/mattn/go-runewidth v0.0.16 // indirect
 	github.com/olekukonko/tablewriter v0.0.5 // indirect
 	github.com/olekukonko/tablewriter v0.0.5 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
 	github.com/rivo/uniseg v0.4.7 // indirect
 	github.com/rivo/uniseg v0.4.7 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.0.2 // indirect
+	github.com/xdg-go/stringprep v1.0.2 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	go.mongodb.org/mongo-driver v1.9.1 // indirect
 	go.opentelemetry.io/otel v1.24.0 // indirect
 	go.opentelemetry.io/otel v1.24.0 // indirect
 	go.opentelemetry.io/otel/metric v1.24.0 // indirect
 	go.opentelemetry.io/otel/metric v1.24.0 // indirect
 	go.opentelemetry.io/otel/sdk v1.24.0 // indirect
 	go.opentelemetry.io/otel/sdk v1.24.0 // indirect
 	go.opentelemetry.io/otel/trace v1.24.0 // indirect
 	go.opentelemetry.io/otel/trace v1.24.0 // indirect
+	golang.org/x/crypto v0.30.0 // indirect
 	golang.org/x/net v0.32.0 // indirect
 	golang.org/x/net v0.32.0 // indirect
+	golang.org/x/sync v0.11.0 // indirect
 	golang.org/x/sys v0.28.0 // indirect
 	golang.org/x/sys v0.28.0 // indirect
-	golang.org/x/text v0.21.0 // indirect
+	golang.org/x/text v0.22.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 )
 )

+ 58 - 3
go.sum

@@ -1,8 +1,12 @@
+app.yhyue.com/moapp/jybase v0.0.0-20250228070014-019656d96e4c h1:oEl/0tbFg1nR5FWATXqpw1ks49Q6FHF5W2kM/OMauvQ=
+app.yhyue.com/moapp/jybase v0.0.0-20250228070014-019656d96e4c/go.mod h1:/HT/UZ4dKuUKAQqqKrzBBfIZ4vD56DPV4u2QyfH+kbU=
 github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
 github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
 github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
 github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
 github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
 github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
 github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
 github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
 github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
 github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
 github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
@@ -16,15 +20,28 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
 github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
 github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
+github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.3 h1:RtoBg5HWACFrgIrFkpzH94kxSd5EWefNAq5k6olNY6c=
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.3 h1:RtoBg5HWACFrgIrFkpzH94kxSd5EWefNAq5k6olNY6c=
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.3/go.mod h1:elZjckHRCejwml5Kdx2zfhOUDiAV3r5i4BgXcKAeH00=
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.8.3/go.mod h1:elZjckHRCejwml5Kdx2zfhOUDiAV3r5i4BgXcKAeH00=
 github.com/gogf/gf/v2 v2.8.3 h1:h9Px3lqJnnH6It0AqHRz4/1hx0JmvaSf1IvUir5x1rA=
 github.com/gogf/gf/v2 v2.8.3 h1:h9Px3lqJnnH6It0AqHRz4/1hx0JmvaSf1IvUir5x1rA=
 github.com/gogf/gf/v2 v2.8.3/go.mod h1:n++xPYGUUMadw6IygLEgGZqc6y6DRLrJKg5kqCrPLWY=
 github.com/gogf/gf/v2 v2.8.3/go.mod h1:n++xPYGUUMadw6IygLEgGZqc6y6DRLrJKg5kqCrPLWY=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
+github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
 github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
 github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
 github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4=
 github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4=
 github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc=
 github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
 github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM=
 github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
 github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
@@ -35,13 +52,31 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
 github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
 github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
 github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
 github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
 github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
 github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+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/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
+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=
+github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
+github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
+github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
+github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+go.mongodb.org/mongo-driver v1.9.1 h1:m078y9v7sBItkt1aaoe2YlvWEXcD263e1a4E1fBrJ1c=
+go.mongodb.org/mongo-driver v1.9.1/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY=
 go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
 go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
 go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
 go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
 go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
 go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
@@ -50,15 +85,35 @@ go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucg
 go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
 go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg=
 go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
 go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
 go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
 go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
+golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY=
+golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
 golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
 golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
 golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
+golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
 golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
 golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
-golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
+golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+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 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/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 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 3 - 0
hack/config.yaml

@@ -11,6 +11,9 @@ gfcli:
         descriptionTag: true
         descriptionTag: true
         tables: "admin_user_group_relate,admin_request,admin_user_relate,admin_request_relate,admin_user,admin_token"
         tables: "admin_user_group_relate,admin_request,admin_user_relate,admin_request_relate,admin_user,admin_token"
         group: cadmin
         group: cadmin
+    enums:
+      src: "api"
+      path: "internal/boot/boot_enums.go"
   docker:
   docker:
     build: "-a amd64 -s linux -p temp -ew"
     build: "-a amd64 -s linux -p temp -ew"
     tagPrefixes:
     tagPrefixes:

+ 13 - 0
internal/boot/boot_enums.go

@@ -0,0 +1,13 @@
+// ================================================================================
+// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
+// ================================================================================
+
+package boot
+
+import (
+	"github.com/gogf/gf/v2/util/gtag"
+)
+
+func init() {
+	gtag.SetGlobalEnums(`{}`)
+}

+ 2 - 0
internal/cmd/cmd.go

@@ -3,6 +3,7 @@ package cmd
 import (
 import (
 	"context"
 	"context"
 	"demo/internal/controller/activity"
 	"demo/internal/controller/activity"
+	"demo/internal/controller/lottery_prize_info"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
 	"github.com/gogf/gf/v2/net/ghttp"
 	"github.com/gogf/gf/v2/os/gcmd"
 	"github.com/gogf/gf/v2/os/gcmd"
@@ -23,6 +24,7 @@ var (
 				group.Bind(
 				group.Bind(
 					hello.NewV1(),
 					hello.NewV1(),
 					activity.NewV1(),
 					activity.NewV1(),
+					lottery_prize_info.NewV1(),
 				)
 				)
 			})
 			})
 			//s.SetSwaggerUITemplate(MySwaggerUITemplate)
 			//s.SetSwaggerUITemplate(MySwaggerUITemplate)

+ 21 - 14
internal/consts/consts.go

@@ -1,19 +1,26 @@
 package consts
 package consts
 
 
+type EquityState int
+
 const (
 const (
-	ActivityCostDefault  = 100   //抽奖花费:1、默X个剑鱼币兑换1次抽奖机会
-	ActivityCostOrder    = -1    //抽奖花费:2、订单抽奖: 抽奖次数动态根据下单次数判断',
-	ActivityStateValid   = 0     //'活动状态默认0:有效
-	ActivityStateInvalid = 1     //1:已取消',
-	ActivityMoldBuy      = 0     //活动类型 0:购买奖励;
-	ActivityMoldCost     = 1     //活动类型1:订单抽奖',
-	ActivityMoldOrder    = 2     //活动类型2:订单抽奖',
-	Activityorder_typeBM = "m_1" // 订单类型: m_1-大会员购买;
-	Activityorder_typeBS = "v_1" // 订单类型: v_1-购买超级订阅
-	Activityorder_typeRS = "v_2" // 订单类型: v_2-续费超级订阅
-	Activityorder_typeUS = "v_3" // 订单类型: v_3-升级超级订阅
-	EquityStateValid     = 0     // 兑换码状态:有效
-	EquityStateInvalid   = -1    // 兑换码状态:失效
-	EquityStateUsed      = 1     // 兑换码状态:已使用
+	ActivityCostDefault              = 100   //抽奖花费:1、默X个剑鱼币兑换1次抽奖机会
+	ActivityCostOrder                = -1    //抽奖花费:2、订单抽奖: 抽奖次数动态根据下单次数判断',
+	ActivityMoldBuy                  = 0     //活动类型 0:购买奖励
+	ActivityMoldCost                 = 1     //活动类型1:订单抽奖',
+	ActivityMoldOrder                = 2     //活动类型2:订单抽奖',
+	Activityorder_typeBM             = "m_1" // 订单类型: m_1-大会员购买;
+	Activityorder_typeBS             = "v_1" // 订单类型: v_1-购买超级订阅
+	Activityorder_typeRS             = "v_2" // 订单类型: v_2-续费超级订阅
+	Activityorder_typeUS             = "v_3" // 订单类型: v_3-升级超级订阅
+	EquityStateValid     EquityState = 0     // 兑换码状态:有效
+	EquityStateInvalid   EquityState = -1    // 兑换码状态:失效
+	EquityStateUsed      EquityState = 1     // 兑换码状态:已使用
+
+)
 
 
+type ActivityState int
+
+const (
+	ActivityStateValid   ActivityState = 0
+	ActivityStateInvalid ActivityState = 1
 )
 )

+ 4 - 2
internal/controller/activity/activity_v1_create.go

@@ -1,12 +1,12 @@
 package activity
 package activity
 
 
 import (
 import (
+	"app.yhyue.com/moapp/jybase/encrypt"
 	"context"
 	"context"
+	"demo/api/activity/v1"
 	"demo/internal/dao"
 	"demo/internal/dao"
 	"demo/internal/model/do"
 	"demo/internal/model/do"
 	"github.com/gogf/gf/v2/os/gtime"
 	"github.com/gogf/gf/v2/os/gtime"
-
-	"demo/api/activity/v1"
 )
 )
 
 
 func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
 func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
@@ -28,6 +28,8 @@ func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.C
 		Mold:             req.Mold,
 		Mold:             req.Mold,
 		CreateTime:       gtime.Now(),
 		CreateTime:       gtime.Now(),
 		OrderType:        req.OrderType,
 		OrderType:        req.OrderType,
+		BgPic:            req.BgPic,
+		EncryptId:        encrypt.SE.EncodeString(req.Id),
 	}).Insert()
 	}).Insert()
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err

+ 12 - 0
internal/controller/lottery_prize_info/lottery_prize_info.go

@@ -3,3 +3,15 @@
 // =================================================================================
 // =================================================================================
 
 
 package lottery_prize_info
 package lottery_prize_info
+
+import (
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/os/gctx"
+)
+
+var JyPrizeMap map[string]interface{} // 剑鱼奖品配置项
+
+func init() {
+	ctx := gctx.New()
+	JyPrizeMap = g.Cfg().MustGet(ctx, "jy_prize").Map()
+}

+ 5 - 6
internal/controller/lottery_prize_info/lottery_prize_info_v1_create.go

@@ -4,23 +4,22 @@ import (
 	"context"
 	"context"
 	"demo/internal/dao"
 	"demo/internal/dao"
 	"demo/internal/model/do"
 	"demo/internal/model/do"
+	"fmt"
 	"github.com/gogf/gf/v2/os/gtime"
 	"github.com/gogf/gf/v2/os/gtime"
 
 
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
-
 	"demo/api/lottery_prize_info/v1"
 	"demo/api/lottery_prize_info/v1"
 )
 )
 
 
 func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
 func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
 	saveData := []do.LotteryPrizeInfo{}
 	saveData := []do.LotteryPrizeInfo{}
 	for i := 0; i < len(req.LpiList); i++ {
 	for i := 0; i < len(req.LpiList); i++ {
+		jyPrize := JyPrizeMap[fmt.Sprint(req.LpiList[i].PbId)]
 		saveData = append(saveData, do.LotteryPrizeInfo{
 		saveData = append(saveData, do.LotteryPrizeInfo{
 			ActiveId:       req.ActiveId,
 			ActiveId:       req.ActiveId,
 			State:          req.LpiList[i].State,
 			State:          req.LpiList[i].State,
 			Mold:           req.LpiList[i].Mold,
 			Mold:           req.LpiList[i].Mold,
 			PbId:           req.LpiList[i].PbId,
 			PbId:           req.LpiList[i].PbId,
-			JyPrize:        req.LpiList[i].Mold,
+			JyPrize:        jyPrize,
 			Frequency:      req.LpiList[i].Frequency,
 			Frequency:      req.LpiList[i].Frequency,
 			Probability:    req.LpiList[i].Probability,
 			Probability:    req.LpiList[i].Probability,
 			Inventory:      req.LpiList[i].Total,
 			Inventory:      req.LpiList[i].Total,
@@ -32,6 +31,6 @@ func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.C
 			CreateTime:     gtime.Now(),
 			CreateTime:     gtime.Now(),
 		})
 		})
 	}
 	}
-	_, err = dao.LotteryPrizeInfo.Ctx(ctx).Data().Insert()
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	_, err = dao.LotteryPrizeInfo.Ctx(ctx).Data(saveData).Insert()
+	return nil, err
 }
 }

+ 3 - 5
internal/controller/lottery_prize_info/lottery_prize_info_v1_del.go

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

+ 11 - 4
internal/controller/lottery_prize_info/lottery_prize_info_v1_get_list.go

@@ -2,13 +2,20 @@ package lottery_prize_info
 
 
 import (
 import (
 	"context"
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
+	"demo/internal/dao"
+	"demo/internal/model/do"
 
 
 	"demo/api/lottery_prize_info/v1"
 	"demo/api/lottery_prize_info/v1"
 )
 )
 
 
 func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) {
 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.LotteryPrizeInfo.Ctx(ctx).Where(do.LotteryPrizeInfo{
+		ActiveId: req.ActiveId,
+	}).OmitEmpty().Limit(req.Offset, req.Limit).ScanAndCount(&res.List, &res.Total, false)
+	if err != nil {
+		return nil, err
+	}
+	return res, err
 }
 }

+ 22 - 4
internal/controller/lottery_prize_info/lottery_prize_info_v1_update.go

@@ -2,13 +2,31 @@ package lottery_prize_info
 
 
 import (
 import (
 	"context"
 	"context"
-
-	"github.com/gogf/gf/v2/errors/gcode"
-	"github.com/gogf/gf/v2/errors/gerror"
+	"demo/internal/dao"
+	"demo/internal/model/do"
+	"fmt"
+	"github.com/gogf/gf/v2/os/gtime"
 
 
 	"demo/api/lottery_prize_info/v1"
 	"demo/api/lottery_prize_info/v1"
 )
 )
 
 
 func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
 func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
-	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+	saveData := do.LotteryPrizeInfo{
+		Id:             req.Id,
+		State:          req.State,
+		Mold:           req.Mold,
+		PbId:           req.PbId,
+		JyPrize:        JyPrizeMap[fmt.Sprint(req.PbId)],
+		Frequency:      req.Frequency,
+		Probability:    req.Probability,
+		Inventory:      req.Total,
+		Total:          req.Total,
+		AlarmSwitch:    req.AlarmSwitch,
+		AlarmThreshold: req.AlarmThreshold,
+		Target:         req.Target,
+		DailyNum:       req.DailyNum,
+		CreateTime:     gtime.Now(),
+	}
+	_, err = dao.LotteryPrizeInfo.Ctx(ctx).Data(saveData).OmitEmpty().Save()
+	return nil, err
 }
 }

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

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

+ 15 - 0
internal/controller/prize_base_info/prize_base_info_new.go

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

+ 22 - 0
internal/controller/prize_base_info/prize_base_info_v1_create.go

@@ -0,0 +1,22 @@
+package prize_base_info
+
+import (
+	"context"
+	"demo/internal/dao"
+	"demo/internal/model/do"
+
+	"demo/api/prize_base_info/v1"
+)
+
+func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
+	_, err = dao.PrizeBaseInfo.Ctx(ctx).Data(do.PrizeBaseInfo{
+		Name:      req.Name,
+		Attribute: req.Attribute,
+		DrawPic:   req.DrawPic,
+		WinPic:    req.WinPic,
+		Notes:     req.Notes,
+		Url:       req.Url,
+		Label:     req.Label,
+	}).Insert()
+	return nil, err
+}

+ 16 - 0
internal/controller/prize_base_info/prize_base_info_v1_del.go

@@ -0,0 +1,16 @@
+package prize_base_info
+
+import (
+	"context"
+	"demo/internal/dao"
+	"demo/internal/model/do"
+
+	"demo/api/prize_base_info/v1"
+)
+
+func (c *ControllerV1) Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, err error) {
+	_, err = dao.PrizeBaseInfo.Ctx(ctx).Data(do.PrizeBaseInfo{
+		Id: req.Id,
+	}).Delete()
+	return nil, err
+}

+ 17 - 0
internal/controller/prize_base_info/prize_base_info_v1_get_list.go

@@ -0,0 +1,17 @@
+package prize_base_info
+
+import (
+	"context"
+	"demo/api/prize_base_info/v1"
+	"demo/internal/dao"
+)
+
+func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) {
+	res = &v1.GetListRes{}
+
+	err = dao.PrizeBaseInfo.Ctx(ctx).Limit(req.Offset, req.Limit).ScanAndCount(&res.List, &res.Total, false)
+	if err != nil {
+		return nil, err
+	}
+	return res, err
+}

+ 22 - 0
internal/controller/prize_base_info/prize_base_info_v1_update.go

@@ -0,0 +1,22 @@
+package prize_base_info
+
+import (
+	"context"
+	"demo/internal/dao"
+	"demo/internal/model/do"
+
+	"demo/api/prize_base_info/v1"
+)
+
+func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
+	_, err = dao.PrizeBaseInfo.Ctx(ctx).Data(do.PrizeBaseInfo{
+		Name:      req.Name,
+		Attribute: req.Attribute,
+		DrawPic:   req.DrawPic,
+		WinPic:    req.WinPic,
+		Notes:     req.Notes,
+		Url:       req.Url,
+		Label:     req.Label,
+	}).OmitEmpty().Save()
+	return nil, err
+}

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

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

+ 15 - 0
internal/controller/product_info/product_info_new.go

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

+ 18 - 0
internal/controller/product_info/product_info_v1_get_list.go

@@ -0,0 +1,18 @@
+package product_info
+
+import (
+	"context"
+	"demo/internal/dao"
+
+	"demo/api/product_info/v1"
+)
+
+func (c *ControllerV1) GetList(ctx context.Context, req *v1.GetListReq) (res *v1.GetListRes, err error) {
+	res = &v1.GetListRes{}
+
+	err = dao.ProductInfo.Ctx(ctx).Where("state=0").ScanAndCount(&res.List, &res.Total, false)
+	if err != nil {
+		return nil, err
+	}
+	return res, err
+}

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

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

+ 15 - 0
internal/controller/product_rule/product_rule_new.go

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

+ 14 - 0
internal/controller/product_rule/product_rule_v1_create.go

@@ -0,0 +1,14 @@
+package product_rule
+
+import (
+	"context"
+
+	"github.com/gogf/gf/v2/errors/gcode"
+	"github.com/gogf/gf/v2/errors/gerror"
+
+	"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)
+}

+ 14 - 0
internal/controller/product_rule/product_rule_v1_del.go

@@ -0,0 +1,14 @@
+package product_rule
+
+import (
+	"context"
+
+	"github.com/gogf/gf/v2/errors/gcode"
+	"github.com/gogf/gf/v2/errors/gerror"
+
+	"demo/api/product_rule/v1"
+)
+
+func (c *ControllerV1) Del(ctx context.Context, req *v1.DelReq) (res *v1.DelRes, err error) {
+	return nil, gerror.NewCode(gcode.CodeNotImplemented)
+}

+ 14 - 0
internal/controller/product_rule/product_rule_v1_get_list.go

@@ -0,0 +1,14 @@
+package product_rule
+
+import (
+	"context"
+
+	"github.com/gogf/gf/v2/errors/gcode"
+	"github.com/gogf/gf/v2/errors/gerror"
+
+	"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)
+}

+ 14 - 0
internal/controller/product_rule/product_rule_v1_update.go

@@ -0,0 +1,14 @@
+package product_rule
+
+import (
+	"context"
+
+	"github.com/gogf/gf/v2/errors/gcode"
+	"github.com/gogf/gf/v2/errors/gerror"
+
+	"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)
+}

+ 4 - 0
internal/dao/internal/activity_info.go

@@ -37,6 +37,8 @@ type ActivityInfoColumns struct {
 	Mold             string // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	Mold             string // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	CreateTime       string // 创建时间
 	CreateTime       string // 创建时间
 	OrderType        string // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
 	OrderType        string // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
+	BgPic            string // 背景图片配置
+	EncryptId        string // 加密后的id,数据统计那边用
 }
 }
 
 
 // activityInfoColumns holds the columns for the table activity_info.
 // activityInfoColumns holds the columns for the table activity_info.
@@ -58,6 +60,8 @@ var activityInfoColumns = ActivityInfoColumns{
 	Mold:             "mold",
 	Mold:             "mold",
 	CreateTime:       "create_time",
 	CreateTime:       "create_time",
 	OrderType:        "order_type",
 	OrderType:        "order_type",
+	BgPic:            "bg_pic",
+	EncryptId:        "encrypt_id",
 }
 }
 
 
 // NewActivityInfoDao creates and returns a new DAO object for table data access.
 // NewActivityInfoDao creates and returns a new DAO object for table data access.

+ 2 - 0
internal/model/do/activity_info.go

@@ -29,4 +29,6 @@ type ActivityInfo struct {
 	Mold             interface{} // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	Mold             interface{} // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	CreateTime       *gtime.Time // 创建时间
 	CreateTime       *gtime.Time // 创建时间
 	OrderType        interface{} // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
 	OrderType        interface{} // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
+	BgPic            interface{} // 背景图片配置
+	EncryptId        interface{} // 加密后的id,数据统计那边用
 }
 }

+ 2 - 0
internal/model/entity/activity_info.go

@@ -27,4 +27,6 @@ type ActivityInfo struct {
 	Mold             int         `json:"mold"             orm:"mold"               description:"活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖"`                                                                                                                                                                                                                                                                                                      // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	Mold             int         `json:"mold"             orm:"mold"               description:"活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖"`                                                                                                                                                                                                                                                                                                      // 活动类型 0:购买奖励;1:剑鱼币抽奖;2:订单抽奖
 	CreateTime       *gtime.Time `json:"createTime"       orm:"create_time"        description:"创建时间"`                                                                                                                                                                                                                                                                                                                            // 创建时间
 	CreateTime       *gtime.Time `json:"createTime"       orm:"create_time"        description:"创建时间"`                                                                                                                                                                                                                                                                                                                            // 创建时间
 	OrderType        string      `json:"orderType"        orm:"order_type"         description:"该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割"`                                                                                                                                                                                                                                                     // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
 	OrderType        string      `json:"orderType"        orm:"order_type"         description:"该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割"`                                                                                                                                                                                                                                                     // 该字段仅当mold值为2时生效;m_1-大会员购买;  v_1-购买超级订阅;v_2-续费超级订阅;v_3-升级超级订阅  支持多个时使用英文逗号分割
+	BgPic            string      `json:"bgPic"            orm:"bg_pic"             description:"背景图片配置"`                                                                                                                                                                                                                                                                                                                          // 背景图片配置
+	EncryptId        string      `json:"encryptId"        orm:"encrypt_id"         description:"加密后的id,数据统计那边用"`                                                                                                                                                                                                                                                                                                                  // 加密后的id,数据统计那边用
 }
 }

+ 1 - 0
main.go

@@ -1,6 +1,7 @@
 package main
 package main
 
 
 import (
 import (
+	_ "demo/internal/boot"
 	_ "demo/internal/packed"
 	_ "demo/internal/packed"
 	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
 	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
 
 

+ 11 - 1
manifest/config/config.yaml

@@ -11,6 +11,10 @@ logger:
 
 
 # https://goframe.org/docs/core/gdb-config-file
 # https://goframe.org/docs/core/gdb-config-file
 database:
 database:
+  logger:
+    - path: "./log/sql"
+      level: "all"
+      stdout: true
   default:
   default:
     link: "mysql:jianyu:Topnet123@tcp(172.20.45.129:4000)/jyactivities"
     link: "mysql:jianyu:Topnet123@tcp(172.20.45.129:4000)/jyactivities"
     dryRun: false
     dryRun: false
@@ -18,4 +22,10 @@ database:
   cadmin:
   cadmin:
     link: "mysql:jianyu:Topnet123@tcp(172.20.45.129:4000)/cadmin"
     link: "mysql:jianyu:Topnet123@tcp(172.20.45.129:4000)/cadmin"
     debug: true
     debug: true
-
+jy_prize:
+  14: "3-7#1#0" #超级订阅周卡
+  15: "2-1#1#3800" #超级订阅月卡
+  16: "4-1#1#9900" #超级订阅季卡
+  #            17: "" #超级订阅年卡
+  18: "120" #剑鱼币
+  #剑鱼奖品对应配置

+ 44 - 5
test.http

@@ -4,7 +4,7 @@ Content-Type: application/json
 
 
 {
 {
   "id": 15,
   "id": 15,
-  "name": "testName",
+  "name": "devName",
   "StartTime": "2025-10-11 00:00:00",
   "StartTime": "2025-10-11 00:00:00",
   "EndTime": "2025-10-12 00:00:00",
   "EndTime": "2025-10-12 00:00:00",
   "LotteryStartTime": "00:00:00",
   "LotteryStartTime": "00:00:00",
@@ -13,11 +13,43 @@ Content-Type: application/json
   "DailyNum": 0,
   "DailyNum": 0,
   "DeviceNum": 0,
   "DeviceNum": 0,
   "IpNum": 0,
   "IpNum": 0,
-  "Pic": "string",
-  "Rule": "string",
-  "ShareCopy": "{  \"PC\": {    \"title\": \"\",    \"subtitle\": \"\"}} ",
+  "Pic": {
+    "pc": "https://www.jianyu360.cn/shareFile/file/2024/04/29/202404291729480041o49DOzu.png",
+    "app": "https://www.jianyu360.cn/shareFile/file/2024/04/29/20240429173053004I8CZyhA3.png"
+  },
+  "Rule": [
+    {
+      "text": "this is a rule "
+    }
+  ],
+  "ShareCopy": {
+    "PC": {
+      "title": "test pc title",
+      "subtitle": "test pc subtitle",
+      "pic": "https://jybx3-webtest.jydev.jianyu360.com/images/ddshare.png",
+      "href": "/swordfish/frontPage/activity/free/202402?id=Qw==&share=1&m=5"
+    },
+    "APP": {
+      "title": "test app title",
+      "subtitle": "test app subtitle",
+      "pic": "https://jybx3-webtest.jydev.jianyu360.com/images/ddshare.png",
+      "href": "/jyapp/frontPage/activity/free/202402?id=Qw==&share=1&m=5"
+    },
+    "H5": {
+      "title": "test h5 title",
+      "subtitle": "test h5 subtitle",
+      "pic": "https://jybx3-webtest.jydev.jianyu360.com/images/ddshare.png",
+      "href": "/jyapp/frontPage/activity/free/202402?id=Qw==&share=1&m=5"
+    },
+    "WX": {
+      "title": "test wx title",
+      "subtitle": "test wx subtitle",
+      "pic": "https://jybx3-webtest.jydev.jianyu360.com/images/ddshare.png",
+      "href": "/weixin/frontPage/activity/free/202402?id=Qw==&share=1&m=5"
+    }
+  },
   "State": 0,
   "State": 0,
-  "Mold": 0,
+  "Mold": 1,
   "OrderType": ""
   "OrderType": ""
 }
 }
 ###  活动列表
 ###  活动列表
@@ -44,6 +76,13 @@ Content-Type: application/json
 
 
 
 
 ### 设置活动奖品
 ### 设置活动奖品
+POST http://127.0.0.1:8000/admin/activity?_token=f5d8d788f5bffba8fa544aa711b147e4
+Content-Type: application/json
+
+{
+  "ActiveId": 15,
+  "LpiList":
+}
 
 
 ### 修改奖品
 ### 修改奖品