deason пре 1 година
родитељ
комит
8d3bb780b9

+ 8 - 0
src/main/java/cn/com/qmth/examcloud/tool/controller/IndexController.java

@@ -67,4 +67,12 @@ public class IndexController extends BaseController {
         return "admin/createRandomPaperTemplate";
     }
 
+    /**
+     * 批量创建用户
+     */
+    @GetMapping(value = "/admin/batchCreateUser")
+    public String batchCreateUser() {
+        return "admin/batchCreateUser";
+    }
+
 }

+ 44 - 0
src/main/java/cn/com/qmth/examcloud/tool/controller/UploadController.java

@@ -0,0 +1,44 @@
+package cn.com.qmth.examcloud.tool.controller;
+
+import cn.com.qmth.examcloud.tool.config.SysProperty;
+import cn.com.qmth.examcloud.tool.utils.DateHelper;
+import cn.com.qmth.examcloud.tool.utils.FileHelper;
+import cn.com.qmth.examcloud.tool.utils.StatusException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+
+@Controller
+public class UploadController extends BaseController {
+
+    private final static Logger log = LoggerFactory.getLogger(UploadController.class);
+
+    @Autowired
+    private SysProperty sysProperty;
+
+    @ResponseBody
+    @PostMapping(value = "/upload")
+    public String upload(@RequestPart(value = "file", required = false) MultipartFile file) throws Exception {
+        if (file == null) {
+            throw new StatusException("上传文件不能为空!");
+        }
+
+        final String tempDir = sysProperty.getDataDir() + "/data";
+        FileHelper.makeDirs(tempDir);
+
+        final String newFileName = DateHelper.currentTimeMillis() + FileHelper.getFileSuffix(file.getOriginalFilename());
+        final String filePath = tempDir + "/" + newFileName;
+        FileHelper.saveToFile(file.getBytes(), new File(filePath));
+
+        log.info("上传文件成功!{}", filePath);
+        return filePath;
+    }
+
+}

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

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.tool.enums;
 
 import cn.com.qmth.examcloud.tool.service.TaskService;
+import cn.com.qmth.examcloud.tool.service.batch_update_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;
@@ -17,7 +18,9 @@ public enum TaskType {
 
     CONFIG_EXAM_PAPER("批量配置考试调卷规则", ConfigExamPaperTask.class),
 
-    CREATE_RANDOM_PAPER_TEMPLATE("批量创建随机抽卷模板", CreateRandomPaperTemplateTask.class);
+    CREATE_RANDOM_PAPER_TEMPLATE("批量创建随机抽卷模板", CreateRandomPaperTemplateTask.class),
+
+    BATCH_CREATE_USER("批量创建用户", BatchCreateUserTask.class);
 
     TaskType(String description, Class<? extends TaskService> impl) {
         this.description = description;

+ 21 - 4
src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/BatchUpdateUserTask.java → src/main/java/cn/com/qmth/examcloud/tool/service/batch_update_user/BatchCreateUserTask.java

@@ -1,12 +1,16 @@
 package cn.com.qmth.examcloud.tool.service.batch_update_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.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 org.apache.commons.collections4.CollectionUtils;
@@ -22,9 +26,9 @@ import java.util.List;
 import java.util.Map;
 
 @Component
-public class BatchUpdateUserTask {
+public class BatchCreateUserTask implements TaskService {
 
-    private final static Logger log = LoggerFactory.getLogger(BatchUpdateUserTask.class);
+    private final static Logger log = LoggerFactory.getLogger(BatchCreateUserTask.class);
 
     @Autowired
     private SysProperty sysProperty;
@@ -32,16 +36,29 @@ public class BatchUpdateUserTask {
     @Autowired
     private CommonService commonService;
 
+    @Override
+    public void start(TaskEntity task) {
+        User user = LoginSessionManager.getLoginSession(task.getUserToken());
+        if (user == null) {
+            throw new StatusException("用户未登录!");
+        }
+
+        List<UserInfo> userList = new ArrayList<>();
+        //todo
+        this.execute(user, userList, task);
+    }
+
     public void start(User user) {
         final String filePath = "C:/Users/deason/Desktop/用户账号批量创建模板.xlsx";
 
         UserInfoListener dataListener = new UserInfoListener();
         EasyExcel.read(filePath, UserInfo.class, dataListener).sheet().doRead();
 
-        this.execute(user, dataListener.getList());
+        TaskEntity task = new TaskEntity();
+        this.execute(user, dataListener.getList(), task);
     }
 
-    private void execute(User loginUser, List<UserInfo> userList) {
+    private void execute(User loginUser, List<UserInfo> userList, TaskEntity task) {
         Map<String, Long> roleMaps = this.queryRoles(loginUser);
 
         int total = userList.size();

+ 103 - 0
src/main/resources/templates/admin/batchCreateUser.ftlh

@@ -0,0 +1,103 @@
+<#assign base=request.contextPath>
+<!DOCTYPE html>
+<html lang="zh-cn">
+<head>
+    <#include "../layout/header.ftlh"/>
+</head>
+
+<body>
+<div id="myVue">
+    <el-container>
+        <#include "../layout/topMenu.ftlh"/>
+
+        <el-main>
+            <el-row>
+                <el-col :span="8" :offset="8">
+                    <h3 style="text-align: center">批量创建用户</h3>
+
+                    <el-form label-position="right" label-width="100px" :model="curForm" ref="curForm" :rules="rules">
+                        <el-form-item label=" " prop="filePath">
+                            <el-upload action="${base}/upload"
+                                       accept=".xlsx"
+                                       limit="1"
+                                       :on-success="handleSuccess"
+                                       :on-remove="handleRemove"
+                                       drag>
+                                <i class="el-icon-upload"></i>
+                                <div class="el-upload__text">将文件拖到此处,或 <em>点击上传!</em></div>
+                                <div class="el-upload__tip" slot="tip">只能上传.xlsx文件!
+                                    <a style="color: #409EFF;cursor: pointer;" @click="downloadTemplate()">下载模板</a>
+                                </div>
+                            </el-upload>
+                        </el-form-item>
+
+                        <el-form-item>
+                            <el-button type="primary" @click="doSubmit" round>确 认</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-col>
+            </el-row>
+        </el-main>
+    </el-container>
+</div>
+
+<script>
+    new Vue({
+        el: '#myVue',
+        data: {
+            curForm: {
+                filePath: null,
+            },
+            rules: {
+                filePath: [
+                    {required: true, message: '请选择文件!', trigger: 'blur'}
+                ]
+            }
+        },
+        methods: {
+            doSubmit() {
+                this.$refs.curForm.validate((valid) => {
+                    if (!valid) {
+                        return false;
+                    }
+
+                    let req = {
+                        type: "BATCH_CREATE_USER",
+                        params: JSON.stringify(this.curForm)
+                    };
+
+                    let url = "${base}/api/task/add";
+                    axios.post(url, req).then((response) => {
+                        this.$notify({
+                            message: "保存成功!",
+                            type: "success",
+                        });
+
+                        window.location.href = '${base}/admin/taskList';
+                    }).catch((error) => {
+                        this.$notify({
+                            message: error.response.data.message,
+                            type: "error",
+                        });
+                    });
+                });
+            },
+            handleSuccess(response) {
+                console.log("上传成功!", response);
+                this.curForm.filePath = response;
+            },
+            handleRemove(file) {
+                console.log("移除文件!", file);
+                this.curForm.filePath = null;
+            },
+            downloadTemplate() {
+                this.$notify({
+                    message: "施工中。。。",
+                    type: "error",
+                });
+            }
+        }
+    });
+</script>
+</body>
+</html>

+ 14 - 4
src/main/resources/templates/admin/workspace.ftlh

@@ -16,7 +16,7 @@
                     <el-col :span="8">
                         <el-card shadow="hover">
                             <el-link href="${base}/admin/exportStudentAnswerAndScoreDetail" class="f20">
-                                <i class="el-icon-connection"></i> 导出考生试题作答和得分明细
+                                <i class="el-icon-s-operation"></i> 导出考生试题作答和得分明细
                             </el-link>
                         </el-card>
                     </el-col>
@@ -24,7 +24,7 @@
                     <el-col :span="8">
                         <el-card shadow="hover">
                             <el-link href="${base}/admin/updateCorrectAnswerAndReFixScore" class="f20">
-                                <i class="el-icon-connection"></i> 重新算分
+                                <i class="el-icon-s-operation"></i> 重新算分
                             </el-link>
                         </el-card>
                     </el-col>
@@ -34,14 +34,24 @@
                     <el-col :span="8">
                         <el-card shadow="hover">
                             <el-link href="${base}/admin/configExamPaper" class="f20">
-                                <i class="el-icon-connection"></i> 批量配置考试调卷规则
+                                <i class="el-icon-s-operation"></i> 批量配置考试调卷规则
                             </el-link>
                         </el-card>
                     </el-col>
                     <el-col :span="8">
                         <el-card shadow="hover">
                             <el-link href="${base}/admin/createRandomPaperTemplate" class="f20">
-                                <i class="el-icon-connection"></i> 批量创建随机抽卷模板
+                                <i class="el-icon-s-operation"></i> 批量创建随机抽卷模板
+                            </el-link>
+                        </el-card>
+                    </el-col>
+                </el-row>
+
+                <el-row :gutter="10" style="margin-top: 10px">
+                    <el-col :span="8">
+                        <el-card shadow="hover">
+                            <el-link href="${base}/admin/batchCreateUser" class="f20">
+                                <i class="el-icon-s-operation"></i> 批量创建用户
                             </el-link>
                         </el-card>
                     </el-col>

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

@@ -5,7 +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_update_user.BatchUpdateUserTask;
+import cn.com.qmth.examcloud.tool.service.batch_update_user.BatchCreateUserTask;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.CreateRandomPaperTemplateTask;
 import cn.com.qmth.examcloud.tool.service.exam_record_audit.ExamRecordDataAuditTask;
 import cn.com.qmth.examcloud.tool.service.export_student_photo.ExportStudentPhotoTask;
@@ -45,7 +45,7 @@ public class ToolTest {
     private ExamRecordDataAuditTask examRecordDataAuditTask;
 
     @Autowired
-    private BatchUpdateUserTask batchUpdateUserTask;
+    private BatchCreateUserTask batchCreateUserTask;
 
     @Test
     public void demo() throws Exception {
@@ -55,7 +55,7 @@ public class ToolTest {
         // queryPaperStructTask.start(user, 0L);
         // exportStudentPhotoTask.start(user);
         // examRecordDataAuditTask.start(user);
-        // batchUpdateUserTask.start(user);
+        // batchCreateUserTask.start(user);
         // createRandomPaperTemplate(user);
     }