Преглед изворни кода

feat: 添加查看关联的所有项目

zhaoxingrui пре 4 година
родитељ
комит
676e4886f9

+ 8 - 0
web/src/main/java/cn/seecoder/web/controller/project/ProjectController.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import cn.seecoder.common.exceptions.ServiceException;
@@ -90,4 +91,11 @@ public class ProjectController {
     public Response generaterelateCode(@RequestParam("projectId") Integer projectId,@RequestParam("relateCode") String relateCode) {
         return Response.buildSuccess(projectService.relateProjects(projectId,relateCode));
     }
+
+    @ApiOperation(value = "查看一个项目关联的所有项目", httpMethod = "GET")
+    @GetMapping("/relate/{projectId}")
+    @ApiImplicitParam(name = "projectId", dataType = "int", paramType = "query")
+    public Response<List<ProjectVO>> getRelatedProject(@PathVariable("projectId") Integer projectId) {
+        return Response.buildSuccess(projectService.getRelatedProjects(projectId));
+    }
 }

+ 1 - 0
web/src/main/java/cn/seecoder/web/infrastructure/config/WebSecurityConfig.java

@@ -109,6 +109,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers(HttpMethod.POST, "/project/members").access("@authTools.checkProjOwnershipParam(request)")
                 .antMatchers(HttpMethod.POST, "/project/relate/code").access("@authTools.checkProjOwnershipParam(request)")
                 .antMatchers(HttpMethod.POST, "/project/relate").access("@authTools.checkProjOwnershipParam(request)")
+                .antMatchers(HttpMethod.GET, "/project/relate/{projectId}").authenticated()
                 // SQL Controller
                 .antMatchers(HttpMethod.GET, "/sql/instances").access("@authTools.checkProjOwnershipParam(request)")
                 .antMatchers(HttpMethod.POST, "/sql/exec").authenticated()

+ 3 - 2
web/src/main/java/cn/seecoder/web/model/po/project/ProjectRelatedPO.java

@@ -1,7 +1,6 @@
 package cn.seecoder.web.model.po.project;
 
-import lombok.Builder;
-import lombok.Data;
+import lombok.*;
 
 /**
  * @author PuHong Weng
@@ -11,6 +10,8 @@ import lombok.Data;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class ProjectRelatedPO {
 
     Integer id;

+ 12 - 0
web/src/main/java/cn/seecoder/web/service/impl/project/ProjectServiceImpl.java

@@ -145,4 +145,16 @@ public class ProjectServiceImpl implements ProjectService {
                 .projectIdB(result[0].intValue()).build(), "id");
         return "关联项目成功";
     }
+
+    @Override
+    public List<ProjectVO> getRelatedProjects(Integer projectId) {
+        List<ProjectRelatedPO> projectRelatedPOS = projectRelatedMapper.selectByProjectId(projectId);
+        List<Integer> projectIds = new ArrayList<>();
+        for (ProjectRelatedPO projectRelatedPO : projectRelatedPOS) {
+            int projectIdA = projectRelatedPO.getProjectIdA();
+            int projectIdB = projectRelatedPO.getProjectIdB();
+            projectIds.add(projectIdA == projectId ? projectIdB : projectIdA);
+        }
+        return projectIds.size() == 0 ? new ArrayList<>() : projectMapper.selectByIds(projectIds).stream().map(ProjectVO::new).collect(Collectors.toList());
+    }
 }

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

@@ -44,4 +44,11 @@ public interface ProjectService {
      */
     String relateProjects(Integer projectId, String relateCode);
 
+    /**
+     * 获取一个项目关联的所有项目信息
+     * @param projectId
+     * @return
+     */
+    List<ProjectVO> getRelatedProjects(Integer projectId);
+
 }