Quellcode durchsuchen

增加同步小组成员功能

hushuyu vor 4 Monaten
Ursprung
Commit
1623bb2831

+ 7 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/ProjectService.java

@@ -93,4 +93,11 @@ public interface ProjectService {
      * @return JSONObject course: Array(projects)
      */
     JSONObject findAllPublicProjectsGroupByCourse();
+
+    /**
+     * 同步小组成员到项目
+     *
+     * @param projectId Integer
+     */
+    void syncProjectMembers(Integer projectId);
 }

+ 29 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/ProjectServiceImpl.java

@@ -211,6 +211,35 @@ public class ProjectServiceImpl implements ProjectService {
         return result;
     }
 
+    @Override
+    public void syncProjectMembers(Integer projectId) {
+        CourseProject courseProject = courseProjectRepository.findById(projectId)
+                .orElseThrow(CustomErrorException::courseProjectNotFound);
+        List<UserVO> members;
+        try {
+            members = groupService.findGroup(courseProject.getCourse().getId()).getMembers();
+        } catch (Exception e) {
+            members = new ArrayList<>();
+        }
+
+        JSONArray existingMembers = this.findProjectMembers(projectId);
+        List<String> existingPhones = new ArrayList<>();
+        if (existingMembers != null) {
+            for (Object o : existingMembers) {
+                JSONObject member = (JSONObject) o;
+                if (member.containsKey("phone")) {
+                    existingPhones.add(member.getString("phone"));
+                }
+            }
+        }
+
+        for (UserVO member : members) {
+            if (!existingPhones.contains(member.getPhone())) {
+                this.addProjectMember(projectId, member.getPhone());
+            }
+        }
+    }
+
     private void addProjectMember(Integer projectId, String phone) {
         JSONObject devcloudRes = devcloudService.addMember(projectId, phone);
         log.info("devcloudService.addMember: {}", devcloudRes);

+ 7 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/ProjectController.java

@@ -79,6 +79,13 @@ public class ProjectController {
         return OkResponse.of(projectService.deleteProject(projectId));
     }
 
+    @ApiOperation(value = "同步小组成员", httpMethod = "POST")
+    @PostMapping("/syncMembers")
+    public OkResponse<String> syncProjectMembers(@RequestParam Integer projectId) {
+        projectService.syncProjectMembers(projectId);
+        return OkResponse.of("Sync members successfully");
+    }
+
     @ApiOperation(value = "查找全部公开项目", httpMethod = "GET")
     @GetMapping("/findAllPublicGroupByCourse")
     public OkResponse<JSONObject> findAllPublicProjectsGroupByCourse(){