Browse Source

每月任务

release
张彭杰 1 month ago
parent
commit
dbca2c215f
4 changed files with 39 additions and 25 deletions
  1. 5
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/TaskStageEnum.java
  2. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  3. 38
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java
  4. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java

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

@ -41,9 +41,8 @@ public enum TaskStageEnum {
return null;
}
public static TaskStageEnum count(LocalDate date) {
LocalDate now = LocalDate.now();
int diffDays = (int) ChronoUnit.DAYS.between(date, now) + 1;
public static TaskStageEnum count(LocalDate registerDate, LocalDate taskEndDate) {
int diffDays = (int) ChronoUnit.DAYS.between(registerDate, taskEndDate) + 1;
if (diffDays <= 30) {
return FIRST_MONTH;
} else if (diffDays <= 60) {

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

@ -152,10 +152,9 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService {
if (Objects.nonNull(liveMatchmaker)) {
//每日任务处理
TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker);
TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate());
handleTaskComplete(event.getUserId(), liveMatchmaker, TaskTypeEnum.DAILY_TASK, taskGroup, stageCode);
handleTaskComplete(event.getUserId(), liveMatchmaker, TaskTypeEnum.DAILY_TASK, taskGroup);
//每月任务处理
handleTaskComplete(event.getUserId(), liveMatchmaker, TaskTypeEnum.MONTHLY_TASK, taskGroup, stageCode);
handleTaskComplete(event.getUserId(), liveMatchmaker, TaskTypeEnum.MONTHLY_TASK, taskGroup);
}
}
} catch (Exception e) {
@ -166,13 +165,12 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService {
private void handleTaskComplete(Long userId,
LiveMatchmaker liveMatchmaker,
TaskTypeEnum taskType,
TaskGroupEnum taskGroup,
TaskStageEnum stageCode) {
TaskGroupEnum taskGroup) {
//查询任务模板
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode);
if (Objects.nonNull(taskTemplate)) {
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime());
if (Objects.nonNull(tuple.get(0))) {
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime());
if (Objects.nonNull(tuple.get(0))) {
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, tuple.get(2));
if (Objects.nonNull(taskTemplate)) {
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));

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

@ -20,6 +20,7 @@ import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.List;
import java.util.Objects;
@ -41,12 +42,22 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService {
*/
@Override
public Tuple getTaskDate(TaskTypeEnum taskType, LocalDateTime createTime) {
LocalDate now = LocalDate.now();
LocalDate taskStartDate = null;
LocalDate taskEndDate = null;
TaskStageEnum stageCode = null;
switch (taskType) {
case DAILY_TASK:
taskStartDate = LocalDate.now();
taskEndDate = LocalDate.now();
taskStartDate = now;
taskEndDate = now;
int diffDays = (int) ChronoUnit.DAYS.between(createTime.toLocalDate(), now) + 1;
if (diffDays <= 30) {
stageCode = TaskStageEnum.FIRST_MONTH;
} else if (diffDays <= 60) {
stageCode = TaskStageEnum.SECOND_MONTH;
} else {
stageCode = TaskStageEnum.THIRD_MONTH_AND_AFTER;
}
break;
case WEEKLY_TASK:
//暂时只有首周
@ -54,29 +65,36 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService {
//taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
taskStartDate = createTime.toLocalDate();
taskEndDate = taskStartDate.plusDays(7);
if (taskEndDate.isBefore(LocalDate.now())) {
if (taskEndDate.isBefore(now)) {
taskStartDate = null;
taskEndDate = null;
}
stageCode = TaskStageEnum.FIRST_MONTH;
break;
case MONTHLY_TASK:
LocalDate now = LocalDate.now();
taskStartDate = createTime.toLocalDate();
taskEndDate = taskStartDate.plusDays(30);
stageCode = TaskStageEnum.FIRST_MONTH;
if (taskEndDate.isBefore(now)) {
taskStartDate = taskEndDate.plusDays(1);
if (taskStartDate.getYear() == now.getYear() && taskStartDate.getMonth() == now.getMonth() && taskEndDate.getDayOfMonth() != 1) {
//判断是否跨月
LocalDate firstMonthTaskEndDate = taskEndDate;
taskStartDate = now.withDayOfMonth(1);
int lastDay = now.lengthOfMonth();
taskEndDate = now.withDayOfMonth(lastDay);
if (firstMonthTaskEndDate.getYear() == now.getYear() && firstMonthTaskEndDate.getMonth() == now.getMonth()) {
taskStartDate = null;
taskEndDate = null;
} else {
taskStartDate = now.withDayOfMonth(1);
int lastDay = now.lengthOfMonth();
taskEndDate = now.withDayOfMonth(lastDay);
if ((int) ChronoUnit.DAYS.between(firstMonthTaskEndDate, taskStartDate) <= 31) {
stageCode = TaskStageEnum.SECOND_MONTH;
} else {
stageCode = TaskStageEnum.THIRD_MONTH_AND_AFTER;
}
}
}
break;
}
return new Tuple(taskStartDate, taskEndDate);
return new Tuple(taskStartDate, taskEndDate, stageCode);
}
@Override

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

@ -52,9 +52,8 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe
TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker);
TaskTypeEnum taskType = TaskTypeEnum.get(queryParams.getTaskType());
Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime());
if (Objects.nonNull(tuple.get(0))){
TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate());
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode);
if (Objects.nonNull(tuple.get(0))) {
TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, tuple.get(2));
if (Objects.nonNull(taskTemplate)) {
UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1));
if (Objects.isNull(userTaskComplete)) {

Loading…
Cancel
Save