From ef85c9fb60bbe26f5203b679bda20a4d212977af Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 14 Mar 2024 17:35:19 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsl/oa/controllers/ModuleContorller.java | 13 +++++++-- .../jsl/oa/controllers/ProjectController.java | 15 +++++++++- src/main/java/com/jsl/oa/dao/ProjectDAO.java | 8 +++++ .../java/com/jsl/oa/mapper/ModuleMapper.java | 4 +++ .../jsl/oa/model/voData/ProjectFileVO.java | 13 +++++++++ .../com/jsl/oa/services/ModuleService.java | 2 ++ .../com/jsl/oa/services/ProjectService.java | 2 ++ .../oa/services/impl/ModuleServiceImpl.java | 13 +++++++++ .../oa/services/impl/ProjectServiceImpl.java | 29 +++++++++++++++++++ src/main/java/com/jsl/oa/utils/ErrorCode.java | 3 +- 10 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/jsl/oa/model/voData/ProjectFileVO.java diff --git a/src/main/java/com/jsl/oa/controllers/ModuleContorller.java b/src/main/java/com/jsl/oa/controllers/ModuleContorller.java index 02e6936..fe92860 100644 --- a/src/main/java/com/jsl/oa/controllers/ModuleContorller.java +++ b/src/main/java/com/jsl/oa/controllers/ModuleContorller.java @@ -4,9 +4,8 @@ import com.jsl.oa.services.ModuleService; import com.jsl.oa.utils.BaseResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -43,4 +42,12 @@ public class ModuleContorller { return moduleService.getBySysId(sysId,request); } + + + @DeleteMapping("/module/delete/{id}") + public BaseResponse moudleDeleteById( @PathVariable("id") Long id, HttpServletRequest request){ + log.info("请求接口[DELETE]: /module/delete/{id}"); + return moduleService.deleteById(request,id); + } + } diff --git a/src/main/java/com/jsl/oa/controllers/ProjectController.java b/src/main/java/com/jsl/oa/controllers/ProjectController.java index 4f611cb..3e27315 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -176,7 +176,8 @@ public class ProjectController { * @Param projectId: **/ @PutMapping("/project/edit/{projectId}") - public BaseResponse projectEditById(HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, @NotNull BindingResult bindingResult, @PathVariable("projectId") Long projectId) { + public BaseResponse projectEditById(HttpServletRequest request, @RequestBody @Validated ProjectEditVO projectEdit, + @NotNull BindingResult bindingResult, @PathVariable("projectId") Long projectId) { log.info("请求接口[PUT]: /project/edit/{projectId}"); // 判断是否有参数错误 if (bindingResult.hasErrors()) { @@ -290,4 +291,16 @@ public class ProjectController { return projectService.projectToOtherUserForCutting(request, oldUid, pid , newUid); } + + @GetMapping("/project/file") + public BaseResponse getProjectFile(HttpServletRequest request, @RequestParam Long projectId){ + log.info("请求接口[Get]: /project/file"); + //判断是否有参数错误 + if(projectId == null){ + return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR); + } + return projectService.projectFileGet(request,projectId); + } + + } diff --git a/src/main/java/com/jsl/oa/dao/ProjectDAO.java b/src/main/java/com/jsl/oa/dao/ProjectDAO.java index 65e28f9..8162bf4 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -119,6 +119,13 @@ public class ProjectDAO { return projectMapper.setProjectShow(setProjectShow); } + + public ProjectDO getProjectById(Long id){ + log.info("\t> 执行 DAO 层 ProjectDAO.getProjectById 方法"); + log.info("\t\t> 从 MySQL 获取数据"); + return projectMapper.getProjectById(id); + } + public List get(Long userId,Integer listAll,List tags,List isFinish) { log.info("\t> 执行 DAO 层 ProjectDAO.get 方法"); log.info("\t\t> 从 MySQL 获取数据"); @@ -224,4 +231,5 @@ public class ProjectDAO { return projectMapper.tget(id); } + } diff --git a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java index 40f017c..2dc50a9 100644 --- a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java @@ -1,6 +1,7 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.doData.ProjectWorkDO; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -22,4 +23,7 @@ public interface ModuleMapper { @Select("select principal_id from organize_oa.oa_project_work where id=#{sysId}") Long getPidBySysid(Integer sysId); + + @Delete("DELETE FROM organize_oa.oa_project_work WHERE id = #{id}") + void deleteMoudule(Long id); } diff --git a/src/main/java/com/jsl/oa/model/voData/ProjectFileVO.java b/src/main/java/com/jsl/oa/model/voData/ProjectFileVO.java new file mode 100644 index 0000000..54c9df4 --- /dev/null +++ b/src/main/java/com/jsl/oa/model/voData/ProjectFileVO.java @@ -0,0 +1,13 @@ +package com.jsl.oa.model.voData; + +import lombok.Data; + +@Data +public class ProjectFileVO { + + String name; + String uuid; + String link; +} + + diff --git a/src/main/java/com/jsl/oa/services/ModuleService.java b/src/main/java/com/jsl/oa/services/ModuleService.java index de178cd..6e888d2 100644 --- a/src/main/java/com/jsl/oa/services/ModuleService.java +++ b/src/main/java/com/jsl/oa/services/ModuleService.java @@ -11,4 +11,6 @@ public interface ModuleService { BaseResponse getByProjectId(Integer projectId, HttpServletRequest request); BaseResponse getBySysId(Integer sysId, HttpServletRequest request); + + BaseResponse deleteById(HttpServletRequest request, Long id); } diff --git a/src/main/java/com/jsl/oa/services/ProjectService.java b/src/main/java/com/jsl/oa/services/ProjectService.java index 1609bd8..dfb026d 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -41,4 +41,6 @@ public interface ProjectService { BaseResponse projecWorktAdd(HttpServletRequest request, ProjectWorkVO projectWorkVO); BaseResponse tget(Integer id, List tags, List isFinish); + + BaseResponse projectFileGet(HttpServletRequest request, Long projectId); } diff --git a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java index 9066e41..9d0c275 100644 --- a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java @@ -7,6 +7,7 @@ import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.ProjectWorkDO; import com.jsl.oa.services.ModuleService; import com.jsl.oa.utils.BaseResponse; +import com.jsl.oa.utils.ErrorCode; import com.jsl.oa.utils.Processing; import com.jsl.oa.utils.ResultUtil; import lombok.RequiredArgsConstructor; @@ -59,4 +60,16 @@ public class ModuleServiceImpl implements ModuleService { List projectWorkDOList = moduleMapper.getBySysId(sysId,userId,is); return ResultUtil.success(projectWorkDOList); } + + @Override + public BaseResponse deleteById(HttpServletRequest request, Long id) { + + if(!Processing.checkUserIsAdmin(request,roleMapper)){ + return ResultUtil.error(ErrorCode.NOT_PERMISSION); + } + + moduleMapper.deleteMoudule(id); + + return ResultUtil.success("删除成功"); + } } diff --git a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java index ebdd004..334f7cf 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -1,5 +1,9 @@ package com.jsl.oa.services.impl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.UserDAO; @@ -78,6 +82,31 @@ public class ProjectServiceImpl implements ProjectService { return ResultUtil.success(projectDOList); } + @Override + public BaseResponse projectFileGet(HttpServletRequest request, Long projectId) { + + +// 判断项目是否存在 + if(!projectDAO.isExistProjectById(projectId)){ + return ResultUtil.error(ErrorCode.PROJECT_NOT_EXIST); + } + + ProjectDO projectDO = projectDAO.getProjectById(projectId); + + if(projectDO.getFile() == null || projectDO.getFile().equals("{}")){ + return ResultUtil.success(null); + } + + // 将文件内容转换为 JSON 数组 + try { + Object fileJson = new ObjectMapper().readValue(projectDO.getFile(), Object.class); + return ResultUtil.success(fileJson); + } catch (JsonProcessingException e) { + return ResultUtil.error(ErrorCode.PROJECT_FILE_JSON_ERROR); + } + + } + @Override public BaseResponse projectEdit(HttpServletRequest request, @NotNull ProjectEditVO projectEdit, Long projectId) { log.info("\t> 执行 Service 层 ProjectService.projectEdit 方法"); diff --git a/src/main/java/com/jsl/oa/utils/ErrorCode.java b/src/main/java/com/jsl/oa/utils/ErrorCode.java index e790b0a..58098e2 100755 --- a/src/main/java/com/jsl/oa/utils/ErrorCode.java +++ b/src/main/java/com/jsl/oa/utils/ErrorCode.java @@ -50,7 +50,8 @@ public enum ErrorCode { DATABASE_DELETE_ERROR("DatabaseDeleteError", 50012, "数据库删除错误"), PROJECT_NOT_EXIST("ProjectNotExist", 40016, "项目不存在"), PROJECT_CUTTING_NOT_EXIST("ProjectCuttingNotExist", 40017, "项目分割模块不存在"), - PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"); + PROJECT_USER_NOT_EXIST("ProjectUserNotExist", 40018, "用户项目表无对应记录"), + PROJECT_FILE_JSON_ERROR("ProjectFileJsonError", 40019, "项目文件json格式错误"); private final String output; From 5ccc846ab90a618ac25d8e54acdfdc9ac681419c Mon Sep 17 00:00:00 2001 From: xiangZr-hhh <“2774915446@qq.com”> Date: Thu, 14 Mar 2024 19:07:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AD=90=E6=A8=A1=E5=9D=97=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsl/oa/mapper/ModuleMapper.java | 3 +++ .../jsl/oa/services/impl/ModuleServiceImpl.java | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java index 2dc50a9..15b638c 100644 --- a/src/main/java/com/jsl/oa/mapper/ModuleMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ModuleMapper.java @@ -26,4 +26,7 @@ public interface ModuleMapper { @Delete("DELETE FROM organize_oa.oa_project_work WHERE id = #{id}") void deleteMoudule(Long id); + + @Select("select * from organize_oa.oa_project_work where pid=#{id} and is_delete=0 and type=1 ") + List getAllMoudleByPid(Long id); } diff --git a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java index 9d0c275..161d0e9 100644 --- a/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ModuleServiceImpl.java @@ -61,15 +61,30 @@ public class ModuleServiceImpl implements ModuleService { return ResultUtil.success(projectWorkDOList); } + @Override public BaseResponse deleteById(HttpServletRequest request, Long id) { +// 检测是否为管理员 if(!Processing.checkUserIsAdmin(request,roleMapper)){ return ResultUtil.error(ErrorCode.NOT_PERMISSION); } - moduleMapper.deleteMoudule(id); + deleteMoudule(id); return ResultUtil.success("删除成功"); } + +// 删除子模块方法 + public void deleteMoudule(Long id){ + //获取所有父Id=id的子模块 + List projectWorkDOS = moduleMapper.getAllMoudleByPid(id); + + for(ProjectWorkDO workDO: projectWorkDOS){ + deleteMoudule(workDO.getId()); + } + + moduleMapper.deleteMoudule(id); + } + } From 3101ed371b391a7fb48667bdb62fd6b3821019a4 Mon Sep 17 00:00:00 2001 From: 176yunxuan <362612387@qq.com~> Date: Thu, 14 Mar 2024 20:54:04 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AD=90=E7=B3=BB=E7=BB=9F=E5=AD=90?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsl/oa/model/voData/ProjectWorkVO.java | 2 +- .../resources/com/jsl/oa/mapper/ProjectMapper.xml | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/jsl/oa/model/voData/ProjectWorkVO.java b/src/main/java/com/jsl/oa/model/voData/ProjectWorkVO.java index 18eac73..b22ebdd 100644 --- a/src/main/java/com/jsl/oa/model/voData/ProjectWorkVO.java +++ b/src/main/java/com/jsl/oa/model/voData/ProjectWorkVO.java @@ -11,7 +11,7 @@ public class ProjectWorkVO { private Long pid; @NotNull(message = "项目id不能为空") private Long projectId; - @NotNull(message = "负责人id不能为空") + private Long principalId; @NotNull(message = "周期不能为空") private Integer cycle; diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml index 6367033..b2c7616 100644 --- a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml +++ b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml @@ -48,7 +48,7 @@ - select * from organize_oa.oa_project where is_delete=false + select * from organize_oa.oa_project where is_delete=false and status=1 and id=#{id} + + - select * from organize_oa.oa_project where id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId} or principal_id is null) and is_finish in + select * from organize_oa.oa_project where + + (principal_id = #{userId} and is_delete=false) or + + id in(select project_id from organize_oa.oa_project_work where is_delete=false and (principal_id=#{userId}) and is_finish in #{Finish} + + + + + +