From 145e949147a630d975ef6bdf5361c366ea0faef9 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Tue, 25 May 2021 11:50:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A1=B9=E7=9B=AE=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E4=B8=BA=E6=A8=A1=E6=9D=BF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/tall/bean/dto/ProjectDto.java | 7 ++ .../persist/dao/ProMemberRoleShowDao.java | 9 +++ .../ccsens/tall/service/IProjectService.java | 8 +++ .../tall/service/ProTaskDetailService.java | 5 +- .../ccsens/tall/service/ProjectService.java | 65 +++++++++++++++++++ .../ccsens/tall/web/ProjectController.java | 16 +++-- 6 files changed, 103 insertions(+), 7 deletions(-) create mode 100644 tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberRoleShowDao.java diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java index 19e24be8..627a6625 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/ProjectDto.java @@ -156,4 +156,11 @@ public class ProjectDto { @ApiModelProperty("标签id") private List labelList; } + + @Data + @ApiModel("项目转模板") + public static class ProjectToTemplate{ + @ApiModelProperty("项目id") + private Long projectId; + } } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberRoleShowDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberRoleShowDao.java new file mode 100644 index 00000000..d2ec15ba --- /dev/null +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProMemberRoleShowDao.java @@ -0,0 +1,9 @@ +package com.ccsens.tall.persist.dao; + +import com.ccsens.tall.persist.mapper.ProMemberRoleShowMapper; + +/** + * @author 马 + */ +public interface ProMemberRoleShowDao extends ProMemberRoleShowMapper { +} diff --git a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java index 4caf8d57..f9acec51 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProjectService.java @@ -3,6 +3,7 @@ package com.ccsens.tall.service; import com.ccsens.tall.bean.dto.ProjectDto; import com.ccsens.tall.bean.po.SysProject; import com.ccsens.tall.bean.vo.ProjectVo; +import com.ccsens.util.bean.dto.QueryDto; import java.util.List; @@ -56,4 +57,11 @@ public interface IProjectService { * @return 返回项目信息 */ ProjectVo.ProjectInfo createProject(Long currentUserId,ProjectDto.CreateProject createProject,String token); + + /** + * 项目转模板 + * @param param 项目id + * @param userId 当前用户id + */ + void projectToTemplate(ProjectDto.ProjectToTemplate param, Long userId); } diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index 543e5300..37cd5b34 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -1503,9 +1503,8 @@ public class ProTaskDetailService implements IProTaskDetailService { taskDetail.setName(updateTaskInfo.getName()); } //详情 - if (StrUtil.isNotEmpty(updateTaskInfo.getDescription())) { - taskDetail.setDescription(updateTaskInfo.getDescription()); - } + taskDetail.setDescription(updateTaskInfo.getDescription()); + //负责人 if (ObjectUtil.isNotNull(updateTaskInfo.getExecutorRole())) { taskDetail.setExecutorRole(updateTaskInfo.getExecutorRole()); diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java index c071a652..42203dc7 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectService.java @@ -12,6 +12,7 @@ import com.ccsens.tall.bean.po.*; import com.ccsens.tall.bean.vo.LabelVo; import com.ccsens.tall.bean.vo.ProjectVo; import com.ccsens.tall.persist.dao.*; +import com.ccsens.tall.persist.mapper.ProMemberRoleMapper; import com.ccsens.tall.persist.mapper.SysImitationMapper; import com.ccsens.util.CodeEnum; import com.ccsens.util.DateUtil; @@ -47,6 +48,8 @@ public class ProjectService implements IProjectService { @Resource private ProMemberRoleDao memberRoleDao; @Resource + private ProMemberRoleShowDao memberRoleShowDao; + @Resource private TaskDetailDao taskDetailDao; @Resource private TaskSubTimeDao taskSubTimeDao; @@ -1248,4 +1251,66 @@ public class ProjectService implements IProjectService { } return getProjectInfoById(currentUserId,sysProject.getId(),token); } + + /** + * 项目转模板 + * @param param 项目id + * @param userId 当前用户id + */ + @Override + public void projectToTemplate(ProjectDto.ProjectToTemplate param, Long userId) { + //用户在项目中的最高权限 + int power = proRoleService.selectPowerByRoleName(userId, param.getProjectId()); + if (WebConstant.ROLE_POWER.OPERATION_POWER.value < power){ + + SysProject sysProject = sysProjectDao.selectByPrimaryKey(param.getProjectId()); + //将项目改为模板项目 + sysProject.setTemplate((byte)1); + sysProjectDao.insertSelective(sysProject); + + //查找成员相关-删除 + //1.查找项目下成员 + ProMemberExample proMemberExample = new ProMemberExample(); + proMemberExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); + List proMembers = proMemberDao.selectByExample(proMemberExample); + for (ProMember proMember : proMembers) { + proMember.setRecStatus(WebConstant.REC_STATUS.Deleted.value); + proMemberDao.updateByPrimaryKeySelective(proMember); + + //2.删除成角色下的成员 + ProMemberRoleExample proMemberRoleExample = new ProMemberRoleExample(); + proMemberRoleExample.createCriteria().andMemberIdEqualTo(proMember.getId()); + List proMemberRoles = memberRoleDao.selectByExample(proMemberRoleExample); + proMemberRoles.forEach(proMemberRole -> { + proMemberRole.setRecStatus(WebConstant.REC_STATUS.Deleted.value); + memberRoleDao.updateByPrimaryKeySelective(proMemberRole); + }); + + //3.删除成员角色展示表中的相关数据 + ProMemberRoleShowExample proMemberRoleShowExample = new ProMemberRoleShowExample(); + proMemberRoleShowExample.createCriteria().andMemberIdEqualTo(proMember.getId()); + List proMemberRoleShows = memberRoleShowDao.selectByExample(proMemberRoleShowExample); + for (ProMemberRoleShow proMemberRoleShow : proMemberRoleShows) { + proMemberRoleShow.setRecStatus(WebConstant.REC_STATUS.Deleted.value); + memberRoleShowDao.updateByPrimaryKeySelective(proMemberRoleShow); + } + } + + //4.查找关注者相关删除 + UserAttentionExample userAttentionExample = new UserAttentionExample(); + userAttentionExample.createCriteria().andProjectIdEqualTo(param.getProjectId()); + List userAttentions = userAttentionDao.selectByExample(userAttentionExample); + if (CollectionUtil.isNotEmpty(userAttentions)){ + userAttentions.forEach(userAttention -> { + userAttention.setRecStatus(WebConstant.REC_STATUS.Deleted.value); + userAttentionDao.updateByPrimaryKeySelective(userAttention); + }); + } + + }else{ + throw new BaseException(CodeEnum.NOT_POWER); + } + + } + } diff --git a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java index 9258d8d9..a1855567 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java @@ -11,11 +11,9 @@ import com.ccsens.tall.service.IProjectService; import com.ccsens.util.JsonResponse; import com.ccsens.util.WebConstant; import com.ccsens.util.annotation.OperateType; +import com.ccsens.util.bean.dto.QueryDto; import io.jsonwebtoken.Claims; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -323,4 +321,14 @@ public class ProjectController { return JsonResponse.newInstance().ok(); } + + @ApiOperation(value = "将项目转化为模板", notes = "") + @RequestMapping(value = "/projectToTemplate", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse projectToTemplate(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + log.info("将项目转化为模板:{}",params); + projectService.projectToTemplate(params.getParam(),params.getUserId()); + log.info("项目转模板"); + return JsonResponse.newInstance().ok(); + } + }