From b42b6b0b77850dccbbf7be13dbe8bba7be48f4ed Mon Sep 17 00:00:00 2001 From: ArgonarioD Date: Tue, 5 Jul 2022 17:51:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E9=9C=80=E6=B1=82?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 ++-- .../controller/TaskController.java | 42 +++--- .../rmdjzz/projectmanagement/entity/Task.java | 15 +- .../service/impl/ProjectGroupServiceImpl.java | 3 +- .../service/impl/TaskServiceImpl.java | 133 +++++++++--------- 5 files changed, 121 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index 8e40e87..4f5219b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,25 @@ # 项目管理模块-后端部分 ---- -任务列表 -- [ ] 用户管理-权限部分 -- [ ] 完成服务器部署 -- [ ] 完成初步接口文档 -- [ ] 任务管理 -- [ ] 需求管理 -- [ ] 团队管理 -- [ ] 个人信息 \ No newline at end of file +task /project/{projectId}/task + +- [ ] 新建工作项 POST / +- [x] 拉取指定father的子工作项 GET /subtask/{fatherId} +- [x] 筛选“我的”工作项 GET /mine +- [ ] 修改工作项信息/状态 PUT / + +name holder starttime endtime priority attachedinfo description status +- [ ] 删除工作项 DELETE / +- [ ] 是否存在孩子 GET /subtask/exist +---- +group /project/{projectId}/group + +- [ ] 拉取当前项目所有组员 GET / +- [ ] 岗位统计 GET +- [ ] 加人 +- [ ] 改岗位 +--- +项目日志 项目统计 + +--- +导入账户 大权限 \ No newline at end of file diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java index 59b59c6..be882b0 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/TaskController.java @@ -15,36 +15,38 @@ import java.util.List; * created at 2022/7/4 15:02 */ @RestController -@RequestMapping("/task") +@RequestMapping("/project/{projectId}/task") public class TaskController { @Autowired private ITaskService taskService; @SneakyThrows - @GetMapping("/{projectId}") - public ResponseList getTaskList(@RequestHeader("Token") String token,@PathVariable Integer projectId){ - List result = taskService.getTaskList(token,projectId,0L); - return ResponseList.ofSuccess("查询成功",result); + @GetMapping("/subtask/{fatherId}") + public ResponseList getSubTaskList( + @RequestHeader("Token") String token, + @PathVariable("projectId") Integer projectId, + @PathVariable("fatherId") Long fatherId + ) { + List result = taskService.getTaskList(token, projectId, fatherId); + return ResponseList.ofSuccess("查询成功", result); } @SneakyThrows - @GetMapping("/getSubTask") - public ResponseList getSubTaskList(@RequestHeader("Token") String token,@RequestParam("projectId") Integer projectId,@RequestParam("fatherId") Long fatherId){ - List result = taskService.getTaskList(token,projectId,fatherId); - return ResponseList.ofSuccess("查询成功",result); + @GetMapping("/mine") + public ResponseList getMyTasks(@RequestHeader("Token") String token, @PathVariable("projectId") Integer projectId) { + List result = taskService.getMyTaskList(token, projectId); + return ResponseList.ofSuccess("查询成功", result); } @SneakyThrows - @GetMapping("/getMyTasks") - public ResponseList getMyTasks(@RequestHeader("Token") String token,@RequestParam("projectId") Integer projectId){ - List result = taskService.getMyTaskList(token,projectId); - return ResponseList.ofSuccess("查询成功",result); - } - - @SneakyThrows - @PostMapping("/createTask") - public ResponseMap createTask(@RequestHeader("Token") String token, @RequestBody Task task){ - task=taskService.insertTask(token,task); - return ResponseMap.ofSuccess("新建成功",task); + @PostMapping + public ResponseMap createTask( + @RequestHeader("Token") String token, + @PathVariable("projectId") Integer projectId, + @RequestBody Task task + ) { + task.setTaskProjectId(projectId); + task = taskService.insertTask(token, task); + return ResponseMap.ofSuccess("新建成功", task); } } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Task.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Task.java index 174bd2f..aea8074 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Task.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Task.java @@ -19,23 +19,22 @@ public class Task { private String taskName; private Integer taskProjectId; private Integer taskHolderId; - private String taskType; + private String taskStatus; private Long taskFatherId; - private LocalDateTime taskBuiltTime; + private LocalDateTime taskCreatedTime; private LocalDateTime taskStartTime; private LocalDateTime taskEndTime; - private LocalDateTime taskCloseTime; + private LocalDateTime taskClosedTime; private Integer taskPriority; private String taskDescription; + private String attachedInfo; //TODO: 验证 @TableField("is_deleted") @TableLogic private Boolean deleted; - public Boolean checkInsert(){ - if(this.getTaskName()==null||this.getTaskName().length()<=0||this.getTaskName().length()>=100) + public Boolean checkInsert() { + if (this.getTaskName() == null || this.getTaskName().length() <= 0 || this.getTaskName().length() >= 100) return false; - if(this.getTaskEndTime().isBefore(this.getTaskStartTime())) - return false; - return true; + return !this.getTaskEndTime().isBefore(this.getTaskStartTime()); } } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java index 8339a7f..1687e5c 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectGroupServiceImpl.java @@ -27,7 +27,8 @@ public class ProjectGroupServiceImpl extends ServiceImpl implements ITaskService { @Autowired private ProjectGroupServiceImpl projectGroupService; + @Override - public List getTaskList(String token,Integer projectId,Long fatherId) throws BadRequestException { - if(projectGroupService.getUserLevelInGroup(token,projectId)==0||fatherId==null){ + public List getTaskList(String token, Integer projectId, Long fatherId) throws BadRequestException { + if (projectGroupService.getUserLevelInGroup(token, projectId) == 0 || fatherId == null) { throw new BadRequestException("错误的访问参数"); } - return baseMapper.selectList(Wrappers.lambdaQuery().eq(Task::getTaskProjectId,projectId).eq(Task::getTaskFatherId,fatherId)); + return baseMapper.selectList(Wrappers.lambdaQuery().eq(Task::getTaskProjectId, projectId).eq(Task::getTaskFatherId, fatherId)); } + //FIXME: @Override public List> getTaskAndSubTask(Long taskId) { List> resList = new ArrayList<>(); List res = new ArrayList<>(); res.add(taskId); resList.add(res); - while(true) { + while (true) { List list = baseMapper.selectList(Wrappers.lambdaQuery().in(Task::getTaskFatherId, res)); - if(list == null || list.isEmpty()) break; + if (list == null || list.isEmpty()) break; res = list.stream().map(Task::getTaskId).collect(Collectors.toList()); resList.add(res); } return resList; } + //FIXME: + @Transactional(isolation = Isolation.SERIALIZABLE, rollbackFor = Exception.class) @Override - public Boolean deleteTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException{ - if(projectGroupService.getUserLevelInGroup(token,projectId)==0) { + public Boolean deleteTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException { + if (projectGroupService.getUserLevelInGroup(token, projectId) == 0) { throw new BadRequestException("错误参数"); } - if(!checkHolder(token, taskId)) { + if (!checkHolder(token, taskId)) { throw new BadRequestException("错误父级参数"); } List> resList = getTaskAndSubTask(taskId); try { - for (List list: resList) { + for (List list : resList) { baseMapper.delete(Wrappers.lambdaQuery().in(Task::getTaskId, list)); } return true; @@ -71,18 +74,19 @@ public class TaskServiceImpl extends ServiceImpl implements IT } } + //FIXME: @Override - public Boolean closeTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException{ - if(projectGroupService.getUserLevelInGroup(token,projectId)==0) { + public Boolean closeTaskAndSubTask(String token, Integer projectId, Long taskId) throws BadRequestException { + if (projectGroupService.getUserLevelInGroup(token, projectId) == 0) { throw new BadRequestException("错误参数"); } - if(!checkHolder(token, taskId)) { + if (!checkHolder(token, taskId)) { throw new BadRequestException("错误父级参数"); } List> resList = getTaskAndSubTask(taskId); try { - for (List list: resList) { - baseMapper.update(null, Wrappers.lambdaUpdate().in(Task::getTaskId, list).set(Task::getTaskType, "关闭")); + for (List list : resList) { + baseMapper.update(null, Wrappers.lambdaUpdate().in(Task::getTaskId, list).set(Task::getTaskStatus, "关闭")); } return true; } catch (Exception e) { @@ -91,91 +95,90 @@ public class TaskServiceImpl extends ServiceImpl implements IT } @Override - public Boolean checkHolder(Integer staffId,Long taskId){ - try{ - Task task=baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId,taskId)); - if(task==null||staffId<=0) + public Boolean checkHolder(Integer staffId, Long taskId) { + try { + Task task = baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId, taskId)); + if (task == null || staffId <= 0) return false; - while(task.getTaskFatherId()!=0){ - if(Objects.equals(task.getTaskHolderId(), staffId)) + while (task.getTaskFatherId() != 0) { + if (Objects.equals(task.getTaskHolderId(), staffId)) return true; - task=baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId,task.getTaskFatherId())); + task = baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId, task.getTaskFatherId())); } return false; - }catch(Exception e){ + } catch (Exception e) { return false; } } + @Override - public Boolean checkHolder(String token,Long taskId){ - try{ - Integer staffId=TokenUtils.getStaffId(token); - Task task=baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId,taskId)); - if(task==null||staffId==null||staffId<=0) - return false; - while(task.getTaskFatherId()!=0){ - if(Objects.equals(task.getTaskHolderId(), staffId)) - return true; - task=baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId,task.getTaskFatherId())); - } - return false; - }catch(Exception e){ + public Boolean checkHolder(String token, Long taskId) { + try { + Integer staffId = TokenUtils.getStaffId(token); + return checkHolder(staffId, taskId); + } catch (Exception e) { return false; } } + @Override - public List getMyTaskList(String token,Integer projectId) throws BadRequestException{ - if(projectGroupService.getUserLevelInGroup(token,projectId)==0){ + public List getMyTaskList(String token, Integer projectId) throws BadRequestException { + if (projectGroupService.getUserLevelInGroup(token, projectId) == 0) { throw new BadRequestException("错误的访问参数"); } Integer staffId = 0; - try{ - staffId= TokenUtils.getStaffId(token); - }catch(TokenException e){ + try { + staffId = TokenUtils.getStaffId(token); + } catch (TokenException e) { //impossible } - return baseMapper.selectList(Wrappers.lambdaQuery().eq(Task::getTaskHolderId,staffId).eq(Task::getTaskProjectId,projectId)); + return baseMapper.selectList(Wrappers.lambdaQuery() + .eq(Task::getTaskHolderId, staffId) + .eq(Task::getTaskProjectId, projectId) + ); } + @Override - public Boolean canBeDone(Long taskId){ - try{ - Task task=baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId,taskId)); - if(task==null||!"打开".equals(task.getTaskType())||!"进行中".equals(task.getTaskType())) + public Boolean canBeDone(Long taskId) { + try { + Task task = baseMapper.selectOne(Wrappers.lambdaQuery().eq(Task::getTaskId, taskId)); + if (task == null || !"打开".equals(task.getTaskStatus()) || !"进行中".equals(task.getTaskStatus())) return false; - List childTask=baseMapper.selectList(Wrappers.lambdaQuery().eq(Task::getTaskFatherId,task.getTaskId())); - if(childTask==null||childTask.isEmpty()) + List childTask = baseMapper.selectList(Wrappers.lambdaQuery().eq(Task::getTaskFatherId, task.getTaskId())); + if (childTask == null || childTask.isEmpty()) return true; - for(Task cTask:childTask){ - if(cTask.getTaskType().equals("打开")||cTask.getTaskType().equals("进行中")) + for (Task cTask : childTask) { + if (cTask.getTaskStatus().equals("打开") || cTask.getTaskStatus().equals("进行中")) return false; } return true; - }catch(Exception e){//需要调整 + } catch (Exception e) {//需要调整 return false; } } + @Override - public Task insertTask(String token,Task task) throws BadRequestException{ + public Task insertTask(String token, Task task) throws BadRequestException { task.setTaskId(null); - Integer userLevel=projectGroupService.getUserLevelInGroup(token,task.getTaskProjectId()); - if(userLevel==0||(userLevel==1&&task.getTaskFatherId()==0)){ + Integer userLevel = projectGroupService.getUserLevelInGroup(token, task.getTaskProjectId()); + if (userLevel == 0 || (userLevel == 1 && task.getTaskFatherId() == 0)) { System.out.println(userLevel); throw new BadRequestException("错误的操作"); } - if(!task.checkInsert()){ + if (!task.checkInsert()) { throw new BadRequestException("工作项参数错误"); } - if(!checkHolder(token,task.getTaskFatherId())){ + if (!checkHolder(token, task.getTaskFatherId())) { throw new BadRequestException("非法的父级参数"); } - try{ - task.setTaskBuiltTime(LocalDateTime.now()); - task.setTaskType("打开"); - task.setTaskCloseTime(null); - if(baseMapper.insert(task)==0){ + try { + task.setTaskCreatedTime(LocalDateTime.now()); + task.setTaskStatus("打开"); + task.setTaskClosedTime(null); + if (baseMapper.insert(task) == 0) { throw new BadRequestException("新建失败"); } - }catch(Exception e){ + } catch (Exception e) { throw new BadRequestException("新建失败"); } return task;