实现用户领取任务接口、用户任务记录接口

This commit is contained in:
2025-06-26 20:56:41 +08:00
parent 895eca3289
commit ccaad45fed
17 changed files with 192 additions and 56 deletions

View File

@ -182,20 +182,16 @@ func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn
// 组装奖励数据
err := dao.TaskRewards.Ctx(ctx).
LeftJoin(dao.Rewards.Table(),
fmt.Sprintf("`%s`.`%s` = `%s`.`%s`",
fmt.Sprintf("`%s`.`%s` = `%s`.`%s` ",
dao.Rewards.Table(), dao.Rewards.Columns().Id,
dao.TaskRewards.Table(), dao.TaskRewards.Columns().RewardId)).
LeftJoin(dao.RewardTypes.Table(),
fmt.Sprintf("`%s`.`%s` = `%s`.`%s`",
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Id,
dao.Rewards.Table(), dao.Rewards.Columns().RewardTypeId)).
Fields(
fmt.Sprintf(
"%s.*, `%s`.`%s` AS %s",
dao.Rewards.Table(),
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Name, "reward_type_name",
dao.TaskRewards.Table(), dao.TaskRewards.Columns().RewardId,
),
).Where(dao.TaskRewards.Columns().TaskId, task.TaskID).Scan(&data.Rewards)
).Fields(
fmt.Sprintf(
"%s.*",
dao.Rewards.Table(),
),
).Where(dao.TaskRewards.Columns().TaskId, task.TaskID).Scan(&data.Rewards)
if err != nil {
return nil, err
}
@ -358,16 +354,16 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
return ecode.Fail.Sub("创建用户任务记录失败")
}
snowid.GetSnowClient()
// 查询该任务相关联的奖励, 创建对应奖励下发记录id
array, err := dao.TaskRewards.Ctx(ctx).Where(do.TaskRewards{TaskId: in.TaskId}).Fields(dao.TaskRewards.Columns().RewardId).Array()
array, err := dao.TaskRewards.Ctx(ctx).LeftJoin(dao.Rewards.Table(), "rewards.id = task_rewards.reward_id").Where(do.TaskRewards{TaskId: in.TaskId}).Fields(dao.TaskRewards.Columns().RewardId).Fields(dao.Rewards.Columns().Name).All()
if err != nil {
return ecode.Fail.Sub("获取任务关联奖励列表失败")
}
for _, v := range array {
_, err = dao.UserTaskRewards.Ctx(ctx).Data(do.UserTaskRewards{
UserTaskId: id,
RewardId: v.Int64(),
RewardId: v["reward_id"].Int64(),
RewardName: v["name"].String(),
Status: consts.RewardInitStatus,
InnerOrderId: fmt.Sprintf("reward%s", guid.S()),
}).Insert()
@ -385,14 +381,14 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
}
func (s *sTask) GetUserTaskRecordsList(ctx context.Context, in *model.UserTaskRecordsListIn) (out *model.UserTaskRecordsListOut, err error) {
list := make([]model.UserTask, 0)
list := make([]model.UserTask2, 0)
var total int
orm := dao.UserTasks.Ctx(ctx).Where(dao.UserTasks.Columns().Id, in.UserId)
orm := dao.UserTasks.Ctx(ctx).Where(dao.UserTasks.Columns().UserId, in.UserId)
if in.StoreId != 0 {
orm = orm.Where(dao.UserTasks.Columns().StoreId, in.StoreId)
}
err = orm.Page(in.Page, in.Size).ScanAndCount(&list, &total, false)
err = orm.Page(in.Page, in.Size).WithAll().ScanAndCount(&list, &total, false)
if err != nil {
return nil, ecode.Fail.Sub("获取用户任务列表失败")
}