deason 1 년 전
부모
커밋
7d8908203c

+ 99 - 35
src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/BatchCreateUserTask.java

@@ -13,6 +13,7 @@ import cn.com.qmth.examcloud.tool.utils.StatusException;
 import cn.com.qmth.examcloud.tool.vo.user.User;
 import com.alibaba.excel.EasyExcel;
 import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,8 +91,57 @@ public class BatchCreateUserTask implements TaskService {
                 user.setPsw(user.getPsw().trim());
             }
 
-            if (!roleMaps.containsKey(user.getRoleName())) {
+            Long roleId = roleMaps.get(user.getRoleName());
+            if (roleId == null) {
                 errMessages.add("第" + (i + 1) + "条 角色内容有误!");
+            } else {
+                user.setRoleId(roleId);
+            }
+
+            if (!this.isAll(user.getRefExam())) {
+                user.setRefExamIds(this.parseLongValues(user.getRefExam()));
+            }
+
+            if (!this.isAll(user.getRefOrg())) {
+                List<String> codes = this.parseValues(user.getRefOrg());
+                List<Long> refOrgIds = new ArrayList<>();
+
+                for (String code : codes) {
+                    Long orgId = orgMaps.get(code);
+                    if (orgId == null) {
+                        orgId = commonService.queryOrgIdByCode(loginUser, code);
+                        if (orgId == null) {
+                            errMessages.add("第" + (i + 1) + "条 机构代码不正确!" + code);
+                        } else {
+                            orgMaps.put(code, orgId);
+                            refOrgIds.add(orgId);
+                        }
+                    } else {
+                        refOrgIds.add(orgId);
+                    }
+                }
+                user.setRefOrgIds(refOrgIds);
+            }
+
+            if (!this.isAll(user.getRefCourse())) {
+                List<String> codes = this.parseValues(user.getRefCourse());
+                List<Long> refCourseIds = new ArrayList<>();
+
+                for (String code : codes) {
+                    Long courseId = courseMaps.get(code);
+                    if (courseId == null) {
+                        courseId = commonService.queryCourseIdByCode(loginUser, code);
+                        if (courseId == null) {
+                            errMessages.add("第" + (i + 1) + "条 课程代码不正确!" + code);
+                        } else {
+                            courseMaps.put(code, courseId);
+                            refCourseIds.add(courseId);
+                        }
+                    } else {
+                        refCourseIds.add(courseId);
+                    }
+                }
+                user.setRefCourseIds(refCourseIds);
             }
         }
 
@@ -102,7 +152,7 @@ public class BatchCreateUserTask implements TaskService {
         int failCount = 0;
         for (int i = 0; i < total; i++) {
             UserInfo user = dataList.get(i);
-            this.createUser(loginUser, user, roleMaps);
+            this.createUser(loginUser, user);
 
             UserInfo existUser = commonService.queryUserByLoginName(loginUser, user.getLoginName());
             if (existUser == null) {
@@ -111,9 +161,10 @@ public class BatchCreateUserTask implements TaskService {
                 continue;
             }
 
-            this.updateDataRuleForExam(loginUser, existUser.getId(), user.getRefExam());
-            this.updateDataRuleForCourse(loginUser, existUser.getId(), user.getRefCourse());
-            this.updateDataRuleForOrg(loginUser, existUser.getId(), user.getRefOrg());
+            user.setId(existUser.getId());
+            this.updateDataRuleForExam(loginUser, user);
+            this.updateDataRuleForCourse(loginUser, user);
+            this.updateDataRuleForOrg(loginUser, user);
 
             log.info("共{}条 第{}条 已执行!{}", total, i + 1, user.getLoginName());
         }
@@ -123,15 +174,11 @@ public class BatchCreateUserTask implements TaskService {
         task.setDescription(msg);
     }
 
-    private void createUser(User loginUser, UserInfo user, Map<String, Long> roleMaps) {
-        String url = loginUser.getServerUrl() + "/api/ecs_core/user";
+    private void createUser(User loginUser, UserInfo user) {
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
 
-        Long roleId = roleMaps.get(user.getRoleName());
-        List<Long> orgIds = this.toLongValues(user.getRefOrg());
-
         Map<String, Object> params = new HashMap<>();
         params.put("rootOrgId", loginUser.getRootOrgId());
         params.put("name", user.getUserName());
@@ -139,12 +186,13 @@ public class BatchCreateUserTask implements TaskService {
         params.put("password", user.getPsw());
         params.put("phoneNumber", user.getPhoneNumber());
         params.put("enable", true);
-        params.put("roleIds", new Long[]{roleId});
-        if (!orgIds.isEmpty()) {
-            params.put("orgId", orgIds.get(0));
+        params.put("roleIds", new Long[]{user.getRoleId()});
+        if (CollectionUtils.isNotEmpty(user.getRefOrgIds())) {
+            params.put("orgId", user.getRefOrgIds().get(0));
         }
 
         try {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/user";
             String result = HttpHelper.post(url, headers, params);
             log.info(result);
         } catch (Exception e) {
@@ -152,76 +200,73 @@ public class BatchCreateUserTask implements TaskService {
         }
     }
 
-    private void updateDataRuleForExam(User loginUser, Long userId, String refExam) {
+    private void updateDataRuleForExam(User loginUser, UserInfo user) {
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
 
-        if (this.isAll(refExam)) {
-            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=EXAM&enabled=true&userId=" + userId;
+        if (this.isAll(user.getRefExam())) {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=EXAM&enabled=true&userId=" + user.getId();
             HttpHelper.post(url, headers, null);
         } else {
-            List<Long> refIds = this.toLongValues(refExam);
-            if (refIds.isEmpty()) {
+            if (CollectionUtils.isEmpty(user.getRefExamIds())) {
                 return;
             }
 
             String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/add";
             Map<String, Object> params = new HashMap<>();
             params.put("type", "EXAM");
-            params.put("userId", userId);
-            params.put("refIds", refIds);
+            params.put("userId", user.getId());
+            params.put("refIds", user.getRefExamIds());
             HttpHelper.post(url, headers, params);
         }
     }
 
-    private void updateDataRuleForCourse(User loginUser, Long userId, String refCourse) {
+    private void updateDataRuleForCourse(User loginUser, UserInfo user) {
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
 
-        if (this.isAll(refCourse)) {
-            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=COURSE&enabled=true&userId=" + userId;
+        if (this.isAll(user.getRefCourse())) {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=COURSE&enabled=true&userId=" + user.getId();
             HttpHelper.post(url, headers, null);
         } else {
-            List<Long> refIds = this.toLongValues(refCourse);
-            if (refIds.isEmpty()) {
+            if (CollectionUtils.isEmpty(user.getRefCourseIds())) {
                 return;
             }
 
             String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/add";
             Map<String, Object> params = new HashMap<>();
             params.put("type", "COURSE");
-            params.put("userId", userId);
-            params.put("refIds", refIds);
+            params.put("userId", user.getId());
+            params.put("refIds", user.getRefCourseIds());
             HttpHelper.post(url, headers, params);
         }
     }
 
-    private void updateDataRuleForOrg(User loginUser, Long userId, String refOrg) {
+    private void updateDataRuleForOrg(User loginUser, UserInfo user) {
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
 
-        if (this.isAll(refOrg)) {
-            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=ORG&enabled=true&userId=" + userId;
+        if (this.isAll(user.getRefOrg())) {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/default/status/update?type=ORG&enabled=true&userId=" + user.getId();
             HttpHelper.post(url, headers, null);
         } else {
-            List<Long> refIds = this.toLongValues(refOrg);
-            if (refIds.isEmpty()) {
+            if (CollectionUtils.isEmpty(user.getRefOrgIds())) {
                 return;
             }
 
             String url = loginUser.getServerUrl() + "/api/ecs_core/user/data/rule/add";
             Map<String, Object> params = new HashMap<>();
             params.put("type", "ORG");
-            params.put("userId", userId);
-            params.put("refIds", refIds);
+            params.put("userId", user.getId());
+            params.put("refIds", user.getRefOrgIds());
             HttpHelper.post(url, headers, params);
         }
     }
 
-    private List<Long> toLongValues(String str) {
+    private List<Long> parseLongValues(String str) {
         if (StringUtils.isBlank(str)) {
             return new ArrayList<>();
         }
@@ -229,6 +274,7 @@ public class BatchCreateUserTask implements TaskService {
         List<Long> values = new ArrayList<>();
         String[] vv = str.split(",");
         for (String v : vv) {
+            v = v.trim();
             if (!StringUtils.isNumeric(v)) {
                 continue;
             }
@@ -238,6 +284,24 @@ public class BatchCreateUserTask implements TaskService {
         return values;
     }
 
+    private List<String> parseValues(String str) {
+        if (StringUtils.isBlank(str)) {
+            return new ArrayList<>();
+        }
+
+        List<String> values = new ArrayList<>();
+        String[] vv = str.split(",");
+        for (String v : vv) {
+            v = v.trim();
+            if (StringUtils.isEmpty(v)) {
+                continue;
+            }
+            values.add(v);
+        }
+
+        return values;
+    }
+
     private boolean isAll(String str) {
         return "全部".equals(str);
     }

+ 9 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/vo/UserInfo.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.List;
 
 @Setter
 @Getter
@@ -20,18 +21,26 @@ public class UserInfo implements Serializable {
     @ExcelProperty(value = "登录名", index = 1)
     private String loginName;
 
+    private Long roleId;
+
     @ExcelProperty(value = "角色", index = 2)
     private String roleName;
 
     @ExcelProperty(value = "考试权限", index = 3)
     private String refExam;
 
+    private List<Long> refExamIds;
+
     @ExcelProperty(value = "课程权限", index = 4)
     private String refCourse;
 
+    private List<Long> refCourseIds;
+
     @ExcelProperty(value = "学习中心权限", index = 5)
     private String refOrg;
 
+    private List<Long> refOrgIds;
+
     @ExcelProperty(value = "密码", index = 6)
     private String psw;
 

+ 2 - 2
src/main/java/cn/com/qmth/examcloud/tool/service/batch_import_exam_student/BatchImportExamStudentTask.java

@@ -106,7 +106,7 @@ public class BatchImportExamStudentTask implements TaskService {
             if (orgId == null) {
                 orgId = commonService.queryOrgIdByCode(loginUser, examStudent.getOrgCode());
                 if (orgId == null) {
-                    errMessages.add("第" + (i + 1) + "条 机构代码不正确!");
+                    errMessages.add("第" + (i + 1) + "条 机构代码不正确!" + examStudent.getOrgCode());
                 } else {
                     orgMaps.put(examStudent.getOrgCode(), orgId);
                 }
@@ -117,7 +117,7 @@ public class BatchImportExamStudentTask implements TaskService {
             if (courseId == null) {
                 courseId = commonService.queryCourseIdByCode(loginUser, examStudent.getCourseCode());
                 if (courseId == null) {
-                    errMessages.add("第" + (i + 1) + "条 课程代码不正确!");
+                    errMessages.add("第" + (i + 1) + "条 课程代码不正确!" + examStudent.getCourseCode());
                 } else {
                     courseMaps.put(examStudent.getCourseCode(), courseId);
                 }

BIN
src/main/resources/templates/import_user.xlsx