Browse Source

feat: 添加组员

mjh 4 years ago
parent
commit
4c80d49dfd

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/GroupService.java

@@ -42,7 +42,7 @@ public interface GroupService {
      * @param groupMemberVO GroupMemberVO
      * @return GroupMemberVO
      */
-    GroupMemberVO addGroupMember(GroupMemberVO groupMemberVO);
+    GroupDTO addGroupMember(GroupMemberVO groupMemberVO);
 
     /**
      * 查找某个课程小组

+ 7 - 5
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/GroupServiceImpl.java

@@ -81,11 +81,12 @@ public class GroupServiceImpl implements GroupService {
 
     @Override
     @Transactional(rollbackFor = RuntimeException.class)
-    public GroupMemberVO addGroupMember(GroupMemberVO groupMemberVO) {
-        String tableName = getGroupMemberTableName(groupMemberVO.getCourseId());
+    public GroupDTO addGroupMember(GroupMemberVO groupMemberVO) {
+        Long courseId = groupMemberVO.getCourseId();
+        String tableName = getGroupMemberTableName(courseId);
         DomainUserDetails user = SecurityUtils.getCurrentUser();
         // 验证选课
-        if (!courseService.checkSelection(user.getId(), groupMemberVO.getCourseId())) {
+        if (!courseService.checkSelection(user.getId(), courseId)) {
             throw CustomErrorException.courseSelectionNotFound();
         }
         // 验证尚未加入小组
@@ -93,7 +94,7 @@ public class GroupServiceImpl implements GroupService {
             throw CustomErrorException.groupMemberAlreadyExists();
         }
         // 验证小组未满员
-        GroupRule groupRule = groupRuleRepository.findByCourse_Id(groupMemberVO.getCourseId())
+        GroupRule groupRule = groupRuleRepository.findByCourse_Id(courseId)
                 .orElseThrow(CustomErrorException::groupRuleNotFound);
         int currentSize = groupMemberRepository.findByGroupId(tableName, groupMemberVO.getGroupId()).size();
         if (currentSize == groupRule.getMaxSize()) {
@@ -103,7 +104,8 @@ public class GroupServiceImpl implements GroupService {
         GroupMember groupMember = groupMemberMapper.toGroupMember(groupMemberVO);
         groupMemberRepository.createGroupMember(tableName, groupMember);
         log.info("Create GroupMember: {}", groupMember);
-        return groupMemberMapper.toGroupMemberVO(groupMember);
+        Group group = groupRepository.findGroupById(getGroupTableName(courseId), groupMemberVO.getGroupId());
+        return generateGroupDTO(courseId, group);
     }
 
     @Override

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

@@ -137,6 +137,14 @@ public class ProjectServiceImpl implements ProjectService {
 
     @Override
     public JSONObject forkPublicProject(Integer projectId) {
+        // 验证项目存在且公共
+        CourseProject courseProject = courseProjectRepository.findById(projectId)
+                .orElseThrow(CustomErrorException::courseProjectNotFound);
+        if(!courseProject.getPublic()){throw CustomErrorException.courseSelectionNotFound();}
+        // 验证当前用户已选课
+        if(!courseService.checkSelection(SecurityUtils.getCurrentUser().getId(), courseProject.getCourse().getId())){
+            throw CustomErrorException.unauthorizedUser();
+        }
         return null;
     }
 

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/web/rest/GroupController.java

@@ -38,7 +38,7 @@ public class GroupController {
     }
 
     @PostMapping("/member/add")
-    public OkResponse<GroupMemberVO> addGroupMember(@RequestBody GroupMemberVO groupMemberVO){
+    public OkResponse<GroupDTO> addGroupMember(@RequestBody GroupMemberVO groupMemberVO){
         return OkResponse.of(groupService.addGroupMember(groupMemberVO));
     }
 

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

@@ -66,4 +66,10 @@ public class ProjectController {
     public OkResponse<JSONArray> findProjectMembers(@RequestParam Integer id) {
         return OkResponse.of(projectService.findProjectMembers(id));
     }
+
+    @ApiOperation(value = "Fork公开项目", httpMethod = "POST")
+    @PostMapping("/fork")
+    public OkResponse<JSONObject> forkProject(@RequestParam Integer projectId){
+        return OkResponse.of(projectService.forkPublicProject(projectId));
+    }
 }