From 02fb70d764bb619da6dfb675c1a285224f925002 Mon Sep 17 00:00:00 2001 From: Derran Date: Thu, 5 Mar 2026 17:47:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AF=8F=E6=9C=88=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utc/UserTaskCompleteEventHandler.java | 62 +++++++++--------- .../impl/TaskTemplateQueryServiceImpl.java | 26 ++++++-- .../UserTaskCompleteQueryServiceImpl.java | 64 ++++++++++--------- 3 files changed, 86 insertions(+), 66 deletions(-) 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 a2d21b8..a0dff2d 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 @@ -172,38 +172,40 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode); if (Objects.nonNull(taskTemplate)) { Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime()); - 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)); - } - //未完成 - if (!userTaskComplete.getCompleteStatus()) { - List subTaskTemplateList = taskTemplateQueryService.getSubList(userTaskComplete.getTaskTemplateId()); - if (CollUtil.isNotEmpty(subTaskTemplateList)) { - boolean completeStatus = true; - for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { - int completeCount = userDailyTaskProgressQueryService.count(userId, subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1)); - if (completeCount < subTaskTemplate.getRequiredCount()) { - completeStatus = false; - break; + if (Objects.nonNull(tuple.get(0))) { + 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)); + } + //未完成 + if (!userTaskComplete.getCompleteStatus()) { + List subTaskTemplateList = taskTemplateQueryService.getSubList(userTaskComplete.getTaskTemplateId()); + if (CollUtil.isNotEmpty(subTaskTemplateList)) { + boolean completeStatus = true; + for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { + int completeCount = userDailyTaskProgressQueryService.count(userId, subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1)); + if (completeCount < subTaskTemplate.getRequiredCount()) { + completeStatus = false; + break; + } } - } - if (completeStatus) { - //已完成 - BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue()); - WalletAccount walletAccount = null; - if (revenue.compareTo(BigDecimal.ZERO) > 0) { - walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL); - BigDecimal originalBalance = walletAccount.getTotalBalance(); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); - walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); + if (completeStatus) { + //已完成 + BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue()); + WalletAccount walletAccount = null; + if (revenue.compareTo(BigDecimal.ZERO) > 0) { + walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); + walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); + } + completeUserTaskCompleteDomainService.handle(userTaskComplete, walletAccount); + } else { + //未完成 + userTaskCompleteAggregate.edit(userTaskComplete); } - completeUserTaskCompleteDomainService.handle(userTaskComplete, walletAccount); - } else { - //未完成 - userTaskCompleteAggregate.edit(userTaskComplete); } } } 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 a1e2f26..6163428 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 @@ -13,6 +13,7 @@ import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.SubTaskTemplateD import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao; import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService; import com.qniao.framework.utils.TypeConvertUtils; +import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -48,15 +49,30 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService { taskEndDate = LocalDate.now(); break; case WEEKLY_TASK: - taskStartDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); - taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); + //暂时只有首周 + //taskStartDate = LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); + //taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); + taskStartDate = createTime.toLocalDate(); + taskEndDate = taskStartDate.plusDays(7); + if (taskEndDate.isBefore(LocalDate.now())) { + taskStartDate = null; + taskEndDate = null; + } break; case MONTHLY_TASK: + LocalDate now = LocalDate.now(); taskStartDate = createTime.toLocalDate(); taskEndDate = taskStartDate.plusDays(30); - while (taskEndDate.isBefore(LocalDate.now())) { - taskStartDate = taskEndDate; - taskEndDate = taskStartDate.plusDays(30); + if (taskEndDate.isBefore(now)) { + taskStartDate = taskEndDate.plusDays(1); + if (taskStartDate.getYear() == now.getYear() && taskStartDate.getMonth() == now.getMonth() && taskEndDate.getDayOfMonth() != 1) { + taskStartDate = null; + taskEndDate = null; + } else { + taskStartDate = now.withDayOfMonth(1); + int lastDay = now.lengthOfMonth(); + taskEndDate = now.withDayOfMonth(lastDay); + } } break; } 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 46e3ed1..a1fffd8 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,39 +52,41 @@ public class UserTaskCompleteQueryServiceImpl implements UserTaskCompleteQuerySe TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); TaskTypeEnum taskType = TaskTypeEnum.get(queryParams.getTaskType()); Tuple tuple = taskTemplateQueryService.getTaskDate(taskType, liveMatchmaker.getCreateTime()); - TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); - TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode); - if (Objects.nonNull(taskTemplate)) { - UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1)); - if (Objects.isNull(userTaskComplete)) { - vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); - vo.setTaskTemplateId(taskTemplate.getId()); - vo.setTaskStartDate(tuple.get(0)); - vo.setTaskEndDate(tuple.get(1)); - } else { - vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); - vo.setTaskTemplateId(taskTemplate.getId()); - vo.setTaskStartDate(tuple.get(0)); - vo.setTaskEndDate(tuple.get(1)); - vo.setUserTaskCompleteId(userTaskComplete.getId()); - vo.setCompleteStatus(userTaskComplete.getCompleteStatus()); - vo.setRewardReceiveStatus(userTaskComplete.getRewardReceiveStatus()); - vo.setCompleteTime(userTaskComplete.getCompleteTime()); + if (Objects.nonNull(tuple.get(0))){ + TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); + TaskTemplate taskTemplate = taskTemplateQueryService.queryBy(taskGroup, taskType, stageCode); + if (Objects.nonNull(taskTemplate)) { + UserTaskComplete userTaskComplete = queryBy(queryParams.getQueryUserId(), taskTemplate.getId(), tuple.get(0), tuple.get(1)); + if (Objects.isNull(userTaskComplete)) { + vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); + vo.setTaskTemplateId(taskTemplate.getId()); + vo.setTaskStartDate(tuple.get(0)); + vo.setTaskEndDate(tuple.get(1)); + } else { + vo = TypeConvertUtils.convert(taskTemplate, UserGetUserTaskCompleteVo.class); + vo.setTaskTemplateId(taskTemplate.getId()); + vo.setTaskStartDate(tuple.get(0)); + vo.setTaskEndDate(tuple.get(1)); + vo.setUserTaskCompleteId(userTaskComplete.getId()); + vo.setCompleteStatus(userTaskComplete.getCompleteStatus()); + vo.setRewardReceiveStatus(userTaskComplete.getRewardReceiveStatus()); + vo.setCompleteTime(userTaskComplete.getCompleteTime()); + } } - } - if (Objects.nonNull(vo)) { - //补充子任务进度 - List subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); - if (CollUtil.isNotEmpty(subTaskTemplateList)) { - List subList = new ArrayList<>(); - for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { - UserGetUserSubTaskCompleteVo subTaskCompleteVo = TypeConvertUtils.convert(subTaskTemplate, UserGetUserSubTaskCompleteVo.class); - int completeCount = userDailyTaskProgressQueryService.count(queryParams.getQueryUserId(), subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1)); - subTaskCompleteVo.setCompleteCount(completeCount); - subTaskCompleteVo.setCompleteStatus(completeCount >= subTaskTemplate.getRequiredCount()); - subList.add(subTaskCompleteVo); + if (Objects.nonNull(vo)) { + //补充子任务进度 + List subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); + if (CollUtil.isNotEmpty(subTaskTemplateList)) { + List subList = new ArrayList<>(); + for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { + UserGetUserSubTaskCompleteVo subTaskCompleteVo = TypeConvertUtils.convert(subTaskTemplate, UserGetUserSubTaskCompleteVo.class); + int completeCount = userDailyTaskProgressQueryService.count(queryParams.getQueryUserId(), subTaskTemplate.getSubTaskType(), tuple.get(0), tuple.get(1)); + subTaskCompleteVo.setCompleteCount(completeCount); + subTaskCompleteVo.setCompleteStatus(completeCount >= subTaskTemplate.getRequiredCount()); + subList.add(subTaskCompleteVo); + } + vo.setSubList(subList); } - vo.setSubList(subList); } } }