diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java index b3d7634..fbfb213 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java @@ -3,9 +3,9 @@ package com.qniao.dam.application.handler.utc; import cn.hutool.core.lang.Tuple; 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.UserTaskCompleteAggregate; 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.SubTaskTypeEnum; 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; @@ -26,6 +26,7 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -40,6 +41,8 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { private TaskTemplateQueryService taskTemplateQueryService; @Resource private UserTaskCompleteQueryService userTaskCompleteQueryService; + @Resource + private UserTaskCompleteAggregate userTaskCompleteAggregate; @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.USER_SUB_TASK_COMMITTED), exchange = @Exchange(value = MqExchange.USER_SUB_TASK_COMMITTED, @@ -67,8 +70,22 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { } else { if (!userTaskComplete.getCompleteStatus()) { UserSubTaskComplete userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId()); + if (Objects.isNull(userSubTaskComplete)) { + userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); + userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); + } else { + if (!userSubTaskComplete.getCompleteStatus()) { + userSubTaskComplete.setCompleteCount(userSubTaskComplete.getCompleteCount() + mq.getCommitCount()); + userSubTaskComplete.setCompleteStatus(userSubTaskComplete.getCompleteCount() >= subTaskTemplate.getRequiredCount()); + if (userSubTaskComplete.getCompleteStatus()) { + userSubTaskComplete.setCompleteTime(LocalDateTime.now()); + } + userTaskComplete.setUpdateSubList(Collections.singletonList(userSubTaskComplete)); + } + } } } + userTaskCompleteAggregate.edit(userTaskComplete); break; } } @@ -79,6 +96,4 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { log.error("直播时长任务提交事件处理异常", e); } } - - }