Merge remote-tracking branch 'origin/master'

# Conflicts:
#	internal/model/userTaskReward.go
This commit is contained in:
chy
2025-06-26 21:02:26 +08:00
14 changed files with 183 additions and 65 deletions

View File

@ -669,3 +669,55 @@ func (s *sReward) CallBack(ctx context.Context, in *model.RewardCallbackIn) (out
return &res, err
}
func (s *sReward) GetUserClaimList(ctx context.Context, in *model.GetUserClaimListIn) (out *model.GetUserClaimListOut, err error) {
// Input validation
if in == nil || in.UserId == 0 || in.TaskId == "" {
return nil, ecode.Params.Sub("用户任务记录不存在")
}
// Initialize result slice
rewards := make([]model.Reward, 0)
var totalCount int
// Query user task record
userTask, err := dao.UserTasks.Ctx(ctx).
Where(do.UserTasks{UserId: in.UserId, TaskId: in.TaskId}).
Fields(dao.UserTasks.Columns().Id).
One()
if err != nil {
return nil, ecode.Fail.Sub("查询用户任务记录异常")
}
if userTask == nil {
return nil, ecode.Params.Sub("用户任务记录不存在")
}
// Build base query for rewards
query := dao.UserTaskRewards.Ctx(ctx).
LeftJoin(dao.Rewards.Table(), fmt.Sprintf("%s.%s = %s.%s",
dao.Rewards.Table(),
dao.Rewards.Columns().Id,
dao.UserTaskRewards.Table(),
dao.UserTaskRewards.Columns().RewardId)).
Where(fmt.Sprintf("%s.%s = ?",
dao.UserTaskRewards.Table(),
dao.UserTaskRewards.Columns().UserTaskId),
userTask["id"].Int64()).
Where(dao.UserTaskRewards.Columns().DeletedAt, nil).
Where(dao.Rewards.Columns().DeletedAt, nil)
// Count rewards
if totalCount, err = query.Count(); err != nil {
return nil, ecode.Fail.Sub("任务奖励获取失败")
}
// Scan rewards
if err = query.Fields(fmt.Sprintf("%s.*", dao.Rewards.Table())).Scan(&rewards); err != nil {
return nil, ecode.Fail.Sub("任务奖励获取失败")
}
return &model.GetUserClaimListOut{
List: rewards,
Total: totalCount,
}, nil
}