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..ef5bef1 100755 --- a/src/main/java/com/jsl/oa/controllers/ProjectController.java +++ b/src/main/java/com/jsl/oa/controllers/ProjectController.java @@ -73,9 +73,10 @@ public class ProjectController { public BaseResponse projectWorkGet(@RequestParam(required = false) Integer listAll, @RequestParam(required = false) List tags, @RequestParam(required = false) List isFinish, + @RequestParam(required = false) Integer is, HttpServletRequest request) { log.info("请求接口[GET]: /project/work/get"); - return projectService.workget(listAll, request, tags, isFinish); + return projectService.workget(listAll, request, tags, isFinish,is); } /** @@ -176,7 +177,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 +292,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 fc89dc7..af26e32 100644 --- a/src/main/java/com/jsl/oa/dao/ProjectDAO.java +++ b/src/main/java/com/jsl/oa/dao/ProjectDAO.java @@ -5,7 +5,6 @@ import com.jsl.oa.mapper.ProjectMapper; import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.ProjectUserDO; -import com.jsl.oa.model.doData.ProjectWorkDO; import com.jsl.oa.model.doData.info.ProjectShowDO; import com.jsl.oa.model.voData.ProjectEditVO; import com.jsl.oa.model.voData.ProjectInfoVO; @@ -119,6 +118,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 获取数据"); @@ -135,19 +141,19 @@ public class ProjectDAO { } } - public List workget(Long userId, Integer listAll, List tags, List isFinish) { + public List workget(Long userId, Integer listAll, List tags, List isFinish, Integer is) { log.info("\t> 执行 DAO 层 ProjectDAO.workget 方法"); log.info("\t\t> 从 MySQL 获取数据"); if(isFinish != null && !isFinish.isEmpty()){ - return projectMapper.workgetByIsfinish(userId,isFinish); + return projectMapper.workgetByIsfinish(userId,isFinish,is); } if(tags != null && !tags.isEmpty()){ - return projectMapper.workgetByTags(userId,tags); + return projectMapper.workgetByTags(userId,tags,is); } if(listAll == 0) { - return projectMapper.workget(userId); + return projectMapper.workget(userId,is); }else { - return projectMapper.workget1(userId); + return projectMapper.workget1(userId,is); } } @@ -212,7 +218,7 @@ public class ProjectDAO { } - public List tget(Integer id, List isFinish, List tags) { + public List tget(Integer id,List isFinish,List tags) { log.info("DAO层"); if(isFinish != null && !isFinish.isEmpty()){ return projectMapper.tgetByIsfinish(isFinish); @@ -220,6 +226,9 @@ public class ProjectDAO { if(tags != null && !tags.isEmpty()){ return projectMapper.tgetBytags(tags); } + 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..15b638c 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,10 @@ 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); + + @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/mapper/ProjectMapper.java b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java index 87fe984..8c15166 100644 --- a/src/main/java/com/jsl/oa/mapper/ProjectMapper.java +++ b/src/main/java/com/jsl/oa/mapper/ProjectMapper.java @@ -3,7 +3,6 @@ package com.jsl.oa.mapper; import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; import com.jsl.oa.model.doData.ProjectUserDO; -import com.jsl.oa.model.doData.ProjectWorkDO; import com.jsl.oa.model.voData.ProjectInfoVO; import com.jsl.oa.model.voData.ProjectWorkVO; import org.apache.ibatis.annotations.*; @@ -87,16 +86,16 @@ public interface ProjectMapper { //@Select("select * from organize_oa.oa_project_work where is_finish=#{isFinish} and is_delete=false and principal_id =#{userId}") - List workgetByIsfinish(Long userId, List isFinish); + List workgetByIsfinish(Long userId, List isFinish, Integer is); - List workgetByTags(Long userId, List tags); + List workgetByTags(Long userId, List tags, Integer is); - @Select("select * from organize_oa.oa_project where id in(select project_id from " + - "organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)") - List workget(Long userId); + //@Select("select * from organize_oa.oa_project where id in(select project_id from " + + //"organize_oa.oa_project_work where is_delete=false and status =1 and principal_id=#{userId} and type=0)") + List workget(Long userId, Integer is); - @Select("select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}") - List workget1(Long userId); + //@Select("select * from organize_oa.oa_project_work where status=1 and principal_id=#{userId}") + List workget1(Long userId, Integer is); List tget(Integer 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/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/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..2a50a9b 100644 --- a/src/main/java/com/jsl/oa/services/ProjectService.java +++ b/src/main/java/com/jsl/oa/services/ProjectService.java @@ -36,9 +36,11 @@ public interface ProjectService { BaseResponse projectToOtherUserForCutting(HttpServletRequest request, Long oldUid, Long pid, Long newUid); - BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish); + BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is); 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..161d0e9 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,31 @@ 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); + } + + 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); + } + } 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..6c976b7 100644 --- a/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java +++ b/src/main/java/com/jsl/oa/services/impl/ProjectServiceImpl.java @@ -1,12 +1,13 @@ package com.jsl.oa.services.impl; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.jsl.oa.annotations.CheckUserHasPermission; import com.jsl.oa.dao.ProjectDAO; import com.jsl.oa.dao.UserDAO; import com.jsl.oa.mapper.RoleMapper; import com.jsl.oa.model.doData.ProjectCuttingDO; import com.jsl.oa.model.doData.ProjectDO; -import com.jsl.oa.model.doData.ProjectWorkDO; import com.jsl.oa.model.doData.UserDO; import com.jsl.oa.model.doData.info.ProjectShowDO; import com.jsl.oa.model.voData.*; @@ -78,6 +79,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 方法"); @@ -243,29 +269,29 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish) { + public BaseResponse workget(Integer listAll, HttpServletRequest request, List tags, List isFinish, Integer is) { log.info("\t> 执行 Service 层 ProjectService.workget 方法"); //获取用户 Long userId = Processing.getAuthHeaderToUserId(request); //根据状态查询 if (isFinish != null && !isFinish.isEmpty()) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is); return ResultUtil.success(projectDOList); } //根据标签查询 if (tags != null && !tags.isEmpty()) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is); return ResultUtil.success(projectDOList); } //判断是否是老师(项目负责人) if (listAll != null && Processing.checkUserIsTeacher(request, roleMapper)) { - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is); return ResultUtil.success(projectDOList); } else { listAll = 0; - List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish); + List projectDOList = projectDAO.workget(userId, listAll, tags, isFinish,is); return ResultUtil.success(projectDOList); } } 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; diff --git a/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml b/src/main/resources/com/jsl/oa/mapper/ProjectMapper.xml index 6367033..92dccd5 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 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} + + + + + +