|
|
|
@ -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<SubTaskTemplate> 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<SubTaskTemplate> 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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |