From 09e9ebe8c3300bef14268154b74deaff9c516080 Mon Sep 17 00:00:00 2001 From: chy <2463300564@qq.com> Date: Mon, 30 Jun 2025 14:29:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=B0=E5=A2=9E=E5=A5=96?= =?UTF-8?q?=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/logic/reward/reward.go | 13 +++++++++---- internal/model/reward.go | 14 ++++++++++++++ internal/model/userTaskReward.go | 26 ++++++++++++++------------ internal/packed/packed.go | 2 +- utility/snowid/snowid.go | 5 +++++ 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/internal/logic/reward/reward.go b/internal/logic/reward/reward.go index 081d626..ed4310e 100644 --- a/internal/logic/reward/reward.go +++ b/internal/logic/reward/reward.go @@ -13,6 +13,7 @@ import ( "server/internal/service" "server/utility/ecode" "server/utility/gamelife" + "strconv" "time" ) @@ -76,6 +77,9 @@ func (s *sReward) Create(ctx context.Context, in *model.RewardCreateIn) (out *mo } } + // 券ID-根据时间戳生成 + id := "Q" + strconv.FormatInt(time.Now().Unix(), 10) + // 创建奖励 _, err = dao.Rewards.Ctx(ctx).Data(do.Rewards{ StoreId: in.StoreId, @@ -94,6 +98,8 @@ func (s *sReward) Create(ctx context.Context, in *model.RewardCreateIn) (out *mo GameId: in.GameId, UserDailyLimit: in.UserDailyLimit, UserTotalLimit: in.UserTotalLimit, + PrizeId: id, + Source: in.Source, }).OmitEmptyData().Insert() if err != nil { @@ -700,15 +706,14 @@ func (s *sReward) CallBack(ctx context.Context, in *model.RewardCallbackIn) (out func (s *sReward) GetUserClaimList(ctx context.Context, in *model.GetUserClaimListIn) (out *model.GetUserClaimListOut, err error) { // Initialize result slice - rewards := make([]model.Reward, 0) + rewards := make([]model.UserClaimReward, 0) var totalCount int var userTaskId int64 if in.UserTaskId == 0 { value, err := dao.UserTasks.Ctx(ctx). Where(do.UserTasks{UserId: in.UserId, TaskId: in.TaskId}). - Fields(dao.UserTasks.Columns().Id). - Value() + Fields(dao.UserTasks.Columns().Id).Value() if err != nil { return nil, ecode.Fail.Sub("查询用户任务失败") } @@ -744,7 +749,7 @@ func (s *sReward) GetUserClaimList(ctx context.Context, in *model.GetUserClaimLi } // Scan rewards - if err = query.Fields(fmt.Sprintf("%s.*", dao.Rewards.Table())).Scan(&rewards); err != nil { + if err = query.Fields(fmt.Sprintf("user_task_rewards.reward_id,reward_id, user_task_rewards.status reward_status,user_task_rewards.reward_name reward_name, rewards.*")).WithAll().Scan(&rewards); err != nil { return nil, ecode.Fail.Sub("任务奖励获取失败") } diff --git a/internal/model/reward.go b/internal/model/reward.go index bf39978..ca50d69 100644 --- a/internal/model/reward.go +++ b/internal/model/reward.go @@ -33,6 +33,20 @@ type Reward struct { UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间 DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"删除时间(软删除)"` // 删除时间(软删除) } +type SimpleReward struct { + g.Meta `orm:"table:rewards"` + Id int64 `json:"id" orm:"id" description:"奖励ID"` // 奖励ID + Name string `json:"name" orm:"name" description:"奖励名称"` // 奖励名称 + RewardTypeId int64 `json:"rewardTypeId" orm:"reward_type_id" description:"奖励类型ID,关联 reward_types 表"` // 奖励类型ID,关联 reward_types 表 + Source int `json:"source" orm:"source" description:"奖励来源,1=系统奖励(对接腾讯),2=门店追加"` // 奖励来源,1=系统奖励(对接腾讯),2=门店追加 + GameId int64 `json:"gameId" orm:"game_id" description:"游戏ID"` // 游戏ID + ImageUrl string `json:"imageUrl" orm:"image_url" description:"奖励图片链接"` // 奖励图片链接 + ExpireType int `json:"expireType" orm:"expire_type" description:"过期方式:1=时间段过期,2=领取后过期"` // 过期方式:1=时间段过期,2=领取后过期 + ValidFrom *gtime.Time `json:"validFrom" orm:"valid_from" description:"有效期开始时间(expire_type=1时)"` // 有效期开始时间(expire_type=1时) + ValidTo *gtime.Time `json:"validTo" orm:"valid_to" description:"有效期结束时间(expire_type=1时)"` // 有效期结束时间(expire_type=1时) + ExpireDays int `json:"expireDays" orm:"expire_days" description:"领取后多少天过期(expire_type=2时)"` // 领取后多少天过期(expire_type=2时) + +} // RewardCreateIn 创建奖励入参 type RewardCreateIn struct { diff --git a/internal/model/userTaskReward.go b/internal/model/userTaskReward.go index a07d14c..5e2da86 100644 --- a/internal/model/userTaskReward.go +++ b/internal/model/userTaskReward.go @@ -1,6 +1,9 @@ package model -import "github.com/gogf/gf/v2/os/gtime" +import ( + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/gtime" +) type GetUserClaimListIn struct { UserId int64 @@ -9,18 +12,9 @@ type GetUserClaimListIn struct { NetbarAccount string StoreId int64 } -type UserTaskReward struct { - RewardName string `json:"rewardName" orm:"reward_name"` // 奖励名称冗余字段 - Source int `json:"source" orm:"source"` // 奖励来源,1是系统奖励统一调用, 2是门店奖励 - RewardType int `json:"rewardType" orm:"reward_type"` // 奖励类型, 实现不同的领取操作 - Status int `json:"status" orm:"status"` // 状态:1=待用户完成任务,2=待领取,3=已领取, 待兑换,4=已过期,5=发放失败, 6=结束、 - ExpireType int `json:"expireType" orm:"expire_type"` // 过期方式:1=时间段过期,2=领取后过期 - ValidFrom *gtime.Time `json:"validFrom" orm:"valid_from" ` // 有效期开始时间(expire_type=1时) - ValidTo *gtime.Time `json:"validTo" orm:"valid_to"` // 有效期结束时间(expire_type=1时) - ExpireDays int `json:"expireDays" orm:"expire_days"` // 领取后多少天过期(expire_type=2时) -} + type GetUserClaimListOut struct { - List []Reward + List []UserClaimReward Total int } @@ -38,3 +32,11 @@ type UserTaskRewards struct { DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间 ExpiredAt *gtime.Time `json:"expiredAt" orm:"expired_at" description:"奖励过期时间"` // 奖励过期时间 } + +type UserClaimReward struct { + g.Meta `orm:"table:user_task_rewards"` + RewardId int64 `json:"rewardId" orm:"reward_id"` + Status int64 `json:"status" orm:"reward_status"` + RewardName string `json:"rewardName" orm:"reward_name"` + SimpleReward SimpleReward `json:"reward" orm:"with:id=reward_id"` +} diff --git a/internal/packed/packed.go b/internal/packed/packed.go index d483800..e61b667 100644 --- a/internal/packed/packed.go +++ b/internal/packed/packed.go @@ -4,7 +4,7 @@ import ( _ "github.com/gogf/gf/contrib/drivers/mysql/v2" _ "github.com/gogf/gf/contrib/nosql/redis/v2" _ "server/utility/gamelife" - _ "server/utility/mqtt/emqx" + //_ "server/utility/mqtt/emqx" _ "server/utility/myCasbin" _ "server/utility/oss/aliyun" _ "server/utility/rsa" diff --git a/utility/snowid/snowid.go b/utility/snowid/snowid.go index 0da03bc..254d4b6 100644 --- a/utility/snowid/snowid.go +++ b/utility/snowid/snowid.go @@ -55,3 +55,8 @@ func (c *snowClient) generateCodeWithPrefix(prefix string) (string, error) { func (c *snowClient) GenerateSerialNumber() (string, error) { return c.generateCodeWithPrefix("SN") } + +// GenerateCouponTemplateId 生成券模板 ID +func (c *snowClient) GenerateCouponTemplateId() (string, error) { + return c.generateCodeWithPrefix("Q") +}