deason 1 سال پیش
والد
کامیت
902ea4f6ac

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/tool/enums/TaskType.java

@@ -2,7 +2,7 @@ package cn.com.qmth.examcloud.tool.enums;
 
 import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.batch_import_exam_student.BatchImportExamStudentTask;
-import cn.com.qmth.examcloud.tool.service.batch_update_user.BatchCreateUserTask;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.BatchCreateUserTask;
 import cn.com.qmth.examcloud.tool.service.config_exam_paper.ConfigExamPaperTask;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.CreateRandomPaperTemplateTask;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.ExportStudentAnswerAndScoreDetailTask;

+ 54 - 7
src/main/java/cn/com/qmth/examcloud/tool/service/CommonService.java

@@ -2,6 +2,8 @@ package cn.com.qmth.examcloud.tool.service;
 
 import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.RoleInfo;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.UserInfo;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.utils.JsonMapper;
@@ -9,6 +11,7 @@ import cn.com.qmth.examcloud.tool.vo.Pager;
 import cn.com.qmth.examcloud.tool.vo.user.User;
 import com.fasterxml.jackson.core.type.TypeReference;
 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;
@@ -60,15 +63,15 @@ public class CommonService {
      * 获取考试相关的课程列表
      */
     public List<CourseVO> getExamCourseList(User loginUser, Long examId) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
         Map<String, Object> params = new HashMap<>();
         params.put("examId", examId);
         params.put("pageNo", 1);
         params.put("pageSize", 1000);
 
-        Map<String, String> headers = new HashMap<>();
-        headers.put("key", loginUser.getKey());
-        headers.put("token", loginUser.getToken());
-
         String url = loginUser.getServerUrl() + "/api/ecs_exam_work/exam/course/list";
         String json = HttpHelper.post(url, headers, params);
 
@@ -79,13 +82,11 @@ public class CommonService {
         if (page != null && page.getContent() != null) {
             return page.getContent();
         }
-
         return new ArrayList<>();
     }
 
 
     public Long queryCourseIdByCode(User loginUser, String courseCode) {
-        String url = loginUser.getServerUrl() + "/api/ecs_core/course/byCode";
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
@@ -96,6 +97,7 @@ public class CommonService {
 
         String result;
         try {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/course/byCode";
             result = HttpHelper.get(url, headers, params);
         } catch (Exception e) {
             log.error(e.getMessage());
@@ -116,7 +118,6 @@ public class CommonService {
     }
 
     public Long queryOrgIdByCode(User loginUser, String orgCode) {
-        String url = loginUser.getServerUrl() + "/api/ecs_core/org/subOrgPage/0/5";
         Map<String, String> headers = new HashMap<>();
         headers.put("key", loginUser.getKey());
         headers.put("token", loginUser.getToken());
@@ -127,6 +128,7 @@ public class CommonService {
 
         String result;
         try {
+            String url = loginUser.getServerUrl() + "/api/ecs_core/org/subOrgPage/0/5";
             result = HttpHelper.get(url, headers, params);
         } catch (Exception e) {
             log.error(e.getMessage());
@@ -152,4 +154,49 @@ public class CommonService {
         return null;
     }
 
+    public Map<String, Long> queryRoles(User loginUser) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
+        String url = loginUser.getServerUrl() + "/api/ecs_core/rolePrivilege/getRoles?includeSuperAdmin=true";
+        String result = HttpHelper.post(url, headers, null);
+        log.info(result);
+
+        List<RoleInfo> roles = new JsonMapper().toList(result, RoleInfo.class);
+        Map<String, Long> maps = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(roles)) {
+            for (RoleInfo role : roles) {
+                maps.put(role.getRoleName(), role.getRoleId());
+            }
+        }
+
+        return maps;
+    }
+
+    public UserInfo queryUserByLoginName(User loginUser, String loginName) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("key", loginUser.getKey());
+        headers.put("token", loginUser.getToken());
+
+        Map<String, String> params = new HashMap<>();
+        params.put("rootOrgId", String.valueOf(loginUser.getRootOrgId()));
+        params.put("loginName", loginName);
+
+        String url = loginUser.getServerUrl() + "/api/ecs_core/user/query";
+        String result = HttpHelper.get(url, headers, params);
+        // log.info(result);
+
+        List<UserInfo> users = new JsonMapper().toList(result, UserInfo.class);
+        if (CollectionUtils.isNotEmpty(users)) {
+            for (UserInfo user : users) {
+                if (user.getLoginName().equals(loginName)) {
+                    return user;
+                }
+            }
+        }
+
+        return null;
+    }
+
 }

+ 33 - 73
src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/BatchCreateUserTask.java → src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/BatchCreateUserTask.java

@@ -1,20 +1,18 @@
-package cn.com.qmth.examcloud.tool.service.batch_update_user;
+package cn.com.qmth.examcloud.tool.service.batch_create_user;
 
 import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
 import cn.com.qmth.examcloud.tool.service.TaskService;
-import cn.com.qmth.examcloud.tool.service.batch_update_user.vo.RoleInfo;
-import cn.com.qmth.examcloud.tool.service.batch_update_user.vo.UserInfo;
-import cn.com.qmth.examcloud.tool.service.batch_update_user.vo.UserInfoListener;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.UserInfo;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.UserInfoListener;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.utils.JsonMapper;
 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;
@@ -53,53 +51,60 @@ public class BatchCreateUserTask implements TaskService {
             throw new StatusException("任务参数解析错误!");
         }
 
-        String filePath = jsonParams.get("filePath").asText("");
+        String dataFilePath = jsonParams.get("dataFilePath").asText();
+        if (StringUtils.isBlank(dataFilePath)) {
+            throw new StatusException("参数dataFilePath不能为空!");
+        }
+
         UserInfoListener dataListener = new UserInfoListener();
-        EasyExcel.read(filePath, UserInfo.class, dataListener).sheet().doRead();
-        List<UserInfo> userList = dataListener.getList();
+        EasyExcel.read(dataFilePath, UserInfo.class, dataListener).sheet().doRead();
+        List<UserInfo> dataList = dataListener.getList();
 
-        Map<String, Long> roleMaps = this.queryRoles(loginUser);
+        int total = dataList.size();
+        log.info("共{}条数据!", total);
 
-        int total = userList.size();
-        boolean hasError = false;
+        // 检验数据
+        Map<String, Long> orgMaps = new HashMap<>();
+        Map<String, Long> courseMaps = new HashMap<>();
+        Map<String, Long> roleMaps = commonService.queryRoles(loginUser);
+
+        List<String> errMessages = new ArrayList<>();
         for (int i = 0; i < total; i++) {
-            UserInfo user = userList.get(i);
+            UserInfo user = dataList.get(i);
 
             if (StringUtils.isBlank(user.getLoginName())) {
-                log.warn("共{}条 第{}条 登录名不能为空!", total, i + 1);
-                hasError = true;
+                errMessages.add("第" + (i + 1) + "条 登录名不能为空!");
+            } else {
+                user.setLoginName(user.getLoginName().trim());
             }
 
             if (StringUtils.isBlank(user.getUserName())) {
-                log.warn("共{}条 第{}条 姓名不能为空!{}", total, i + 1, user.getLoginName());
-                hasError = true;
+                errMessages.add("第" + (i + 1) + "条 姓名不能为空!");
+            } else {
+                user.setUserName(user.getUserName().trim());
             }
 
             if (StringUtils.isBlank(user.getPsw())) {
-                log.warn("共{}条 第{}条 密码不能为空!{}", total, i + 1, user.getLoginName());
-                hasError = true;
+                errMessages.add("第" + (i + 1) + "条 密码不能为空!");
+            } else {
+                user.setPsw(user.getPsw().trim());
             }
 
             if (!roleMaps.containsKey(user.getRoleName())) {
-                log.warn("共{}条 第{}条 角色内容有误!{}", total, i + 1, user.getLoginName());
-                hasError = true;
+                errMessages.add("第" + (i + 1) + "条 角色内容有误!");
             }
-
-            user.setUserName(user.getUserName().trim());
-            user.setLoginName(user.getLoginName().trim());
-            user.setPsw(user.getPsw().trim());
         }
 
-        if (hasError) {
-            return;
+        if (!errMessages.isEmpty()) {
+            throw new StatusException(StringUtils.join(errMessages, "\n"));
         }
 
         int failCount = 0;
         for (int i = 0; i < total; i++) {
-            UserInfo user = userList.get(i);
+            UserInfo user = dataList.get(i);
             this.createUser(loginUser, user, roleMaps);
 
-            UserInfo existUser = this.queryUserByLoginName(loginUser, user.getLoginName());
+            UserInfo existUser = commonService.queryUserByLoginName(loginUser, user.getLoginName());
             if (existUser == null) {
                 log.warn("共{}条 第{}条 用户创建失败!{}", total, i + 1, user.getLoginName());
                 failCount++;
@@ -118,51 +123,6 @@ public class BatchCreateUserTask implements TaskService {
         task.setDescription(msg);
     }
 
-    private Map<String, Long> queryRoles(User loginUser) {
-        String url = loginUser.getServerUrl() + "/api/ecs_core/rolePrivilege/getRoles?includeSuperAdmin=true";
-        Map<String, String> headers = new HashMap<>();
-        headers.put("key", loginUser.getKey());
-        headers.put("token", loginUser.getToken());
-
-        String result = HttpHelper.post(url, headers, null);
-        log.info(result);
-
-        List<RoleInfo> roles = new JsonMapper().toList(result, RoleInfo.class);
-        Map<String, Long> maps = new HashMap<>();
-        if (CollectionUtils.isNotEmpty(roles)) {
-            for (RoleInfo role : roles) {
-                maps.put(role.getRoleName(), role.getRoleId());
-            }
-        }
-
-        return maps;
-    }
-
-    private UserInfo queryUserByLoginName(User loginUser, String loginName) {
-        String url = loginUser.getServerUrl() + "/api/ecs_core/user/query";
-        Map<String, String> headers = new HashMap<>();
-        headers.put("key", loginUser.getKey());
-        headers.put("token", loginUser.getToken());
-
-        Map<String, String> params = new HashMap<>();
-        params.put("rootOrgId", String.valueOf(loginUser.getRootOrgId()));
-        params.put("loginName", loginName);
-
-        String result = HttpHelper.get(url, headers, params);
-        // log.info(result);
-
-        List<UserInfo> users = new JsonMapper().toList(result, UserInfo.class);
-        if (CollectionUtils.isNotEmpty(users)) {
-            for (UserInfo user : users) {
-                if (user.getLoginName().equals(loginName)) {
-                    return user;
-                }
-            }
-        }
-
-        return null;
-    }
-
     private void createUser(User loginUser, UserInfo user, Map<String, Long> roleMaps) {
         String url = loginUser.getServerUrl() + "/api/ecs_core/user";
         Map<String, String> headers = new HashMap<>();

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/vo/RoleInfo.java → src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/vo/RoleInfo.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.tool.service.batch_update_user.vo;
+package cn.com.qmth.examcloud.tool.service.batch_create_user.vo;
 
 import lombok.Getter;
 import lombok.Setter;

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/vo/UserInfo.java → src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/vo/UserInfo.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.tool.service.batch_update_user.vo;
+package cn.com.qmth.examcloud.tool.service.batch_create_user.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Getter;

+ 1 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/vo/UserInfoListener.java → src/main/java/cn/com/qmth/examcloud/tool/service/batch_create_user/vo/UserInfoListener.java

@@ -1,4 +1,4 @@
-package cn.com.qmth.examcloud.tool.service.batch_update_user.vo;
+package cn.com.qmth.examcloud.tool.service.batch_create_user.vo;
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;

+ 6 - 3
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -5,6 +5,7 @@ import cn.com.qmth.examcloud.tool.config.SpringContextHolder;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.batch_create_user.BatchCreateUserTask;
 import cn.com.qmth.examcloud.tool.service.batch_import_exam_student.BatchImportExamStudentTask;
 import cn.com.qmth.examcloud.tool.service.exam_record_audit.ExamRecordDataAuditTask;
 import cn.com.qmth.examcloud.tool.service.export_student_photo.ExportStudentPhotoTask;
@@ -47,7 +48,7 @@ public class ToolTest {
     public void demo() throws Exception {
         User user = doLogin();
 
-        // this.testTask(user);
+        this.testTask(user);
         // resetStudentPasswordTask.start(user, 0L);
         // queryPaperStructTask.start(user, 0L);
         // exportStudentPhotoTask.start(user);
@@ -57,13 +58,15 @@ public class ToolTest {
     private void testTask(User user) {
         Map<String, Object> params = new HashMap<>();
         params.put("examId", 84);
-        params.put("dataFilePath", "C:/Users/deason/Desktop/考生导入模板.xlsx");
+        // params.put("dataFilePath", "C:/Users/deason/Desktop/考生导入模板.xlsx");
+        params.put("dataFilePath", "C:/Users/deason/Desktop/用户账号创建模板.xlsx");
 
         TaskEntity task = new TaskEntity();
         task.setUserToken(user.getToken());
         task.setParams(new JsonMapper().toJson(params));
 
-        SpringContextHolder.getBean(BatchImportExamStudentTask.class).start(task);
+        SpringContextHolder.getBean(BatchCreateUserTask.class).start(task);
+        // SpringContextHolder.getBean(BatchImportExamStudentTask.class).start(task);
     }
 
     private User doLogin() {