diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectController.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectController.java index d31c5cc..3ad20ba 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectController.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/controller/ProjectController.java @@ -82,7 +82,6 @@ public class ProjectController { return ResponseMap.ofSuccess("操作成功"); } - //TODO:该业务尚未实现 @SneakyThrows @PutMapping("/{projectId}") public ResponseMap updateProject( @@ -90,9 +89,10 @@ public class ProjectController { @PathVariable Integer projectId, @RequestBody Project project ) { - //project.setProjectId(projectId); - //projectService.updateById(project); - //return ResponseMap.ofSuccess("操作成功"); - return null; + project.setProjectId(projectId); + if (!projectService.checkOpenStatus(projectId)) + throw new BadRequestException("项目未开放"); + projectService.updateProject(token, project); + return ResponseMap.ofSuccess("操作成功"); } } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Project.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Project.java index 73dca01..da09f17 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Project.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/entity/Project.java @@ -10,6 +10,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.Objects; /** * @author 阳勇权 @@ -20,7 +21,6 @@ public class Project { @TableId(type = IdType.AUTO) private Integer projectId; private String projectName; - //TODO: 时间线顺序判断 private LocalDate projectStartDate; private LocalDate projectOnlineDate; private LocalDate projectFirstTestDate; @@ -47,14 +47,39 @@ public class Project { private LocalDateTime projectCreatedTime; private LocalDate projectClosedDate; - Boolean checkProjectDate() { - if(!TimeUtils.validateTimeLine(projectStartDate, projectFirstTestDate, projectClosedDate, projectEndDate)) { + public Boolean checkProjectDate() { + if (!TimeUtils.validateTimeLine(projectStartDate, projectFirstTestDate, projectClosedDate, projectEndDate)) { return false; } - if(!TimeUtils.validateTimeLine(projectStartDate, projectOnlineDate)) { + if (!TimeUtils.validateTimeLine(projectStartDate, projectOnlineDate)) { return false; } return true; } + public Boolean checkModification(Project rawProject) { + if (!this.checkProjectDate()) + return false; + if (!Objects.equals(this.getProjectId(), rawProject.getProjectId())) + return false; + if (!Objects.equals(this.getProjectCreator(), rawProject.getProjectCreator())) + return false; + if (!Objects.equals(this.getProjectCreatedTime(), rawProject.getProjectCreatedTime())) + return false; + if (!Objects.equals(this.getProjectName(), rawProject.getProjectName())) + return false; + if (!Objects.equals(this.getProjectClassId(), rawProject.getProjectClassId())) + return false; + if (!Objects.equals(this.getProjectSubclassId(), rawProject.getProjectSubclassId())) + return false; + if (!Objects.equals(this.getProjectDepartment(), rawProject.getProjectDepartment())) + return false; + if (!Objects.equals(this.getProjectCompany(), rawProject.getProjectCompany())) + return false; + if (!Objects.equals(this.getProjectArea(), rawProject.getProjectArea())) + return false; + this.setDeleted(false); + this.setCompleted(false); + return true; + } } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectService.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectService.java index 920aaec..6849d4b 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectService.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/IProjectService.java @@ -24,4 +24,6 @@ public interface IProjectService extends IService { Boolean createProject(String token, Project project) throws BadRequestException; Boolean checkOpenStatus(Integer projectId); + + Boolean updateProject(String token, Project project) throws BadRequestException; } diff --git a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectServiceImpl.java b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectServiceImpl.java index 2b02783..50153cb 100644 --- a/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectServiceImpl.java +++ b/src/main/java/cn/edu/hfut/rmdjzz/projectmanagement/service/impl/ProjectServiceImpl.java @@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.Map; import java.util.Objects; @@ -76,8 +77,7 @@ public class ProjectServiceImpl extends ServiceImpl impl if (project.getExpectedCompletion() == null) { project.setExpectedCompletion((short) 100); } else if (project.getExpectedCompletion() < 0 || project.getExpectedCompletion() > 100 || - project.getProjectStartDate() == null || project.getProjectEndDate() == null || - project.getProjectStartDate().isAfter(project.getProjectEndDate()) + !project.checkProjectDate() || project.getProjectManMonth().compareTo(new BigDecimal("0")) == -1 ) { throw new BadRequestException("参数错误"); } @@ -100,4 +100,22 @@ public class ProjectServiceImpl extends ServiceImpl impl Project project = baseMapper.selectOne(Wrappers.lambdaQuery().eq(Project::getProjectId, projectId)); return project != null && !project.getCompleted(); } + + public Boolean updateProject(String token, Project project) throws BadRequestException { + Integer staffId = TokenUtils.getStaffId(token); + if (!staffId.equals(project.getProjectCreator())) { + throw new BadRequestException("无权操作"); + } + Project rawProject = baseMapper.selectOne(Wrappers.lambdaQuery().eq(Project::getProjectId, project.getProjectId())); + if (!project.checkModification(rawProject)) { + throw new BadRequestException("参数错误"); + } + try { + if (baseMapper.updateById(project) == 1) + return true; + throw new BadRequestException("修改失败"); + } catch (Exception e) { + throw new BadRequestException("修改失败"); + } + } }