diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserLiveRoomCheckInUserCountCommittedMQ.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserLiveRoomCheckInUserCountCommittedMQ.java new file mode 100644 index 0000000..14ef4b2 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserLiveRoomCheckInUserCountCommittedMQ.java @@ -0,0 +1,21 @@ +package com.qniao.dam.domian.aggregate.utc.event; + +import com.qniao.dam.domian.aggregate.tasktemplate.constant.SubTaskTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserLiveRoomCheckInUserCountCommittedMQ implements Serializable { + + @ApiModelProperty("用户标识") + private Long userId; + + @ApiModelProperty("子任务类型") + private SubTaskTypeEnum subTaskType; + + @ApiModelProperty("提交次数") + private Integer commitCount; + +} 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 b99a704..606f082 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 @@ -6,10 +6,12 @@ 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; import com.qniao.dam.domian.aggregate.utc.event.UserEffectiveLiveDurationCommittedMQ; +import com.qniao.dam.domian.aggregate.utc.event.UserLiveRoomCheckInUserCountCommittedMQ; import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqQueue; import com.qniao.dam.query.livematchmaker.LiveMatchmakerQueryService; @@ -26,7 +28,6 @@ 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; @@ -44,54 +45,75 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { @Resource private UserTaskCompleteAggregate userTaskCompleteAggregate; - @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.USER_SUB_TASK_COMMITTED), - exchange = @Exchange(value = MqExchange.USER_SUB_TASK_COMMITTED, + @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.EFFECTIVE_LIVE_DURATION_COMMITTED), + exchange = @Exchange(value = MqExchange.EFFECTIVE_LIVE_DURATION_COMMITTED, type = ExchangeTypes.FANOUT))) public void handle(UserEffectiveLiveDurationCommittedMQ mq) { try { synchronized (mq.getUserId().toString().intern()) { - LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(mq.getUserId()); - if (Objects.nonNull(liveMatchmaker)) { - TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); - TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); - //查询任务模板 放redis - TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, TaskTypeEnum.DAILY_TASK, stageCode); - if (Objects.nonNull(taskTemplate)) { - List subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); - for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { - if (subTaskTemplate.getSubTaskType().equals(mq.getSubTaskType())) { - //存在子任务 - Tuple tuple = taskTemplateQueryService.getTaskDate(TaskTypeEnum.DAILY_TASK); - UserTaskComplete userTaskComplete = userTaskCompleteQueryService.queryBy(mq.getUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1)); - if (Objects.isNull(userTaskComplete)) { - userTaskComplete = UserTaskComplete.init(mq.getUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1)); - UserSubTaskComplete userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); - userSubTaskComplete.commit(mq.getCommitCount(), subTaskTemplate.getRequiredCount()); + commitDailyTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); + } + } catch (Exception e) { + log.error("直播时长任务提交事件处理异常", e); + } + } + + @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.LIVE_ROOM_CHECK_IN_USER_COUNT_COMMITTED), + exchange = @Exchange(value = MqExchange.LIVE_ROOM_CHECK_IN_USER_COUNT_COMMITTED, + type = ExchangeTypes.FANOUT))) + public void handle(UserLiveRoomCheckInUserCountCommittedMQ mq) { + try { + synchronized (mq.getUserId().toString().intern()) { + commitDailyTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); + } + } catch (Exception e) { + log.error("直播间打卡提交事件处理异常", e); + } + } + + private void commitDailyTaskTaskComplete(Long userId, + SubTaskTypeEnum subTaskType, + Integer commitCount) { + LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(userId); + if (Objects.nonNull(liveMatchmaker)) { + TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); + TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); + //查询任务模板 放redis + TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, TaskTypeEnum.DAILY_TASK, stageCode); + if (Objects.nonNull(taskTemplate)) { + List subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); + for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { + if (subTaskTemplate.getSubTaskType().equals(subTaskType)) { + //存在子任务 + Tuple tuple = taskTemplateQueryService.getTaskDate(TaskTypeEnum.DAILY_TASK); + UserTaskComplete userTaskComplete = userTaskCompleteQueryService.queryBy(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1)); + if (Objects.isNull(userTaskComplete)) { + userTaskComplete = UserTaskComplete.init(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1)); + UserSubTaskComplete userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); + userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); + userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); + } else { + if (!userTaskComplete.getCompleteStatus()) { + UserSubTaskComplete userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId()); + if (Objects.isNull(userSubTaskComplete)) { + userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); + userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); } else { - if (!userTaskComplete.getCompleteStatus()) { - UserSubTaskComplete userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId()); - if (Objects.isNull(userSubTaskComplete)) { - userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); - userSubTaskComplete.commit(mq.getCommitCount(), subTaskTemplate.getRequiredCount()); - userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); - } else { - if (!userSubTaskComplete.getCompleteStatus()) { - userSubTaskComplete.commit(mq.getCommitCount(), subTaskTemplate.getRequiredCount()); - userTaskComplete.setUpdateSubList(Collections.singletonList(userSubTaskComplete)); - } - } + if (!userSubTaskComplete.getCompleteStatus()) { + userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); + userTaskComplete.setUpdateSubList(Collections.singletonList(userSubTaskComplete)); } } - userTaskCompleteAggregate.edit(userTaskComplete); - break; } } + userTaskCompleteAggregate.edit(userTaskComplete); + break; } } } - } catch (Exception e) { - log.error("直播时长任务提交事件处理异常", e); } } + + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java index 986051c..afc0f71 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java @@ -38,5 +38,7 @@ public interface MqExchange { String DATING_STORE_CUSTOMER_TASK_OPERATED = "fanout.DatingStoreCustomerTaskOperated"; - String USER_SUB_TASK_COMMITTED = "fanout.userSubTaskCommitted"; + String EFFECTIVE_LIVE_DURATION_COMMITTED = "fanout.effectiveLiveDurationCommittedMQ"; + + String LIVE_ROOM_CHECK_IN_USER_COUNT_COMMITTED = "fanout.liveRoomCheckInUserCountCommitted"; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java index ea1bc8d..686891a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java @@ -30,5 +30,8 @@ public interface MqQueue { String DATING_STORE_CUSTOMER_TASK_OPERATED = MqExchange.DATING_STORE_CUSTOMER_TASK_OPERATED + serviceName; - String USER_SUB_TASK_COMMITTED = MqExchange.USER_SUB_TASK_COMMITTED + serviceName; + String EFFECTIVE_LIVE_DURATION_COMMITTED = MqExchange.EFFECTIVE_LIVE_DURATION_COMMITTED + serviceName; + + String LIVE_ROOM_CHECK_IN_USER_COUNT_COMMITTED = MqExchange.LIVE_ROOM_CHECK_IN_USER_COUNT_COMMITTED + serviceName; + }