From 4c367bd9ca519998e0835a5d30991d78c9cdef8b Mon Sep 17 00:00:00 2001 From: denghui <1016848185@qq.com> Date: Tue, 24 Jun 2025 21:26:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A5=96=E5=8A=B1=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/logic/reward/reward.go | 40 +++++++++++++++++++++++++++++++-- internal/model/reward.go | 13 +++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/internal/logic/reward/reward.go b/internal/logic/reward/reward.go index ecb04dd..665943a 100644 --- a/internal/logic/reward/reward.go +++ b/internal/logic/reward/reward.go @@ -306,7 +306,7 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model. } // - array, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Source: 1}).Fields(rewardTypeCols.Id).Array() + array, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Source: 2, StoreId: in.StoreId}).Fields(rewardTypeCols.Id).Array() if err != nil { return nil, ecode.Fail.Sub("获取奖励类型列表失败") } @@ -317,7 +317,15 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model. return nil, ecode.Params.Sub("无效的角色") } - orm := dao.Rewards.Ctx(ctx).WhereIn(dao.Rewards.Columns().RewardTypeId, rewardTypeIds) + orm := dao.Rewards.Ctx(ctx).LeftJoin( + dao.RewardTypes.Table(), + fmt.Sprintf( + "%s.%s = %s.%s", + dao.Rewards.Table(), dao.Rewards.Columns().RewardTypeId, + dao.RewardTypes.Table(), dao.RewardTypes.Columns().Id, + ), + ).Fields(fmt.Sprintf("%s.*,%s.name as reward_type_name", dao.Rewards.Table(), dao.RewardTypes.Table())). + WhereIn(dao.Rewards.Columns().RewardTypeId, rewardTypeIds) // ==== 其他查询条件 ==== if in.Status != 0 { orm = orm.Where(fmt.Sprintf("%s.%s = ?", dao.Rewards.Table(), rewardCols.Status), in.Status) @@ -465,3 +473,31 @@ func (s *sReward) GetGoodsDetails(ctx context.Context, in *model.GetGoodsDetails Water: result.Water, }, nil } + +func (s *sReward) OperateTaskReward(ctx context.Context, in *model.OperateTaskRewardIn) (out *model.OperateTaskRewardOut, err error) { + // 如果是系统管理员给任务添加奖励,需要校验奖励的来源 + exist, err := dao.Tasks.Ctx(ctx).Where(do.Tasks{Id: in.TaskId}).Exist() + if err != nil { + return nil, ecode.Fail.Sub("任务不存在") + } + if !exist { + return nil, ecode.Params.Sub("任务不存在") + } + + exist, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.RewardId}).Exist() + if err != nil { + return nil, ecode.Fail.Sub("奖励不存在") + } + if !exist { + return nil, ecode.Params.Sub("奖励不存在") + } + + opiton := dao.TaskRewards.Ctx(ctx).Data(do.TaskRewards{TaskId: in.TaskId, RewardId: in.RewardId}) + if in.Type == 1 { + _, err := opiton.Insert() + return &model.OperateTaskRewardOut{Success: true}, err + } else { + _, err := opiton.Delete() + return &model.OperateTaskRewardOut{Success: true}, err + } +} diff --git a/internal/model/reward.go b/internal/model/reward.go index e050b18..a02ff87 100644 --- a/internal/model/reward.go +++ b/internal/model/reward.go @@ -10,6 +10,7 @@ type Reward struct { StoreId int64 `json:"storeId" orm:"store_id" description:"门店ID,系统奖励为NULL"` // 门店ID,系统奖励为NULL Name string `json:"name" orm:"name" description:"奖励名称"` // 奖励名称 RewardTypeId int64 `json:"rewardTypeId" orm:"reward_type_id" description:"奖励类型ID,关联 reward_types 表"` // 奖励类型ID,关联 reward_types 表 + RewardTypeName string `json:"rewardTypeName" orm:"reward_type_name" description:"奖励类型名称"` // 奖励类型名称 GameId int64 `json:"gameId" orm:"game_id" description:"游戏ID"` // 游戏ID ImageUrl string `json:"imageUrl" orm:"image_url" description:"奖励图片链接"` // 奖励图片链接 QqGoodsId string `json:"qqGoodsId" orm:"qq_goods_id" description:"QQ网吧物品ID"` // QQ网吧物品ID @@ -193,3 +194,15 @@ type GetGoodsDetailsIn struct { type GetGoodsDetailsOut struct { Goods Water `json:"goods" dc:"物品详情"` } + +type OperateTaskRewardIn struct { + OperatorId int64 + OperatorRole string + TaskId int64 + RewardId int64 + Type int // 1: 任务添加奖励 2: 任务删除奖励 + StoreId int64 // 当前操作门店, 当操作为门店或者是商户时 +} +type OperateTaskRewardOut struct { + Success bool +}