Commit 8c7571ef 8c7571ef5b30c10c02c36fb3d13f65f52e594c91 by xianghan

1.update

1 parent 932b0c98
......@@ -33,6 +33,9 @@ public class Task implements Serializable {
@Column(name = "task_template_id", nullable = false)
private Long taskTemplateId;
@Transient
private String taskTemplateCode;
/** 任务重复类型,-1:不限次;1:单次;>1:多次 */
@Column(name = "task_repeat_type", nullable = false)
private Integer taskRepeatType;
......@@ -117,10 +120,29 @@ public class Task implements Serializable {
@Column(name = "rights3_amount")
private Integer rights3Amount;
/** 会员专享 0:会员专享 1:非会员专享 */
@Column(name = "member_exclusive")
private Integer memberExclusive;
/** 状态 0:失效;1:生效 */
@Column(name = "status", nullable = false)
private Integer status;
/** 任务名称 */
@Column(name = "name", nullable = false)
private String name;
/** 编号 */
@Column(name = "code", nullable = false)
private String code;
/** 任务描述 */
@Column(name = "description", nullable = false)
private String description;
@Transient
private String attr;
/** 创建时间 */
@CreatedDate
@Column(name = "create_time")
......
......@@ -3,8 +3,12 @@ package com.topdraw.business.module.task.repository;
import com.topdraw.business.module.task.domain.Task;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* @author XiangHan
......@@ -14,4 +18,10 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
List<Task> findByTaskTemplateId(Long taskTemplateId);
Optional<Task> findByCode(String code);
@Modifying
@Transactional
@Query(value = "UPDATE `tr_task` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true)
void updateDeleteMark(Long id);
}
......
......@@ -24,4 +24,35 @@ public interface TaskService {
* @return
*/
List<Task> findByTemplateId(Long taskTemplateId);
/**
*
* @param code
* @return
*/
TaskDTO findByCode(String code);
/**
*
* @param task
*/
TaskDTO create(Task task);
/**
*
* @param task
*/
TaskDTO update(Task task);
/**
*
* @param task
*/
void delete(Task task);
/**
*
* @param id
*/
void delete(Long id);
}
......
......@@ -73,9 +73,24 @@ public class TaskDTO implements Serializable {
/** 权益3数量 */
private Integer rights3Amount;
/** 会员专享 0:会员专享 1:非会员专享 */
private Integer memberExclusive;
/** 状态 0:失效;1:生效 */
private Integer status;
/** 任务名称 */
private String name;
/** 编号 */
private String code;
/** 任务描述 */
private String description;
/** 属性 */
private String attr;
/** 创建时间 */
private Timestamp createTime;
......
......@@ -40,5 +40,33 @@ public class TaskServiceImpl implements TaskService {
return Objects.nonNull(taskTemplateId) ? this.taskRepository.findByTaskTemplateId(taskTemplateId) : null;
}
@Override
public TaskDTO findByCode(String code) {
Task task = this.taskRepository.findByCode(code).orElseGet(Task::new);
return this.taskMapper.toDto(task);
}
@Override
public TaskDTO create(Task task) {
Task save = this.taskRepository.save(task);
return this.taskMapper.toDto(save);
}
@Override
public TaskDTO update(Task task) {
Task save = this.taskRepository.save(task);
return this.taskMapper.toDto(save);
}
@Override
public void delete(Task task) {
Long id = task.getId();
this.delete(id);
}
@Override
public void delete(Long id) {
this.taskRepository.updateDeleteMark(id);
}
}
......
......@@ -28,34 +28,38 @@ public class TaskTemplate implements Serializable {
@Column(name = "id")
private Long id;
// 标识
/** 标识 */
@Column(name = "code")
private String code;
// 名称
/** 名称 */
@Column(name = "name")
private String name;
// 关注事件(和MQ topic相关)
/** 关注事件(和MQ topic相关) */
@Column(name = "event")
private String event;
// 描述
/** 描述 */
@Column(name = "description")
private String description;
// 状态 0:失效;1:生效
/** 状态 0:失效;1:生效 */
@Column(name = "status")
private Integer status;
// 类型 0:活动任务模板
/** 类型 0:活动任务模板 */
@Column(name = "type")
private Integer type;
// 模板参数,json
/** 模板参数,json */
@Column(name = "params")
private String params;
/** 删除标识 0:正常;1:已删除; */
@Column(name = "delete_mark")
private Integer deleteMark;
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
......
......@@ -3,8 +3,10 @@ package com.topdraw.business.module.task.template.repository;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
......@@ -17,5 +19,10 @@ public interface TaskTemplateRepository extends JpaRepository<TaskTemplate, Long
TaskTemplate findByEvent(String event);
List<TaskTemplate> findByType(Integer event);
TaskTemplate findByType(Integer event);
@Modifying
@Transactional
@Query(value = "UPDATE `tr_task_template` SET `delete_mark` = 1 , `update_time` = now() WHERE `id` = ?1", nativeQuery = true)
void updateDeleteMark(Long id);
}
......
......@@ -2,11 +2,8 @@ package com.topdraw.business.module.task.template.service;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @author XiangHan
......@@ -15,31 +12,28 @@ import java.util.Map;
public interface TaskTemplateService {
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(TaskTemplateQueryCriteria criteria, Pageable pageable);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<TaskTemplateDTO>
*/
List<TaskTemplateDTO> queryAll(TaskTemplateQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return TaskTemplateDTO
*/
TaskTemplateDTO findById(Long id);
void create(TaskTemplate resources);
/**
*
* @param resources
*/
TaskTemplateDTO create(TaskTemplate resources);
void update(TaskTemplate resources);
/**
*
* @param resources
*/
TaskTemplateDTO update(TaskTemplate resources);
/**
*
* @param id
*/
void delete(Long id);
/**
......@@ -47,9 +41,19 @@ public interface TaskTemplateService {
* @param code
* @return TaskTemplateDTO
*/
TaskTemplateDTO getByCode(String code);
TaskTemplateDTO findByCode(String code);
TaskTemplate findByEvent(String event);
/**
*
* @param event
* @return
*/
TaskTemplateDTO findByEvent(String event);
List<TaskTemplate> findByType(Integer event);
/**
*
* @param event
* @return
*/
TaskTemplateDTO findByType(Integer event);
}
......
......@@ -2,6 +2,7 @@ package com.topdraw.business.module.task.template.service.dto;
import lombok.Data;
import javax.persistence.Column;
import java.io.Serializable;
import java.sql.Timestamp;
......@@ -15,27 +16,30 @@ public class TaskTemplateDTO implements Serializable {
private Long id;
// 标识
/** 标识 */
private String code;
// 名称
/** 名称 */
private String name;
// 关注事件(和MQ topic相关)
/** 关注事件(和MQ topic相关) */
private String event;
// 描述
/** 描述 */
private String description;
// 状态 0:失效;1:生效
/** 状态 0:失效;1:生效 */
private Integer status;
// 类型 0:活动任务模板
/** 类型 0:活动任务模板 */
private Integer type;
// 模板参数,json
/** 模板参数,json */
private String params;
/** 删除标识 0:正常;1:已删除; */
private Integer deleteMark;
private Timestamp createTime;
private Timestamp updateTime;
......
package com.topdraw.business.module.task.template.service.dto;
import lombok.Data;
/**
* @author XiangHan
* @date 2021-10-22
*/
@Data
public class TaskTemplateQueryCriteria{
}
package com.topdraw.business.module.task.template.service.impl;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.repository.TaskTemplateRepository;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateQueryCriteria;
import com.topdraw.utils.PageUtil;
import com.topdraw.utils.QueryHelp;
import com.topdraw.business.module.task.template.service.mapper.TaskTemplateMapper;
import com.topdraw.utils.StringUtils;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
......@@ -30,69 +26,57 @@ import java.util.Objects;
public class TaskTemplateServiceImpl implements TaskTemplateService {
@Autowired
private com.topdraw.business.module.task.template.repository.TaskTemplateRepository TaskTemplateRepository;
private TaskTemplateRepository taskTemplateRepository;
@Autowired
private com.topdraw.business.module.task.template.service.mapper.TaskTemplateMapper TaskTemplateMapper;
@Override
public Map<String, Object> queryAll(TaskTemplateQueryCriteria criteria, Pageable pageable) {
Page<TaskTemplate> page = TaskTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
return PageUtil.toPage(page.map(TaskTemplateMapper::toDto));
}
@Override
public List<TaskTemplateDTO> queryAll(TaskTemplateQueryCriteria criteria) {
return TaskTemplateMapper.toDto(TaskTemplateRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
}
private TaskTemplateMapper taskTemplateMapper;
@Override
public TaskTemplateDTO findById(Long id) {
TaskTemplate TaskTemplate = TaskTemplateRepository.findById(id).orElseGet(com.topdraw.business.module.task.template.domain.TaskTemplate::new);
ValidationUtil.isNull(TaskTemplate.getId(),"TaskTemplate","id",id);
return TaskTemplateMapper.toDto(TaskTemplate);
TaskTemplate taskTemplate = this.taskTemplateRepository.findById(id).orElseGet(TaskTemplate::new);
ValidationUtil.isNull(taskTemplate.getId(),"TaskTemplate","id",id);
return this.taskTemplateMapper.toDto(taskTemplate);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(TaskTemplate resources) {
TaskTemplateRepository.save(resources);
public TaskTemplateDTO create(TaskTemplate resources) {
TaskTemplate taskTemplate = this.taskTemplateRepository.save(resources);
return this.taskTemplateMapper.toDto(taskTemplate);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TaskTemplate resources) {
TaskTemplate TaskTemplate = TaskTemplateRepository.findById(resources.getId()).orElseGet(com.topdraw.business.module.task.template.domain.TaskTemplate::new);
ValidationUtil.isNull( TaskTemplate.getId(),"TaskTemplate","id",resources.getId());
TaskTemplate.copy(resources);
TaskTemplateRepository.save(TaskTemplate);
public TaskTemplateDTO update(TaskTemplate resources) {
TaskTemplate taskTemplate = this.taskTemplateRepository.findById(resources.getId()).orElseGet(TaskTemplate::new);
ValidationUtil.isNull(taskTemplate.getId(),"TaskTemplate","id",resources.getId());
taskTemplate.copy(resources);
TaskTemplate template = this.taskTemplateRepository.save(taskTemplate);
return this.taskTemplateMapper.toDto(template);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
TaskTemplate TaskTemplate = TaskTemplateRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", com.topdraw.business.module.task.template.domain.TaskTemplate.class, id), 1));
TaskTemplateRepository.delete(TaskTemplate);
this.taskTemplateRepository.updateDeleteMark(id);
}
@Override
public TaskTemplateDTO getByCode(String code) {
return StringUtils.isNotEmpty(code) ? TaskTemplateMapper.toDto(TaskTemplateRepository.findFirstByCode(code).orElseGet(TaskTemplate::new))
public TaskTemplateDTO findByCode(String code) {
return StringUtils.isNotEmpty(code) ? this.taskTemplateMapper.toDto(this.taskTemplateRepository.findFirstByCode(code).orElseGet(TaskTemplate::new))
: new TaskTemplateDTO();
}
@Override
public TaskTemplate findByEvent(String event) {
return StringUtils.isNotEmpty(event) ? this.TaskTemplateRepository.findByEvent(event) : null;
public TaskTemplateDTO findByEvent(String event) {
return StringUtils.isNotEmpty(event) ? this.taskTemplateMapper.toDto(this.taskTemplateRepository.findByEvent(event)) : null;
}
// @Cacheable(cacheNames = "uc-admin_taskTemplate" , key = "#event")
@Override
public List<TaskTemplate> findByType(Integer event) {
return Objects.nonNull(event) ? this.TaskTemplateRepository.findByType(event) : null;
public TaskTemplateDTO findByType(Integer event) {
return Objects.nonNull(event) ? this.taskTemplateMapper.toDto(this.taskTemplateRepository.findByType(event)) : null;
}
}
......
package com.topdraw.business.process.service;
public interface TaskOperationService {
}
package com.topdraw.business.process.service;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
/**
* @description 权益操作接口
* @author XiangHan
* @date 2021.10.22
*/
public interface TaskTemplateOperationService {
TaskTemplateDTO findByCode(String code);
}
package com.topdraw.business.process.service.impl;
import com.topdraw.business.module.task.attribute.domain.TaskAttr;
import com.topdraw.business.module.task.attribute.service.TaskAttrService;
import com.topdraw.business.module.task.attribute.service.dto.TaskAttrDTO;
import com.topdraw.business.module.task.domain.Task;
import com.topdraw.business.module.task.service.TaskService;
import com.topdraw.business.module.task.service.dto.TaskDTO;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.process.service.TaskOperationService;
import com.topdraw.business.process.service.TaskTemplateOperationService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/4/25 15:48
* @version: :
* @modified By:
* @since : modified in 2022/4/25 15:48
*/
@Service
@Slf4j
public class TaskOperationServiceImpl implements TaskOperationService {
@Autowired
private TaskService taskService;
@Autowired
private TaskAttrService taskAttrService;
@Autowired
private TaskTemplateOperationService taskTemplateOperationService;
public void asyncCreateTask(Task task) {
String taskTemplateCode = task.getTaskTemplateCode();
TaskTemplateDTO taskTemplateDTO = this.taskTemplateOperationService.findByCode(taskTemplateCode);
Long id = taskTemplateDTO.getId();
task.setTaskTemplateId(id);
this.create(task);
}
private void create(Task task) {
String code = task.getCode();
TaskDTO taskDTO = this.findByCode(code);
if (Objects.isNull(taskDTO.getId())) {
TaskDTO taskDTO_ = this.taskService.create(task);
if (Objects.nonNull(taskDTO_.getId())) {
task.setId(taskDTO_.getId());
this.createTaskAttr(task);
}
}
}
/**
*
* @param task_
*/
private void createTaskAttr(Task task_) {
TaskAttr taskAttr = new TaskAttr();
taskAttr.setAttrStr(task_.getAttr());
taskAttr.setTaskId(task_.getId());
this.taskAttrService.create(taskAttr);
}
public void asyncUpdateTask(Task task) {
String code = task.getCode();
TaskDTO taskDTO = this.findByCode(code);
if (Objects.nonNull(taskDTO.getId())) {
Long id = taskDTO.getId();
task.setId(id);
String taskTemplateCode = task.getTaskTemplateCode();
TaskTemplateDTO taskTemplateDTO = this.taskTemplateOperationService.findByCode(taskTemplateCode);
Long templateId = taskTemplateDTO.getId();
task.setTaskTemplateId(templateId);
TaskDTO update = this.update(task);
if (Objects.nonNull(update)) {
this.updateTaskAttr(task);
}
}
}
/**
*
* @param task_
*/
private void updateTaskAttr(Task task_) {
TaskAttrDTO taskAttrDTO = this.findTaskAttrByTaskId(task_.getId());
if (Objects.nonNull(taskAttrDTO.getId())) {
TaskAttr taskAttr = new TaskAttr();
BeanUtils.copyProperties(taskAttrDTO, taskAttr);
taskAttr.setAttrStr(task_.getAttr());
this.taskAttrService.update(taskAttr);
}
}
private TaskAttrDTO findTaskAttrByTaskId(Long taskId) {
return this.taskAttrService.findByTaskId(taskId);
}
private TaskDTO update(Task task) {
return this.taskService.update(task);
}
public void asyncDeleteTask(Task task) {
String code = task.getCode();
TaskDTO taskDTO = this.findByCode(code);
if (Objects.nonNull(taskDTO.getId())) {
Long id = taskDTO.getId();
task.setId(id);
this.delete(task);
}
}
private void delete(Task task) {
this.taskService.delete(task);
}
private TaskDTO findByCode(String code){
TaskDTO taskDTO = this.taskService.findByCode(code);
return taskDTO;
}
}
package com.topdraw.business.process.service.impl;
import com.topdraw.business.module.task.template.domain.TaskTemplate;
import com.topdraw.business.module.task.template.service.TaskTemplateService;
import com.topdraw.business.module.task.template.service.dto.TaskTemplateDTO;
import com.topdraw.business.process.service.TaskTemplateOperationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* @author :
* @description:
* @function :
* @date :Created in 2022/4/25 22:27
* @version: :
* @modified By:
* @since : modified in 2022/4/25 22:27
*/
@Service
@Slf4j
public class TaskTemplateOperationServiceImpl implements TaskTemplateOperationService {
@Autowired
private TaskTemplateService taskTemplateService;
public void asyncCreate(TaskTemplate resources) {
this.create(resources);
}
public void asyncUpdate(TaskTemplate resources) {
this.update(resources);
}
public void asyncDelete(TaskTemplate resources) {
this.delete(resources);
}
private void create(TaskTemplate resources) {
String code = resources.getCode();
TaskTemplateDTO taskTemplateDTO = this.findByCode(code);
if (Objects.isNull(taskTemplateDTO.getId())) {
this.taskTemplateService.create(resources);
}
}
private void update(TaskTemplate resources) {
String code = resources.getCode();
TaskTemplateDTO taskTemplateDTO = this.findByCode(code);
if (Objects.nonNull(taskTemplateDTO.getId())) {
Long id = taskTemplateDTO.getId();
resources.setId(id);
this.taskTemplateService.update(resources);
}
}
private void delete(TaskTemplate resources) {
String code = resources.getCode();
TaskTemplateDTO taskTemplateDTO = this.findByCode(code);
if (Objects.nonNull(taskTemplateDTO.getId())) {
Long id = taskTemplateDTO.getId();
this.taskTemplateService.delete(id);
}
}
private void delete(Long id) {
TaskTemplateDTO taskTemplateDTO = this.findById(id);
this.taskTemplateService.delete(id);
TaskTemplate taskTemplate = new TaskTemplate();
BeanUtils.copyProperties(taskTemplateDTO, taskTemplate);
taskTemplate.setDeleteMark(1);
}
@Override
public TaskTemplateDTO findByCode(String code) {
return this.taskTemplateService.findByCode(code);
}
private TaskTemplateDTO findById(Long id) {
return this.taskTemplateService.findById(id);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>UserCenter</contextName>
<contextName>uc-consumer</contextName>
<!--定义参数,后面可以通过${app.name}使用-->
<property name="app.name" value="member-engine"/>
<property name="app.name" value="uc-consumer"/>
<property name="log.path" value="./logs"/>
<property name="log.pattern" value="%d [%thread] %-5level %logger{36} [%file : %line] - %msg%n"/>
......