diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/TaskStageEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/TaskStageEnum.java index 9a9947f..0473a8c 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/tasktemplate/constant/TaskStageEnum.java +++ b/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) { 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 a0dff2d..5c66ac4 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 @@ -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)); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java index 6163428..1034a9d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/tasktemplate/impl/TaskTemplateQueryServiceImpl.java +++ b/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 diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java index a1fffd8..f0bdf9c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/utc/impl/UserTaskCompleteQueryServiceImpl.java +++ b/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)) {