Browse Source

直播红娘任务

release
张彭杰 2 months ago
parent
commit
d9c6a04aff
12 changed files with 196 additions and 19 deletions
  1. 2
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/SubTaskTypeEnum.java
  2. 8
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/utc/entity/UserSubTaskComplete.java
  3. 20
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/utc/entity/UserTaskComplete.java
  4. 21
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserEffectiveLiveDurationCommittedMQ.java
  5. 85
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  6. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
  7. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java
  8. 24
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/UserTaskCompleteRepositoryImpl.java
  9. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/TaskTemplateQueryService.java
  10. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java
  11. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/UserTaskCompleteQueryService.java
  12. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java

2
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/SubTaskTypeEnum.java

@ -10,7 +10,7 @@ import lombok.Getter;
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum SubTaskTypeEnum {
DAILY_EFFECTIVE_LIVE_DURATION(1, "每日有效直播时长"),
EFFECTIVE_LIVE_DURATION(1, "有效直播时长"),
EFFECTIVE_BLIND_DATE_COUNT(2, "有效相亲次数"),

8
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/utc/entity/UserSubTaskComplete.java

@ -28,4 +28,12 @@ public class UserSubTaskComplete extends Entity<UserSubTaskComplete> {
@ApiModelProperty("完成时间")
private LocalDateTime completeTime;
public static UserSubTaskComplete init(Long subTaskTemplateId) {
UserSubTaskComplete entity = new UserSubTaskComplete();
entity.setSubTaskTemplateId(subTaskTemplateId);
entity.setCompleteCount(0);
entity.setCompleteStatus(false);
return entity;
}
}

20
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/utc/entity/UserTaskComplete.java

@ -44,4 +44,24 @@ public class UserTaskComplete extends Entity<UserTaskComplete> {
@ApiModelProperty("子任务列表")
private transient List<UserSubTaskComplete> subList;
private transient List<UserSubTaskComplete> insertSubList;
private transient List<UserSubTaskComplete> updateSubList;
private transient List<UserSubTaskComplete> deleteSubList;
public static UserTaskComplete init(Long userId,
Long taskTemplateId,
LocalDate taskStartDate,
LocalDate taskEndDate) {
UserTaskComplete userTaskComplete = new UserTaskComplete();
userTaskComplete.setUserId(userId);
userTaskComplete.setTaskTemplateId(taskTemplateId);
userTaskComplete.setTaskStartDate(taskStartDate);
userTaskComplete.setTaskEndDate(taskEndDate);
userTaskComplete.setCompleteStatus(false);
userTaskComplete.setRewardReceiveStatus(UserTaskCompleteRewardReceiveStatusEnum.UNRECEIVED);
return userTaskComplete;
}
}

21
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/utc/event/UserEffectiveLiveDurationCommittedMQ.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 UserEffectiveLiveDurationCommittedMQ implements Serializable {
@ApiModelProperty("用户标识")
private Long userId;
@ApiModelProperty("子任务类型")
private SubTaskTypeEnum subTaskType;
@ApiModelProperty("提交次数")
private Integer commitCount;
}

85
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java

@ -0,0 +1,85 @@
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.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.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.constant.MqQueue;
import com.qniao.dam.query.livematchmaker.LiveMatchmakerQueryService;
import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService;
import com.qniao.dam.query.utc.UserTaskCompleteQueryService;
import com.qniao.dau.domain.aggregate.livematchmaker.entity.LiveMatchmaker;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Component
@Slf4j
public class UserTaskCompleteEventHandler extends BaseApplicationService {
@Resource
private LiveMatchmakerQueryService liveMatchmakerQueryService;
@Resource
private TaskTemplateQueryService taskTemplateQueryService;
@Resource
private UserTaskCompleteQueryService userTaskCompleteQueryService;
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.USER_SUB_TASK_COMMITTED),
exchange = @Exchange(value = MqExchange.USER_SUB_TASK_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());
userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete));
} else {
if (!userTaskComplete.getCompleteStatus()) {
UserSubTaskComplete userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId());
//todo
}
}
break;
}
}
}
}
}
} catch (Exception e) {
log.error("直播时长任务提交事件处理异常", e);
}
}
}

4
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java

@ -1,7 +1,5 @@
package com.qniao.dam.infrastructure.constant;
import com.qniao.dam.domian.aggregate.puc.event.MatchmakerPointUpgradeExchangedMQ;
public interface MqExchange {
String MARRIAGE_BOUNTY_ORDER_CREATED = "fanout.marriageBountyOrderCreated";
@ -39,4 +37,6 @@ public interface MqExchange {
String CUSTOMIZED_SERVICE_CONTRACT_CREATED = "fanout.CustomizedServiceContractCreated";
String DATING_STORE_CUSTOMER_TASK_OPERATED = "fanout.DatingStoreCustomerTaskOperated";
String USER_SUB_TASK_COMMITTED = "fanout.userSubTaskCommitted";
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java

@ -29,4 +29,6 @@ public interface MqQueue {
String DATING_STORE_CUSTOMER_SIGNED = MqExchange.DATING_STORE_CUSTOMER_SIGNED + serviceName;
String DATING_STORE_CUSTOMER_TASK_OPERATED = MqExchange.DATING_STORE_CUSTOMER_TASK_OPERATED + serviceName;
String USER_SUB_TASK_COMMITTED = MqExchange.USER_SUB_TASK_COMMITTED + serviceName;
}

24
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/UserTaskCompleteRepositoryImpl.java

@ -34,20 +34,20 @@ public class UserTaskCompleteRepositoryImpl implements UserTaskCompleteRepositor
public Long save(UserTaskComplete entity) {
if (Objects.isNull(entity.getId()) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
if (CollUtil.isNotEmpty(entity.getSubList())) {
entity.getSubList().forEach(item -> {
item.setUserTaskCompleteId(entity.getId());
userSubTaskCompleteDao.insert(item);
});
}
} else {
dao.updateById(entity);
if (CollUtil.isNotEmpty(entity.getSubList())) {
entity.getSubList().forEach(item -> {
item.setUserTaskCompleteId(entity.getId());
userSubTaskCompleteDao.updateById(item);
});
}
}
if (CollUtil.isNotEmpty(entity.getInsertSubList())) {
entity.getInsertSubList().forEach(item -> {
item.setUserTaskCompleteId(entity.getId());
userSubTaskCompleteDao.insert(item);
});
}
if (CollUtil.isNotEmpty(entity.getUpdateSubList())) {
entity.getUpdateSubList().forEach(item -> {
item.setUserTaskCompleteId(entity.getId());
userSubTaskCompleteDao.updateById(item);
});
}
return entity.getId();
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/TaskTemplateQueryService.java

@ -1,11 +1,14 @@
package com.qniao.dam.query.tasktemplate;
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.domian.aggregate.tasktemplate.constant.TaskGroupEnum;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskStageEnum;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskTypeEnum;
import java.util.List;
public interface TaskTemplateQueryService {
Tuple getTaskDate(TaskTypeEnum taskTypeEnum);
@ -13,4 +16,6 @@ public interface TaskTemplateQueryService {
TaskTemplate queryBy(TaskGroupEnum taskGroup,
TaskTypeEnum taskType,
TaskStageEnum stageCode);
List<SubTaskTemplate> getSubList(Long taskTemplateId);
}

13
dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java

@ -2,10 +2,12 @@ package com.qniao.dam.query.tasktemplate.impl;
import cn.hutool.core.lang.Tuple;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.tasktemplate.entity.SubTaskTemplate;
import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate;
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.SubTaskTemplateDao;
import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao;
import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService;
import org.springframework.stereotype.Service;
@ -14,12 +16,16 @@ import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.Collections;
import java.util.List;
@Service
public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService {
@Resource
private TaskTemplateDao taskTemplateDao;
@Resource
private SubTaskTemplateDao subTaskTemplateDao;
/**
* 计算任务的起始时间
@ -59,4 +65,11 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService {
.eq(TaskTemplate::getStageCode, stageCode)
.last("LIMIT 1"));
}
@Override
public List<SubTaskTemplate> getSubList(Long taskTemplateId) {
return subTaskTemplateDao.selectList(new LambdaQueryWrapper<SubTaskTemplate>()
.eq(SubTaskTemplate::getTaskTemplateId, taskTemplateId)
.orderByAsc(SubTaskTemplate::getSort));
}
}

11
dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/UserTaskCompleteQueryService.java

@ -2,8 +2,19 @@ package com.qniao.dam.query.utc;
import com.qniao.dam.api.query.utc.user.request.UserGetUserTaskCompleteQueryParams;
import com.qniao.dam.api.query.utc.user.response.UserGetUserTaskCompleteVo;
import com.qniao.dam.domain.aggregate.utc.entity.UserSubTaskComplete;
import com.qniao.dam.domain.aggregate.utc.entity.UserTaskComplete;
import java.time.LocalDate;
public interface UserTaskCompleteQueryService {
UserGetUserTaskCompleteVo getUserTaskCompleteVo(UserGetUserTaskCompleteQueryParams queryParams);
UserTaskComplete queryBy(Long userId,
Long taskTemplateId,
LocalDate taskStartDate,
LocalDate taskEndDate);
UserSubTaskComplete querySubBy(Long userTaskCompleteId, Long subTaskTemplateId);
}

20
dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java

@ -5,10 +5,12 @@ 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.UserGetUserTaskCompleteVo;
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.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;
@ -27,6 +29,8 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe
@Resource
private UserTaskCompleteDao userTaskCompleteDao;
@Resource
private UserSubTaskCompleteDao userSubTaskCompleteDao;
@Resource
private TaskTemplateQueryService taskTemplateQueryService;
@Resource
private LiveMatchmakerQueryService liveMatchmakerQueryService;
@ -60,10 +64,10 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe
return vo;
}
private UserTaskComplete queryBy(Long userId,
Long taskTemplateId,
LocalDate taskStartDate,
LocalDate taskEndDate) {
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)
@ -71,4 +75,12 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe
.eq(UserTaskComplete::getTaskEndDate, taskEndDate)
.last("LIMIT 1"));
}
@Override
public UserSubTaskComplete querySubBy(Long userTaskCompleteId, Long subTaskTemplateId) {
return userSubTaskCompleteDao.selectOne(new LambdaQueryWrapper<UserSubTaskComplete>()
.eq(UserSubTaskComplete::getUserTaskCompleteId, userTaskCompleteId)
.eq(UserSubTaskComplete::getSubTaskTemplateId, subTaskTemplateId)
.last("LIMIT 1"));
}
}
Loading…
Cancel
Save