Parcourir la source

Merge branch 'dev' of http://git.qmth.com.cn/themis/backend-service into dev
111

wangliang il y a 4 ans
Parent
commit
81c5dbf3f7

+ 48 - 30
themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java

@@ -14,6 +14,7 @@ import com.qmth.themis.business.entity.TBOrg;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.entity.TBUser;
 import com.qmth.themis.business.entity.TBUserRole;
+import com.qmth.themis.business.enums.FieldUniqueEnum;
 import com.qmth.themis.business.enums.MqEnum;
 import com.qmth.themis.business.enums.RoleEnum;
 import com.qmth.themis.business.enums.SystemOperationEnum;
@@ -39,6 +40,7 @@ import io.swagger.annotations.*;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -580,40 +582,56 @@ public class TBUserController {
         if (Objects.isNull(mapParameter)) {
             throw new BusinessException(ExceptionResultEnum.USER_INFO_IS_NULL);
         }
-        Gson gson = new Gson();
-        TBUser tbUser = gson.fromJson(gson.toJson(mapParameter), TBUser.class);
-        List<String> roleList = (List<String>) mapParameter.get("roles");
-        Set<String> roleSet = null;
-        if (Objects.nonNull(roleList) && roleList.size() > 0) {
-            roleSet = new HashSet<>(roleList);
-        }
-        if (Objects.isNull(tbUser.getId())) {
-            TBOrg tbOrg = (TBOrg) ServletUtil.getRequestOrg();
-            tbUser.setId(Constants.idGen.next());
-            if (Objects.nonNull(tbOrg)) {
-                tbUser.setOrgId(tbOrg.getId());
+        TBUser tbUser = null;
+        try {
+            Gson gson = new Gson();
+            tbUser = gson.fromJson(gson.toJson(mapParameter), TBUser.class);
+            List<String> roleList = (List<String>) mapParameter.get("roles");
+            Set<String> roleSet = null;
+            if (Objects.nonNull(roleList) && roleList.size() > 0) {
+                roleSet = new HashSet<>(roleList);
             }
-            tbUser.setCreateId(tbUser.getId());
-            if (Objects.nonNull(roleSet) && roleSet.size() > 0) {
-                roleSet.forEach(s -> {
-                    TBUserRole tbUserRole = new TBUserRole(tbUser.getId(), s);
-                    tbUserRoleService.save(tbUserRole);
-                });
+            if (Objects.isNull(tbUser.getId())) {
+                TBOrg tbOrg = (TBOrg) ServletUtil.getRequestOrg();
+                tbUser.setId(Constants.idGen.next());
+                if (Objects.nonNull(tbOrg)) {
+                    tbUser.setOrgId(tbOrg.getId());
+                }
+                tbUser.setCreateId(tbUser.getId());
+                if (Objects.nonNull(roleSet) && roleSet.size() > 0) {
+                    TBUser finalTbUser = tbUser;
+                    roleSet.forEach(s -> {
+                        TBUserRole tbUserRole = new TBUserRole(finalTbUser.getId(), s);
+                        tbUserRoleService.save(tbUserRole);
+                    });
+                }
+            } else {
+                if (Objects.nonNull(roleSet) && roleSet.size() > 0) {
+                    QueryWrapper<TBUserRole> tbUserRoleQueryWrapper = new QueryWrapper<>();
+                    tbUserRoleQueryWrapper.lambda().eq(TBUserRole::getUserId, tbUser.getId());
+                    tbUserRoleService.remove(tbUserRoleQueryWrapper);
+                    TBUser finalTbUser1 = tbUser;
+                    roleSet.forEach(s -> {
+                        TBUserRole tbUserRole = new TBUserRole(finalTbUser1.getId(), s);
+                        tbUserRoleService.save(tbUserRole);
+                    });
+                    cacheService.removeAccountCache(tbUser.getId());
+                }
+                tbUser.setUpdateId(tbUser.getId());
             }
-        } else {
-            if (Objects.nonNull(roleSet) && roleSet.size() > 0) {
-                QueryWrapper<TBUserRole> tbUserRoleQueryWrapper = new QueryWrapper<>();
-                tbUserRoleQueryWrapper.lambda().eq(TBUserRole::getUserId, tbUser.getId());
-                tbUserRoleService.remove(tbUserRoleQueryWrapper);
-                roleSet.forEach(s -> {
-                    TBUserRole tbUserRole = new TBUserRole(tbUser.getId(), s);
-                    tbUserRoleService.save(tbUserRole);
-                });
-                cacheService.removeAccountCache(tbUser.getId());
+            tbUserService.saveOrUpdate(tbUser);
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (e instanceof DuplicateKeyException) {
+                String errorColumn = e.getCause().toString();
+                String columnStr = errorColumn.substring(errorColumn.lastIndexOf("key") + 3, errorColumn.length()).replaceAll("'", "");
+                throw new BusinessException("机构id[" + tbUser.getLoginName() + "]下的" + FieldUniqueEnum.convertToCode(columnStr) + "数据不允许重复插入");
+            } else if (e instanceof BusinessException) {
+                throw new BusinessException(e.getMessage());
+            } else {
+                throw new RuntimeException(e);
             }
-            tbUser.setUpdateId(tbUser.getId());
         }
-        tbUserService.saveOrUpdate(tbUser);
         return ResultUtil.ok(JacksonUtil.parseJson(SystemConstant.SUCCESS));
     }
 

+ 13 - 7
themis-business/src/main/java/com/qmth/themis/business/enums/FieldUniqueEnum.java

@@ -23,7 +23,9 @@ public enum FieldUniqueEnum {
 
     t_e_student_orgId_identity_Idx("证件号"),
 
-    t_b_exam_invigilate_user_orgId_userId_roomCode_Idx("监考员");
+    t_b_exam_invigilate_user_orgId_userId_roomCode_Idx("监考员"),
+
+    t_b_user_loginName_orgId_Idx("用户名");
 
     private String code;
 
@@ -56,6 +58,8 @@ public enum FieldUniqueEnum {
             return t_e_student_orgId_identity_Idx.name();
         } else if (Objects.equals(value.trim(), t_b_exam_invigilate_user_orgId_userId_roomCode_Idx.code)) {
             return t_b_exam_invigilate_user_orgId_userId_roomCode_Idx.name();
+        } else if (Objects.equals(value.trim(), t_b_user_loginName_orgId_Idx.code)) {
+            return t_b_user_loginName_orgId_Idx.name();
         } else {
             return t_e_exam_activity_examId_code_Idx.name();
         }
@@ -68,20 +72,22 @@ public enum FieldUniqueEnum {
      * @return
      */
     public static String convertToCode(String value) {
-        if (Objects.equals(value.trim(), t_e_exam_orgId_code_Idx.name())) {
+        if (value.trim().contains(t_e_exam_orgId_code_Idx.name())) {
             return t_e_exam_orgId_code_Idx.code;
-        } else if (Objects.equals(value.trim(), t_e_exam_course_examId_courseCode_Idx.name())) {
+        } else if (value.trim().contains(t_e_exam_course_examId_courseCode_Idx.name())) {
             return t_e_exam_course_examId_courseCode_Idx.code;
-        } else if (Objects.equals(value.trim(), t_e_exam_paper_examId_code_Idx.name())) {
+        } else if (value.trim().contains(t_e_exam_paper_examId_code_Idx.name())) {
             return t_e_exam_paper_examId_code_Idx.code;
         }
-//        else if (Objects.equals(value.trim(), t_e_exam_student_examId_roomCode_Idx.name())) {
+//        else if (value.trim().contains(t_e_exam_student_examId_roomCode_Idx.name())) {
 //            return t_e_exam_student_examId_roomCode_Idx.code;
 //        }
-        else if (Objects.equals(value.trim(), t_e_student_orgId_identity_Idx.name())) {
+        else if (value.trim().contains(t_e_student_orgId_identity_Idx.name())) {
             return t_e_student_orgId_identity_Idx.code;
-        } else if (Objects.equals(value.trim(), t_b_exam_invigilate_user_orgId_userId_roomCode_Idx.name())) {
+        } else if (value.trim().contains(t_b_exam_invigilate_user_orgId_userId_roomCode_Idx.name())) {
             return t_b_exam_invigilate_user_orgId_userId_roomCode_Idx.code;
+        } else if (value.trim().contains(t_b_user_loginName_orgId_Idx.name())) {
+            return t_b_user_loginName_orgId_Idx.code;
         } else {
             return t_e_exam_activity_examId_code_Idx.code;
         }