实现用户领取任务接口、用户任务记录接口
This commit is contained in:
@ -587,3 +587,55 @@ func (s *sReward) CallBack(ctx context.Context, in *model.RewardCallbackIn) (out
|
||||
out.AppId = in.AppId
|
||||
return out, 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
|
||||
}
|
||||
|
||||
@ -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("获取用户任务列表失败")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user