|
|
|
@ -1,20 +1,23 @@ |
|
|
|
package com.qniao.dam.query.utc.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.lang.Tuple; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.qniao.dam.api.query.utc.user.request.UserGetUserTaskCompleteQueryParams; |
|
|
|
import com.qniao.dam.api.query.utc.user.response.UserGetUserSubTaskCompleteVo; |
|
|
|
import com.qniao.dam.api.query.utc.user.response.UserGetUserTaskCompleteVo; |
|
|
|
import com.qniao.dam.domain.aggregate.tasktemplate.entity.SubTaskTemplate; |
|
|
|
import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate; |
|
|
|
import com.qniao.dam.domain.aggregate.utc.entity.UserSubTaskComplete; |
|
|
|
import com.qniao.dam.domain.aggregate.utc.entity.UserTaskComplete; |
|
|
|
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskGroupEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskStageEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskTypeEnum; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.utc.UserSubTaskCompleteDao; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.utc.UserTaskCompleteDao; |
|
|
|
import com.qniao.dam.query.livematchmaker.LiveMatchmakerQueryService; |
|
|
|
import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService; |
|
|
|
import com.qniao.dam.query.udtp.UserDailyTaskProgressQueryService; |
|
|
|
import com.qniao.dam.query.utc.UserTaskCompleteQueryService; |
|
|
|
import com.qniao.dau.domain.aggregate.livematchmaker.entity.LiveMatchmaker; |
|
|
|
import com.qniao.framework.utils.TypeConvertUtils; |
|
|
|
@ -22,6 +25,8 @@ import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
|
|
|
|
@Service |
|
|
|
@ -36,7 +41,7 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe |
|
|
|
@Resource |
|
|
|
private LiveMatchmakerQueryService liveMatchmakerQueryService; |
|
|
|
@Resource |
|
|
|
private TaskTemplateDao taskTemplateDao; |
|
|
|
private UserDailyTaskProgressQueryService userDailyTaskProgressQueryService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public UserGetUserTaskCompleteVo getUserTaskCompleteVo(UserGetUserTaskCompleteQueryParams queryParams) { |
|
|
|
@ -44,22 +49,19 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe |
|
|
|
//任务群体处理 |
|
|
|
LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(queryParams.getQueryUserId()); |
|
|
|
if (Objects.nonNull(liveMatchmaker)) { |
|
|
|
TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); |
|
|
|
TaskTypeEnum taskType = TaskTypeEnum.get(queryParams.getTaskType()); |
|
|
|
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType,liveMatchmaker.getCreateTime()); |
|
|
|
UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), tuple.get(0), tuple.get(1)); |
|
|
|
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime()); |
|
|
|
TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); |
|
|
|
if (Objects.isNull(userTaskComplete)) { |
|
|
|
TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); |
|
|
|
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode); |
|
|
|
if (Objects.nonNull(taskTemplate)) { |
|
|
|
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode); |
|
|
|
if (Objects.nonNull(taskTemplate)) { |
|
|
|
UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1)); |
|
|
|
if (Objects.isNull(userTaskComplete)) { |
|
|
|
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); |
|
|
|
vo.setTaskTemplateId(taskTemplate.getId()); |
|
|
|
vo.setTaskStartDate(tuple.get(0)); |
|
|
|
vo.setTaskEndDate(tuple.get(1)); |
|
|
|
} |
|
|
|
} else { |
|
|
|
TaskTemplate taskTemplate = taskTemplateDao.selectById(userTaskComplete.getTaskTemplateId()); |
|
|
|
if (Objects.nonNull(taskTemplate)) { |
|
|
|
} else { |
|
|
|
vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); |
|
|
|
vo.setTaskTemplateId(taskTemplate.getId()); |
|
|
|
vo.setTaskStartDate(tuple.get(0)); |
|
|
|
@ -72,17 +74,30 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe |
|
|
|
} |
|
|
|
if (Objects.nonNull(vo)) { |
|
|
|
//补充子任务进度 |
|
|
|
vo.setSubList(userTaskCompleteDao.listSubVo(vo.getTaskTemplateId(), vo.getUserTaskCompleteId())); |
|
|
|
List<SubTaskTemplate> subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); |
|
|
|
if (CollUtil.isNotEmpty(subTaskTemplateList)) { |
|
|
|
List<UserGetUserSubTaskCompleteVo> subList = new ArrayList<>(); |
|
|
|
for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { |
|
|
|
UserGetUserSubTaskCompleteVo subTaskCompleteVo = TypeConvertUtils.convert(subTaskTemplate, UserGetUserSubTaskCompleteVo.class); |
|
|
|
int completeCount = userDailyTaskProgressQueryService.count(queryParams.getQueryUserId(), subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1)); |
|
|
|
subTaskCompleteVo.setCompleteCount(completeCount); |
|
|
|
subTaskCompleteVo.setCompleteStatus(completeCount >= subTaskTemplate.getRequiredCount()); |
|
|
|
subList.add(subTaskCompleteVo); |
|
|
|
} |
|
|
|
vo.setSubList(subList); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
public UserTaskComplete queryBy(Long userId, |
|
|
|
Long taskTemplateId, |
|
|
|
LocalDate taskStartDate, |
|
|
|
LocalDate taskEndDate) { |
|
|
|
return userTaskCompleteDao.selectOne(new LambdaQueryWrapper<UserTaskComplete>() |
|
|
|
.eq(UserTaskComplete::getUserId, userId) |
|
|
|
.eq(UserTaskComplete::getTaskTemplateId, taskTemplateId) |
|
|
|
.eq(UserTaskComplete::getTaskStartDate, taskStartDate) |
|
|
|
.eq(UserTaskComplete::getTaskEndDate, taskEndDate) |
|
|
|
.last("LIMIT 1")); |
|
|
|
|