From 8dcacd8a3118bdeb97683a9e8895b5424b5d8037 Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 9 May 2026 17:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasktemplate/entity/TaskTemplate.java | 12 +++ .../TaskTemplateUserCommandController.java | 35 +++++++ .../request/UserCreateTaskTemplateDto.java | 95 +++++++++++++++++++ .../request/UserUpdateTaskTemplateDto.java | 87 +++++++++++++++++ .../TaskTemplateApplicationService.java | 15 ++- 5 files changed, 243 insertions(+), 1 deletion(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/TaskTemplateUserCommandController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserCreateTaskTemplateDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserUpdateTaskTemplateDto.java diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/tasktemplate/entity/TaskTemplate.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/tasktemplate/entity/TaskTemplate.java index 1f12a86..4f7ccaa 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/tasktemplate/entity/TaskTemplate.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/tasktemplate/entity/TaskTemplate.java @@ -57,4 +57,16 @@ public class TaskTemplate extends Entity { private transient List updateSubList; private transient List deleteSubList; + public void handleStatus(TaskTemplate taskTemplate) { + LocalDateTime now = LocalDateTime.now(); + if (taskTemplate.getStartTime().isAfter(now)) { + taskTemplate.setStatus(TaskTemplateStatus.NOT_EFFECTIVE); + } else { + if (taskTemplate.getEndTime().isAfter(now)) { + taskTemplate.setStatus(TaskTemplateStatus.EFFECTIVE); + } else { + taskTemplate.setStatus(TaskTemplateStatus.FINISHED); + } + } + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/TaskTemplateUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/TaskTemplateUserCommandController.java new file mode 100644 index 0000000..a5c46b8 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/TaskTemplateUserCommandController.java @@ -0,0 +1,35 @@ +package com.qniao.dam.api.command.tasktemplate.user; + +import com.qniao.dam.api.command.tasktemplate.user.request.UserCreateTaskTemplateDto; +import com.qniao.dam.api.command.tasktemplate.user.request.UserUpdateTaskTemplateDto; +import com.qniao.dam.application.service.tasktemplate.TaskTemplateApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +@Api(tags = "任务模板") +@RestController +@RequestMapping("user") +public class TaskTemplateUserCommandController { + + @Resource + private TaskTemplateApplicationService taskTemplateApplicationService; + + @ApiOperation("创建任务模板") + @PostMapping("create/task-template") + public void userCreateTaskTemplate(@RequestBody @Valid UserCreateTaskTemplateDto dto, + @RequestParam("userId") Long userId) { + taskTemplateApplicationService.create(dto.trans2Domain()); + } + + @ApiOperation("编辑任务模板") + @PostMapping("update/task-template") + public void userUpdateTaskTemplate(@RequestBody @Valid UserUpdateTaskTemplateDto dto, + @RequestParam("userId") Long userId) { + taskTemplateApplicationService.create(dto.trans2Domain()); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserCreateTaskTemplateDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserCreateTaskTemplateDto.java new file mode 100644 index 0000000..fc26e65 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserCreateTaskTemplateDto.java @@ -0,0 +1,95 @@ +package com.qniao.dam.api.command.tasktemplate.user.request; + +import cn.hutool.core.collection.CollUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +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.*; +import com.qniao.domain.Trans2DomainAssembler; +import com.qniao.framework.utils.TypeConvertUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserCreateTaskTemplateDto implements Trans2DomainAssembler { + + @ApiModelProperty("任务群体") + @NotNull + private TaskGroupEnum taskGroup; + + @ApiModelProperty("任务种类") + @NotNull + private TaskCategoryEnum taskCategory; + + @ApiModelProperty("任务类型(1-每日任务,2-每周任务,3-每月任务)") + @NotNull + private TaskTypeEnum taskType; + + @ApiModelProperty("关联阶段编码(1-首月,2-次月,3-第三月+)") + @NotNull + private TaskStageEnum stageCode; + + @ApiModelProperty("任务名称") + @NotNull + private String taskName; + + @ApiModelProperty("任务描述") + private String taskDesc; + + @ApiModelProperty("奖励") + @NotNull + private String rewardValue; + + @ApiModelProperty("开始时间 00:00:00") + @NotNull + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @ApiModelProperty("结束时间 23:59:59") + @NotNull + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + @ApiModelProperty("子任务列表") + @Valid + private List subList; + + @Override + public TaskTemplate trans2Domain() { + TaskTemplate taskTemplate = TypeConvertUtils.convert(this, TaskTemplate.class); + if (CollUtil.isNotEmpty(subList)) { + taskTemplate.setSubList(TypeConvertUtils.convert(subList, SubTaskTemplate.class)); + } + return taskTemplate; + } + + @Data + public static class CreateSubTaskTemplateDto { + + @ApiModelProperty("子任务名称") + @NotNull + private String subTaskName; + + @ApiModelProperty("子任务类型") + @NotNull + private SubTaskTypeEnum subTaskType; + + @ApiModelProperty("子任务描述") + @NotNull + private String subTaskDesc; + + @ApiModelProperty("要求次数") + @NotNull + private Integer requiredCount; + + @ApiModelProperty("排序") + @NotNull + private Integer sort; + + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserUpdateTaskTemplateDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserUpdateTaskTemplateDto.java new file mode 100644 index 0000000..1d91f8e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserUpdateTaskTemplateDto.java @@ -0,0 +1,87 @@ +package com.qniao.dam.api.command.tasktemplate.user.request; + +import cn.hutool.core.collection.CollUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +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.*; +import com.qniao.domain.Trans2DomainAssembler; +import com.qniao.framework.utils.TypeConvertUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserUpdateTaskTemplateDto implements Trans2DomainAssembler { + + @ApiModelProperty("唯一标识") + @NotNull + private Long id; + + @ApiModelProperty("任务名称") + @NotNull + private String taskName; + + @ApiModelProperty("任务描述") + private String taskDesc; + + @ApiModelProperty("奖励") + @NotNull + private String rewardValue; + + @ApiModelProperty("开始时间 00:00:00") + @NotNull + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime startTime; + + @ApiModelProperty("结束时间 23:59:59") + @NotNull + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; + + @ApiModelProperty("子任务列表") + @Valid + private List subList; + + @Override + public TaskTemplate trans2Domain() { + TaskTemplate taskTemplate = TypeConvertUtils.convert(this, TaskTemplate.class); + if (CollUtil.isNotEmpty(subList)) { + taskTemplate.setSubList(TypeConvertUtils.convert(subList, SubTaskTemplate.class)); + } + return taskTemplate; + } + + @Data + public static class UpdateSubTaskTemplateDto { + + @ApiModelProperty("子任务唯一标识") + private Long id; + + @ApiModelProperty("子任务名称") + @NotNull + private String subTaskName; + + @ApiModelProperty("子任务类型") + @NotNull + private SubTaskTypeEnum subTaskType; + + @ApiModelProperty("子任务描述") + @NotNull + private String subTaskDesc; + + @ApiModelProperty("要求次数") + @NotNull + private Integer requiredCount; + + @ApiModelProperty("排序") + @NotNull + private Integer sort; + + } +} + diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/tasktemplate/TaskTemplateApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/tasktemplate/TaskTemplateApplicationService.java index 2b4c6bc..e4c3574 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/tasktemplate/TaskTemplateApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/tasktemplate/TaskTemplateApplicationService.java @@ -1,7 +1,10 @@ package com.qniao.dam.application.service.tasktemplate; +import cn.hutool.core.lang.Tuple; import com.qniao.dam.domain.aggregate.tasktemplate.TaskTemplateAggregate; import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate; +import com.qniao.dam.domain.aggregate.tasktemplate.repository.TaskTemplateRepository; +import com.qniao.dam.infrastructure.utils.CompareEntityUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -11,16 +14,26 @@ public class TaskTemplateApplicationService { @Resource private TaskTemplateAggregate taskTemplateAggregate; + @Resource + private TaskTemplateRepository repository; public void create(TaskTemplate taskTemplate) { + taskTemplate.handleStatus(taskTemplate); + taskTemplate.setInsertSubList(taskTemplate.getSubList()); taskTemplateAggregate.create(taskTemplate); } public void edit(TaskTemplate taskTemplate) { + TaskTemplate existTaskTemplate = repository.load(taskTemplate.getId()); + taskTemplate.handleStatus(taskTemplate); + Tuple tuple = CompareEntityUtil.compareEntityList(taskTemplate.getSubList(), existTaskTemplate.getSubList()); + taskTemplate.setInsertSubList(tuple.get(0)); + taskTemplate.setUpdateSubList(tuple.get(1)); + taskTemplate.setDeleteSubList(tuple.get(2)); taskTemplateAggregate.edit(taskTemplate); } public void delete(Long id) { - taskTemplateAggregate.delete(id); + taskTemplateAggregate.delete(id); } } \ No newline at end of file