mjh 3 rokov pred
rodič
commit
9226bf1fa4

+ 5 - 0
seecoder-portal-server/pom.xml

@@ -146,6 +146,11 @@
             <artifactId>httpmime</artifactId>
             <version>4.5.13</version>
         </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>42.3.6</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 2 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/repository/group/GroupMemberRepository.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.postgresql.util.PSQLException;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -35,7 +36,7 @@ public interface GroupMemberRepository extends BaseMapper<GroupMember> {
      * @return GroupMember
      */
     @Select("select * from ${name} where user_id=${userId}")
-    GroupMember findByUserId(@Param("name") String name, @Param("userId") Long userId);
+    GroupMember findByUserId(@Param("name") String name, @Param("userId") Long userId) throws PSQLException;
 
     /**
      * 新建课程小组成员

+ 23 - 13
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/serviceImpl/GroupServiceImpl.java

@@ -19,6 +19,7 @@ import cn.seecoder.seecoderportalserver.service.CourseService;
 import cn.seecoder.seecoderportalserver.service.GroupService;
 import cn.seecoder.seecoderportalserver.service.UserService;
 import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
+import org.postgresql.util.PSQLException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -63,8 +64,12 @@ public class GroupServiceImpl implements GroupService {
             throw CustomErrorException.courseSelectionNotFound();
         }
         // 验证尚未加入小组
-        if (groupMemberRepository.findByUserId(getGroupMemberTableName(groupVO.getCourseId()), user.getId()) != null) {
-            throw CustomErrorException.groupMemberAlreadyExists();
+        try {
+            if (groupMemberRepository.findByUserId(getGroupMemberTableName(groupVO.getCourseId()), user.getId()) != null) {
+                throw CustomErrorException.groupMemberAlreadyExists();
+            }
+        } catch (PSQLException e) {
+            throw new RuntimeException(e);
         }
         // 创建小组
         Group group = groupMapper.toGroup(groupVO);
@@ -90,8 +95,12 @@ public class GroupServiceImpl implements GroupService {
             throw CustomErrorException.courseSelectionNotFound();
         }
         // 验证尚未加入小组
-        if (groupMemberRepository.findByUserId(tableName, userId) != null) {
-            throw CustomErrorException.groupMemberAlreadyExists();
+        try {
+            if (groupMemberRepository.findByUserId(tableName, userId) != null) {
+                throw CustomErrorException.groupMemberAlreadyExists();
+            }
+        } catch (PSQLException e) {
+            throw new RuntimeException(e);
         }
         // 验证小组未满员
         GroupRule groupRule = groupRuleRepository.findByCourse_Id(courseId)
@@ -109,21 +118,22 @@ public class GroupServiceImpl implements GroupService {
     }
 
     @Override
-    public GroupDTO findGroup(Long courseId) throws CustomErrorException{
+    public GroupDTO findGroup(Long courseId) throws CustomErrorException {
         DomainUserDetails user = SecurityUtils.getCurrentUser();
         if (!courseService.checkSelection(user.getId(), courseId)) {
             throw CustomErrorException.courseSelectionNotFound();
         }
-        GroupMember groupMember = groupMemberRepository.findByUserId(
-                getGroupMemberTableName(courseId),
-                user.getId());
-        if (groupMember == null) {
+        try {
+            GroupMember groupMember = groupMemberRepository.findByUserId(
+                    getGroupMemberTableName(courseId),
+                    user.getId());
+            Group group = groupRepository.findGroupById(
+                    getGroupTableName(courseId),
+                    groupMember.getGroupId());
+            return generateGroupDTO(courseId, group);
+        } catch (PSQLException e) {
             throw CustomErrorException.groupNotFound();
         }
-        Group group = groupRepository.findGroupById(
-                getGroupTableName(courseId),
-                groupMember.getGroupId());
-        return generateGroupDTO(courseId, group);
     }
 
     @Override

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

@@ -1,6 +1,5 @@
 package cn.seecoder.seecoderportalserver.serviceImpl;
 
-import cn.seecoder.seecoderportalcommon.vo.UserRole;
 import cn.seecoder.seecoderportalcommon.vo.UserVO;
 import cn.seecoder.seecoderportalserver.domain.CourseProject;
 import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
@@ -15,6 +14,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.BadSqlGrammarException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -159,7 +159,7 @@ public class ProjectServiceImpl implements ProjectService {
         List<UserVO> members;
         try {
             members = groupService.findGroup(courseProject.getCourse().getId()).getMembers();
-        } catch (CustomErrorException e) {
+        } catch (BadSqlGrammarException e) {
             members = new ArrayList<>();
         }
         if (members.size() != 0) {