Jelajahi Sumber

优化删除功能

hushuyu 4 bulan lalu
induk
melakukan
f090b60ae4

+ 11 - 3
web/src/main/java/cn/seecoder/web/controller/project/ProjectController.java

@@ -87,9 +87,17 @@ public class ProjectController {
     @ApiOperation(value = "删除项目", httpMethod = "DELETE")
     @ApiImplicitParam(name = "projectId", dataType = "int", paramType = "query")
     @DeleteMapping
-    public Response<String> deleteProject(@RequestParam("projectId") Integer projectId) throws ServiceException {
-        projectService.deleteProject(projectId);
-        return Response.buildSuccess("Delete project successfully");
+    public Response<Object> deleteProject(@RequestParam("projectId") Integer projectId, @RequestParam("userId") Long userId) {
+        try{
+            boolean res = projectService.deleteProject(projectId);
+            if(res){
+                return Response.buildSuccess("Delete project successfully");
+            }else{
+                return Response.buildFailure(503,"Delete project failed");
+            }
+        } catch (ServiceException e){
+            return Response.buildFailure(505, String.format("User: %s try to delete failed", userId));
+        }
     }
 
     @ApiOperation(value = "生成项目关联邀请码", httpMethod = "POST")

+ 8 - 2
web/src/main/java/cn/seecoder/web/service/impl/project/ProjectServiceImpl.java

@@ -180,15 +180,21 @@ public class ProjectServiceImpl implements ProjectService {
     }
 
     @Override
-    public void deleteProject(Integer projectId) throws ServiceException {
+    public boolean deleteProject(Integer projectId) throws ServiceException {
         if (projectMapper.getProjectById(projectId) == null) {
             throw new ServiceException(HttpStatus.SC_NOT_FOUND, "项目不存在");
         }
         try {
-            projectMapper.deleteProjectById(projectId);
+            List<Integer> userIds = seecoderGitlabApi.getJoinedUserByProject(projectId);
+            if(userIds.contains(UserService.loginUser().getId())){
+                projectMapper.deleteProjectById(projectId);
+            }else{
+                return false;
+            }
         } catch (Exception e) {
             throw new ServiceException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "删除项目失败", e);
         }
+        return true;
     }
 
     @Override

+ 1 - 1
web/src/main/java/cn/seecoder/web/service/project/ProjectService.java

@@ -34,7 +34,7 @@ public interface ProjectService {
 
     List<UserVO> getProjectMembers(Integer projectId) throws ServiceException;
 
-    void deleteProject(Integer projectId) throws ServiceException;
+    boolean deleteProject(Integer projectId) throws ServiceException;
 
     /**
      * 生成项目关联邀请码