Browse Source

直播红娘任务

master
张彭杰 2 months ago
parent
commit
9df3a6eacf
4 changed files with 86 additions and 38 deletions
  1. 21
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserLiveRoomCheckInUserCountCommittedMQ.java
  2. 94
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  3. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
  4. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java

21
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;
}

94
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<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);
}
}
}

4
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";
}

5
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;
}
Loading…
Cancel
Save