Browse Source

任务模板

master
张彭杰 1 week ago
parent
commit
8dcacd8a31
5 changed files with 243 additions and 1 deletions
  1. 12
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/tasktemplate/entity/TaskTemplate.java
  2. 35
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/TaskTemplateUserCommandController.java
  3. 95
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserCreateTaskTemplateDto.java
  4. 87
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/tasktemplate/user/request/UserUpdateTaskTemplateDto.java
  5. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/tasktemplate/TaskTemplateApplicationService.java

12
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<TaskTemplate> {
private transient List<SubTaskTemplate> updateSubList; private transient List<SubTaskTemplate> updateSubList;
private transient List<SubTaskTemplate> deleteSubList; private transient List<SubTaskTemplate> 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);
}
}
}
} }

35
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());
}
}

95
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<TaskTemplate> {
@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<CreateSubTaskTemplateDto> 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;
}
}

87
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<TaskTemplate> {
@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<UpdateSubTaskTemplateDto> 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;
}
}

15
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; 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.TaskTemplateAggregate;
import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate; 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 org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -11,16 +14,26 @@ public class TaskTemplateApplicationService {
@Resource @Resource
private TaskTemplateAggregate taskTemplateAggregate; private TaskTemplateAggregate taskTemplateAggregate;
@Resource
private TaskTemplateRepository repository;
public void create(TaskTemplate taskTemplate) { public void create(TaskTemplate taskTemplate) {
taskTemplate.handleStatus(taskTemplate);
taskTemplate.setInsertSubList(taskTemplate.getSubList());
taskTemplateAggregate.create(taskTemplate); taskTemplateAggregate.create(taskTemplate);
} }
public void edit(TaskTemplate 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); taskTemplateAggregate.edit(taskTemplate);
} }
public void delete(Long id) { public void delete(Long id) {
taskTemplateAggregate.delete(id);
taskTemplateAggregate.delete(id);
} }
} }
Loading…
Cancel
Save