Browse Source

优化-改造fss

xiaof 2 years ago
parent
commit
a8977b3185
67 changed files with 398 additions and 3222 deletions
  1. 16 61
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java
  2. 5 11
      paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java
  3. 19 44
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/export/AsyncExportTaskTemplate.java
  4. 23 37
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/importData/AsyncImportTaskTemplate.java
  5. 6 17
      paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java
  6. 0 33
      paper-library-common-api/.gitignore
  7. 0 22
      paper-library-common-api/pom.xml
  8. 6 17
      paper-library-common/src/main/java/com/qmth/paper/library/common/config/DictionaryConfig.java
  9. 4 70
      paper-library-common/src/main/java/com/qmth/paper/library/common/contant/SystemConstant.java
  10. 2 4
      paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssDomain.java
  11. 0 28
      paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssLocalFileDomain.java
  12. 0 34
      paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssPrivateDomain.java
  13. 0 10
      paper-library-common/src/main/java/com/qmth/paper/library/common/domain/SysDomain.java
  14. 3 0
      paper-library-common/src/main/java/com/qmth/paper/library/common/entity/SysRole.java
  15. 2 0
      paper-library-common/src/main/java/com/qmth/paper/library/common/enums/ExceptionResultEnum.java
  16. 1 1
      paper-library-common/src/main/java/com/qmth/paper/library/common/enums/RoleSourceEnum.java
  17. 10 10
      paper-library-common/src/main/java/com/qmth/paper/library/common/enums/UploadFileEnum.java
  18. 0 32
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/AttachmentCommonService.java
  19. 0 14
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/BasicAttachmentService.java
  20. 2 0
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/SysRoleService.java
  21. 0 126
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/AttachmentCommonServiceImpl.java
  22. 6 26
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/AuthInfoServiceImpl.java
  23. 2 112
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/BasicAttachmentServiceImpl.java
  24. 3 13
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/LibraryCommonServiceImpl.java
  25. 15 8
      paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/SysRoleServiceImpl.java
  26. 99 135
      paper-library-common/src/main/java/com/qmth/paper/library/common/util/FileStoreUtil.java
  27. 45 29
      paper-library-common/src/main/resources/mapper/SysRoleMapper.xml
  28. 0 33
      paper-library-task/.gitignore
  29. 0 66
      paper-library-task/pom.xml
  30. 0 32
      paper-library-task/src/main/java/com/qmth/paper/library/task/PaperLibraryTaskApplication.java
  31. 0 50
      paper-library-task/src/main/java/com/qmth/paper/library/task/enums/JobEnum.java
  32. 0 34
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/RedisMqSyncJob.java
  33. 0 30
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/ResendSmsJob.java
  34. 0 30
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/SendSmsExpireJob.java
  35. 0 30
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/SendSmsOverdueJob.java
  36. 0 28
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/service/JobService.java
  37. 0 33
      paper-library-task/src/main/java/com/qmth/paper/library/task/job/service/impl/JobServiceImpl.java
  38. 0 95
      paper-library-task/src/main/java/com/qmth/paper/library/task/service/QuartzService.java
  39. 0 255
      paper-library-task/src/main/java/com/qmth/paper/library/task/service/impl/QuartzServiceImpl.java
  40. 0 55
      paper-library-task/src/main/java/com/qmth/paper/library/task/start/StartRunning.java
  41. 0 97
      paper-library-task/src/main/resources/application-task.properties
  42. 0 97
      paper-library-task/src/main/resources/application-task_36dev.properties
  43. 0 97
      paper-library-task/src/main/resources/application-task_offline.properties
  44. 0 97
      paper-library-task/src/main/resources/application-task_test.properties
  45. 0 2
      paper-library-task/src/main/resources/application.properties
  46. 0 4
      paper-library/pom.xml
  47. 4 8
      paper-library/src/main/java/com/qmth/paper/library/api/BasicAttachmentController.java
  48. 3 8
      paper-library/src/main/java/com/qmth/paper/library/api/BasicSchoolController.java
  49. 0 3
      paper-library/src/main/java/com/qmth/paper/library/api/BasicSemesterController.java
  50. 0 3
      paper-library/src/main/java/com/qmth/paper/library/api/BasicStudentController.java
  51. 1 4
      paper-library/src/main/java/com/qmth/paper/library/api/EnumsController.java
  52. 7 10
      paper-library/src/main/java/com/qmth/paper/library/api/MenuCustomController.java
  53. 1 1
      paper-library/src/main/java/com/qmth/paper/library/api/SysController.java
  54. 3 8
      paper-library/src/main/java/com/qmth/paper/library/api/SysOrgController.java
  55. 7 13
      paper-library/src/main/java/com/qmth/paper/library/api/SysPrivilegeController.java
  56. 24 21
      paper-library/src/main/java/com/qmth/paper/library/api/SysRoleController.java
  57. 1 5
      paper-library/src/main/java/com/qmth/paper/library/api/SysRoleGroupMemberController.java
  58. 10 17
      paper-library/src/main/java/com/qmth/paper/library/api/SysUserController.java
  59. 3 7
      paper-library/src/main/java/com/qmth/paper/library/api/TBTaskController.java
  60. 3 9
      paper-library/src/main/java/com/qmth/paper/library/api/TSAuthController.java
  61. 0 64
      paper-library/src/main/resources/application-dev.properties
  62. 0 64
      paper-library/src/main/resources/application-offline.properties
  63. 0 98
      paper-library/src/main/resources/application-test.properties
  64. 59 1
      paper-library/src/main/resources/application.properties
  65. 0 12
      pom.xml
  66. 0 804
      sql/paper-library-v1.0.1.sql
  67. 3 3
      sql/paper-library-v1.0.2-按罗总要求优化后.sql

+ 16 - 61
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryCommonServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.paper.library.business.service.impl;
 
+import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -17,7 +18,6 @@ import com.qmth.paper.library.common.entity.SysOrg;
 import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.entity.TBTask;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.LocalCatalogEnum;
 import com.qmth.paper.library.common.enums.TaskTypeEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.service.*;
@@ -38,7 +38,6 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -126,34 +125,13 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
             if (!Objects.equals(fileMd5, md5)) {
                 throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
             }
-            boolean oss = dictionaryConfig.sysDomain().isOss();
-            LocalDateTime nowTime = LocalDateTime.now();
-            StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-            }
-            stringJoiner.add(type.getTitle()).add(File.separator);
-//            else if (type == UploadFileEnum.PAPER) {//试卷需要单独
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            } else if (type == UploadFileEnum.UPLOAD) {
-//                stringJoiner.add(type.getTitle()).add(File.separator);
-//            }
-            stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getDayOfMonth()));
 
             JSONObject jsonObject = new JSONObject();
-            stringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(format);
-            String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
-            if (oss) {//上传至oss\
-                fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5, type.getFssType());
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, dirName);
-            } else {//上传至服务器
-                fileStoreUtil.localUpload(dirName, file.getInputStream(), md5, LocalCatalogEnum.LOCAL_FILE);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, dirName);
-            }
+            String rootPath = fileStoreUtil.buildPath(type, true);
+            String dirName = rootPath + File.separator + SystemConstant.getUuid() + format;
+            fileStoreUtil.fileUpload(dirName, file.getInputStream(), md5);
+            jsonObject.put(SystemConstant.TYPE, fileStoreUtil.getType());
+            jsonObject.put(SystemConstant.PATH, dirName);
             jsonObject.put(SystemConstant.UPLOAD_TYPE, type);
 
             basicAttachment = new BasicAttachment(jsonObject.toJSONString(), fileName, format, b, fileMd5, requestUser.getId(), objId);
@@ -282,42 +260,21 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
 
     @Override
     public String saveLibraryFile(UploadFileEnum uploadFileEnum, MultipartFile... files) {
-        boolean oss = dictionaryConfig.sysDomain().isOss();
-        LocalDateTime nowTime = LocalDateTime.now();
-        StringJoiner stringJoiner = new StringJoiner(File.separator);
-        if (!oss) {
-            stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig());
-        }
-        stringJoiner.add(UploadFileEnum.IMAGE.getTitle())
-                .add(String.valueOf(nowTime.getYear()))
-                .add(String.format("%02d", nowTime.getMonthValue()))
-                .add(String.format("%02d", nowTime.getDayOfMonth()));
-        String rootPath = stringJoiner.toString();
+        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.IMAGE, false);
         // 根目录
         List<JSONObject> objects = new ArrayList<>();
         try {
             int idx = 1;
-            String uuid = SystemConstant.getUuid();
+            String uuid = IdUtil.objectId();
             for (MultipartFile file : files) {
                 JSONObject jsonObject = new JSONObject();
                 String fileName = file.getOriginalFilename();
                 String suffix = fileName.substring(fileName.lastIndexOf("."));
-                String newFileName = rootPath + File.separator + uuid + "-" + idx + suffix;
-
-                // 文件路径
-                String dirName = newFileName.replaceAll("\\\\", "/");
-
-                //上传至oss
-                String md5Hex = DigestUtils.md5Hex(file.getBytes());
-                if (oss) {
-                    fileStoreUtil.ossUpload(dirName, file.getInputStream(), md5Hex, uploadFileEnum.getFssType());
-                    jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                    jsonObject.put(SystemConstant.PATH, dirName);
-                } else {//上传至服务器
-                    fileStoreUtil.localUpload(dirName, file.getInputStream(), md5Hex, LocalCatalogEnum.LOCAL_FILE);
-                    jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                    jsonObject.put(SystemConstant.PATH, dirName);
-                }
+                // 目标文件名
+                String dirName = rootPath + File.separator + uuid + "-" + idx + suffix;
+                fileStoreUtil.fileUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()));
+                jsonObject.put(SystemConstant.TYPE, fileStoreUtil.isOssStore() ? SystemConstant.OSS : SystemConstant.LOCAL);
+                jsonObject.put(SystemConstant.PATH, dirName);
                 jsonObject.put(SystemConstant.UPLOAD_TYPE, uploadFileEnum);
                 objects.add(jsonObject);
                 idx++;
@@ -350,9 +307,9 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
             }
         } else {
             if (isExpire) {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, UploadFileEnum.valueOf(uploadType).getFssType());
+                pathUrl = fileStoreUtil.getFileUrl(path);
             } else {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, UploadFileEnum.valueOf(uploadType).getFssType());
+                pathUrl = fileStoreUtil.getFileUrl(path);
             }
 
         }
@@ -361,12 +318,10 @@ public class PaperLibraryCommonServiceImpl implements PaperLibraryCommonService
 
     @Override
     public File downloadFile(String rootPath, String filePath, String uploadType, String type) {
-        UploadFileEnum uploadTypeEnum = Enum.valueOf(UploadFileEnum.class, uploadType);
-
         File localFile = new File(rootPath, subFileName(filePath));
         if (type.equals(SystemConstant.OSS)) {
             try {
-                return fileStoreUtil.ossDownload(filePath, localFile.getPath(), uploadTypeEnum.getFssType());
+                return fileStoreUtil.fileDownload(filePath, localFile.getPath());
             } catch (Exception e) {
                 throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
             }

+ 5 - 11
paper-library-business/src/main/java/com/qmth/paper/library/business/service/impl/PaperLibraryServiceImpl.java

@@ -19,13 +19,13 @@ import com.qmth.paper.library.business.service.PaperScanTaskDetailService;
 import com.qmth.paper.library.business.service.PaperScanTaskService;
 import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.RoleTypeEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.lock.LockService;
 import com.qmth.paper.library.common.lock.LockType;
 import com.qmth.paper.library.common.service.SysUserService;
+import com.qmth.paper.library.common.util.FileStoreUtil;
 import com.qmth.paper.library.common.util.ImageUtil;
 import com.qmth.paper.library.common.util.OcrUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
@@ -41,11 +41,9 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
-import java.util.StringJoiner;
 
 /**
  * <p>
@@ -79,6 +77,9 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
     @Resource
     LockService lockService;
 
+    @Resource
+    FileStoreUtil fileStoreUtil;
+
     @Override
     public IPage<PaperLibraryResult> pageUnbindData(Long paperScanTaskId, Integer pageNumber, Integer pageSize) {
         return this.baseMapper.pageUnbindData(new Page<>(pageNumber, pageSize), paperScanTaskId);
@@ -297,14 +298,7 @@ public class PaperLibraryServiceImpl extends ServiceImpl<PaperLibraryMapper, Pap
         List<JSONObject> objectList = JSON.parseArray(paperLibrary.getPath(), JSONObject.class);
         JSONObject jsonObject = objectList.get(index);
 
-        StringJoiner stringJoiner = new StringJoiner("");
-        stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-        LocalDateTime nowTime = LocalDateTime.now();
-        stringJoiner.add(UploadFileEnum.DOWNLOAD.getTitle()).add(File.separator)
-                .add(String.valueOf(nowTime.getYear())).add(File.separator)
-                .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                .add(String.format("%02d", nowTime.getDayOfMonth())).add(File.separator);
-        String rootPath = stringJoiner.toString();
+        String rootPath = fileStoreUtil.buildPath(UploadFileEnum.DOWNLOAD, true);
         File file;
         try {
             file = paperLibraryCommonService.downloadFile(rootPath, jsonObject.getString(SystemConstant.PATH), jsonObject.getString(SystemConstant.UPLOAD_TYPE), jsonObject.getString(SystemConstant.TYPE));

+ 19 - 44
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/export/AsyncExportTaskTemplate.java

@@ -4,12 +4,10 @@ import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.paper.library.business.templete.importData.AsyncImportTaskTemplate;
-import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SpringContextHolder;
 import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.TBTask;
-import com.qmth.paper.library.common.enums.LocalCatalogEnum;
 import com.qmth.paper.library.common.enums.TaskResultEnum;
 import com.qmth.paper.library.common.enums.TaskStatusEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
@@ -26,7 +24,6 @@ import org.springframework.scheduling.annotation.Async;
 
 import java.io.*;
 import java.text.MessageFormat;
-import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Map;
 import java.util.Objects;
@@ -65,36 +62,11 @@ public abstract class AsyncExportTaskTemplate {
      * @param tbTask
      */
     public void createTxt(TBTask tbTask) {
-//        OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
         FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
         try {
-            JSONObject jsonObject = JSONObject.parseObject(tbTask.getExportFilePath());
-            if (Objects.isNull(jsonObject)) {
-                DictionaryConfig dictionaryConfig = SpringContextHolder.getBean(DictionaryConfig.class);
-
-                jsonObject = new JSONObject();
-                LocalDateTime nowTime = LocalDateTime.now();
-                StringJoiner stringJoiner = new StringJoiner("");
-                if (Objects.nonNull(dictionaryConfig) && dictionaryConfig.sysDomain().isOss()) {
-                    jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                } else {
-                    stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-                    jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                }
-                stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
-                stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getDayOfMonth()))
-                        .add(File.separator).add(SystemConstant.getUuid()).add(TXT_PREFIX);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
-            }
-            String path = (String) jsonObject.get(SystemConstant.PATH);
-            path = path.replaceAll("\\\\", "/");
-            String type = (String) jsonObject.get(SystemConstant.TYPE);
-
             String charset = SystemConstant.CHARSET_GBK;
             CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
             if (commonCacheService != null) {
@@ -108,27 +80,30 @@ public abstract class AsyncExportTaskTemplate {
             out.write(tbTask.getSummary().getBytes(charset));
             byte[] bookByteAry = out.toByteArray();
             inputStream = new ByteArrayInputStream(bookByteAry);
-            StringJoiner stringJoiner = new StringJoiner("");
-            if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
-                path = path.substring(0, path.lastIndexOf("/") + 1);
-                stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
-//                ossUtil.ossUpload(stringJoiner.toString(), inputStream, null);
-                fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
-            } else {//上传至服务器
-                path = path.substring(0, path.lastIndexOf("/") + 1);
-                stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
-                File finalFile = new File(stringJoiner.toString());
-                if (!finalFile.exists()) {
-                    finalFile.getParentFile().mkdirs();
-                    finalFile.createNewFile();
-                }
-                fileStoreUtil.copyInputStreamToFile(inputStream,finalFile,DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+
+            JSONObject jsonObject = JSONObject.parseObject(tbTask.getExportFilePath());
+            if (Objects.isNull(jsonObject)) {
+                jsonObject = new JSONObject();
+                jsonObject.put(SystemConstant.TYPE, fileStoreUtil.getType());
+                String rootPath = fileStoreUtil.buildPath(UploadFileEnum.FILE, true);
+                String dirName = rootPath + File.separator + SystemConstant.getUuid() + TXT_PREFIX;
+                jsonObject.put(SystemConstant.PATH, dirName);
             }
+            String path = (String) jsonObject.get(SystemConstant.PATH);
+            String type = (String) jsonObject.get(SystemConstant.TYPE);
+
+            path = fileStoreUtil.replaceSlash(path);
+            path = path.substring(0, path.lastIndexOf(SystemConstant.SINGLE_SLASH) + 1);
+
+            StringJoiner stringJoiner = new StringJoiner("");
+            stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
+
+            fileStoreUtil.fileUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)));
+
             JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());
             json.put(SystemConstant.TYPE, type);
             json.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
-            String result = json.toJSONString();
             tbTask.setTxtFilePath(json.toJSONString());
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);

+ 23 - 37
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/importData/AsyncImportTaskTemplate.java

@@ -7,7 +7,6 @@ import com.qmth.paper.library.common.contant.SpringContextHolder;
 import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.TBTask;
-import com.qmth.paper.library.common.enums.LocalCatalogEnum;
 import com.qmth.paper.library.common.enums.TaskResultEnum;
 import com.qmth.paper.library.common.enums.TaskStatusEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
@@ -23,8 +22,8 @@ import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.annotation.Async;
 
 import java.io.*;
+import java.nio.file.Files;
 import java.text.MessageFormat;
-import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Map;
 import java.util.Objects;
@@ -74,9 +73,10 @@ public abstract class AsyncImportTaskTemplate {
         UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
         InputStream inputStream = null;
         if (Objects.equals(type, SystemConstant.OSS)) {
-            inputStream = fileStoreUtil.ossDownloadIs(path, uploadType.getFssType());
+            // todo 20221228 解决oss问题
+//            inputStream = fileStoreUtil.fileDownload(path, uploadType.getFssType());
         } else {
-            inputStream = new FileInputStream(new File(path));
+            inputStream = Files.newInputStream(new File(path).toPath());
         }
         return inputStream;
     }
@@ -87,27 +87,11 @@ public abstract class AsyncImportTaskTemplate {
      * @param tbTask
      */
     public void createTxt(TBTask tbTask) {
+        FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
         try {
-            JSONObject jsonObject = JSONObject.parseObject(tbTask.getImportFilePath());
-            if (Objects.isNull(jsonObject)) {
-                jsonObject = new JSONObject();
-                LocalDateTime nowTime = LocalDateTime.now();
-                StringJoiner stringJoiner = new StringJoiner("");
-                stringJoiner.add(UploadFileEnum.FILE.getTitle()).add(File.separator);
-                stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                        .add(String.format("%02d", nowTime.getDayOfMonth()))
-                        .add(File.separator).add(SystemConstant.getUuid()).add(TXT_PREFIX);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
-            }
-            String path = (String) jsonObject.get(SystemConstant.PATH);
-            path = path.replaceAll("\\\\", "/");
-            String type = (String) jsonObject.get(SystemConstant.TYPE);
-
             String charset = SystemConstant.CHARSET_GBK;
             CommonCacheService commonCacheService = SpringContextHolder.getBean(CommonCacheService.class);
             if (commonCacheService != null) {
@@ -121,18 +105,26 @@ public abstract class AsyncImportTaskTemplate {
             out.write(tbTask.getSummary().getBytes(charset));
             byte[] bookByteAry = out.toByteArray();
             inputStream = new ByteArrayInputStream(bookByteAry);
-            StringJoiner stringJoiner = new StringJoiner("");
 
-            path = path.substring(0, path.lastIndexOf("/") + 1);
-            stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
-            if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
-                stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
-                FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
-                fileStoreUtil.ossUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), fileStoreUtil.getUploadEnumByPath(stringJoiner.toString()).getFssType());
-            } else {//上传至服务器
-                FileStoreUtil fileStoreUtil = SpringContextHolder.getBean(FileStoreUtil.class);
-                fileStoreUtil.copyInputStreamToFile(inputStream, new File(stringJoiner.toString()), DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)), LocalCatalogEnum.LOCAL_FILE);
+            JSONObject jsonObject = JSONObject.parseObject(tbTask.getImportFilePath());
+            if (Objects.isNull(jsonObject)) {
+                jsonObject = new JSONObject();
+                String rootPath = fileStoreUtil.buildPath(UploadFileEnum.FILE, true);
+                String dirName = rootPath + File.separator + SystemConstant.getUuid() + TXT_PREFIX;
+                jsonObject.put(SystemConstant.TYPE, fileStoreUtil.getType());
+                jsonObject.put(SystemConstant.PATH, dirName);
             }
+            String path = (String) jsonObject.get(SystemConstant.PATH);
+            String type = (String) jsonObject.get(SystemConstant.TYPE);
+
+            path = fileStoreUtil.replaceSlash(path);
+            path = path.substring(0, path.lastIndexOf(SystemConstant.SINGLE_SLASH) + 1);
+
+            StringJoiner stringJoiner = new StringJoiner("");
+            stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
+
+            fileStoreUtil.fileUpload(stringJoiner.toString(), inputStream, DigestUtils.md5Hex(new ByteArrayInputStream(bookByteAry)));
+
             JSONObject json = new JSONObject();
             json.put(SystemConstant.PATH, stringJoiner.toString());
             json.put(SystemConstant.TYPE, type);
@@ -169,12 +161,6 @@ public abstract class AsyncImportTaskTemplate {
                 log.error(SystemConstant.LOG_ERROR, e);
             }
             tbTask.setStatus(TaskStatusEnum.FINISH);
-//            if (tbTask.getType() == TaskTypeEnum.CREATE_PDF) {
-//                tbTask.setResultFilePath(tbTask.getImportFilePath());
-//                tbTask.setImportFileName(null);
-//                tbTask.setImportFilePath(null);
-//                tbTask.setErrorMessage(null);
-//            }
             tbTaskService.updateById(tbTask);
         }
     }

+ 6 - 17
paper-library-business/src/main/java/com/qmth/paper/library/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -2,7 +2,6 @@ package com.qmth.paper.library.business.templete.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
 import com.qmth.boot.api.exception.ApiException;
@@ -32,7 +31,6 @@ import com.qmth.paper.library.common.service.SysOrgService;
 import com.qmth.paper.library.common.service.SysUserService;
 import com.qmth.paper.library.common.util.*;
 import com.qmth.paper.library.common.util.excel.ExcelError;
-import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.*;
@@ -46,7 +44,6 @@ import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
 import java.io.*;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -452,20 +449,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             DownLoadPaperParams downLoadPaperParams = JSON.parseObject(tbTask.getRemark(), DownLoadPaperParams.class);
 
             List<PaperArchivesDetailResult> archivesDetailResults = paperArchivesService.listDetail(downLoadPaperParams);
-            StringJoiner stringJoiner = new StringJoiner("");
-            stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-            LocalDateTime nowTime = LocalDateTime.now();
-            stringJoiner.add(UploadFileEnum.DOWNLOAD.getTitle()).add(File.separator)
-                    .add(String.valueOf(nowTime.getYear())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getDayOfMonth())).add(File.separator);
-            String rootPath = stringJoiner.toString();
+            String rootPath = fileStoreUtil.buildPath(UploadFileEnum.DOWNLOAD, true);
             String dirName = SystemConstant.getUuid() + SystemConstant.ZIP_PREFIX;
             zipFile = new File(rootPath + dirName);
             if (!zipFile.getParentFile().exists()) {
                 zipFile.getParentFile().mkdirs();
             }
-            zipLocalRootPath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + UploadFileEnum.DOWNLOAD.getTitle() + File.separator + SystemConstant.getUuid();
+            zipLocalRootPath = dictionaryConfig.fssDomain().getConfig() + File.separator + UploadFileEnum.DOWNLOAD.getPrefix() + File.separator + SystemConstant.getUuid();
             Map<String, Integer> successMap = new HashMap<>();
             Map<String, Integer> errorMap = new HashMap<>();
             for (PaperArchivesDetailResult archivesDetailResult : archivesDetailResults) {
@@ -497,14 +487,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 Zip4jUtil.zipEncryptFile(zipFile.getPath(), zipLocalRootPath, SystemConstant.ZIP_ENCRYPT_PWD);
                 String ossDirName = dirName.replaceAll("\\\\", "/");
                 JSONObject jsonObject = new JSONObject();
-                boolean oss = dictionaryConfig.sysDomain().isOss();
-                if (oss) {//上传至oss
-                    fileStoreUtil.ossUpload(ossDirName, zipFile, BinaryUtil.toBase64String(HexUtils.decodeHex(DigestUtils.md5Hex(new FileInputStream(zipFile)))), UploadFileEnum.FILE.getFssType());
+                if (fileStoreUtil.isOssStore()) {
+                    fileStoreUtil.fileUpload(ossDirName, zipFile);
                     jsonObject.put(SystemConstant.PATH, ossDirName);
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 } else {
                     jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                    jsonObject.put(SystemConstant.PATH, stringJoiner + ossDirName);
+                    jsonObject.put(SystemConstant.PATH, rootPath + ossDirName);
                 }
                 jsonObject.put(SystemConstant.UPLOAD_TYPE, UploadFileEnum.FILE);
                 tbTask.setExportFilePath(jsonObject.toJSONString());
@@ -522,7 +511,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             if (Objects.nonNull(zipLocalRootPath)) {
                 ConvertUtil.delFolder(zipLocalRootPath);
             }
-            if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss() && Objects.nonNull(zipFile)) {
+            if (Objects.nonNull(dictionaryConfig.sysDomain()) && fileStoreUtil.isOssStore() && Objects.nonNull(zipFile)) {
                 zipFile.delete();
             }
         }

+ 0 - 33
paper-library-common-api/.gitignore

@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/

+ 0 - 22
paper-library-common-api/pom.xml

@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>com.qmth.paper.library.common.api</groupId>
-	<artifactId>paper-library-common-api</artifactId>
-	<version>1.0.0</version>
-	<packaging>jar</packaging>
-
-	<parent>
-		<groupId>com.qmth.paper.library.service</groupId>
-		<artifactId>paper-library-service</artifactId>
-		<version>1.0.0</version>
-	</parent>
-
-	<dependencies>
-		<dependency>
-			<groupId>com.qmth.paper.library.common</groupId>
-			<artifactId>paper-library-common</artifactId>
-		</dependency>
-	</dependencies>
-</project>

+ 6 - 17
paper-library-common/src/main/java/com/qmth/paper/library/common/config/DictionaryConfig.java

@@ -1,6 +1,8 @@
 package com.qmth.paper.library.common.config;
 
-import com.qmth.paper.library.common.domain.*;
+import com.qmth.paper.library.common.domain.FssDomain;
+import com.qmth.paper.library.common.domain.SmsDomain;
+import com.qmth.paper.library.common.domain.SysDomain;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -33,22 +35,9 @@ public class DictionaryConfig {
         return new SmsDomain();
     }
 
-
-    @Bean
-    @ConfigurationProperties(prefix = "com.qmth.fss.public", ignoreUnknownFields = false)
-    public FssPublicDomain fssPublicDomain() {
-        return new FssPublicDomain();
-    }
-
-    @Bean
-    @ConfigurationProperties(prefix = "com.qmth.fss.private", ignoreUnknownFields = false)
-    public FssPrivateDomain fssPrivateDomain() {
-        return new FssPrivateDomain();
-    }
-
     @Bean
-    @ConfigurationProperties(prefix = "com.qmth.fss.localfile", ignoreUnknownFields = false)
-    public FssLocalFileDomain fssLocalFileDomain() {
-        return new FssLocalFileDomain();
+    @ConfigurationProperties(prefix = "com.qmth.fss", ignoreUnknownFields = false)
+    public FssDomain fssDomain() {
+        return new FssDomain();
     }
 }

+ 4 - 70
paper-library-common/src/main/java/com/qmth/paper/library/common/contant/SystemConstant.java

@@ -89,6 +89,10 @@ public class SystemConstant {
     public static final String REGULAR_EXPRESSION_OF_NUMBER = "^\\d{n}$";
     public static final String REGULAR_EXPRESSION_OF_NUMBER_LETTER = "^\\w+$";
 
+
+    public static final String DOUBLE_SLASH = "\\\\";
+    public static final String SINGLE_SLASH = "/";
+
     /**
      * 缓存配置
      */
@@ -111,12 +115,6 @@ public class SystemConstant {
     public static final int DEFAULT_SESSION_EXPIRE = 1;//过期时间1天
     public static final long REDIS_DEFAULT_EXPIRE_TIME = 24 * 60L * 60L;//过期时间24小时
 
-    /**
-     * redis mq
-     */
-    public static final int REDIS_MQ_MAX_RECONSUME = 5;
-    public static final String MQ_TOPIC_BUFFER_LIST = "mq:topic:buffer:list";
-
     /**
      * aes相关
      */
@@ -125,32 +123,6 @@ public class SystemConstant {
     public static final String AES_MODE_PKCS7 = "AES/CBC/PKCS7Padding";//用这个模式,规则必须为16位
     public static final String AES_RULE = "1234567890123456";//aes密钥
 
-    /**
-     * excel相关
-     */
-    public static final String XLSX = "xlsx";
-    public static final String XLS = "xls";
-
-    /**
-     * 线程池配置
-     */
-    public static final String THREAD_POOL_NAME = "taskThreadPool";
-    //    public static final int THREAD_POOL_CORE_POOL_SIZE = 5;
-//    public static final int THREAD_POOL_MAX_POOL_SIZE = 100;
-    public static final int THREAD_POOL_KEEP_ALIVE_SECONDS = 10;
-    public static final int THREAD_POOL_QUEUE_CAPACITY = 500;
-
-    /**
-     * mq消息
-     */
-    public static final int DELIVERED_ACK_TYPE = 0;//消息"已发出",但尚未处理结束
-    public static final int POSION_ACK_TYPE = 1;//消息"错误",通常表示"抛弃"此消息,比如消息重发多次后,都无法正确处理时,消息将会被删除或者DLQ(死信队列)
-    public static final int STANDARD_ACK_TYPE = 2;//"标准"类型,通常表示为消息"处理成功",broker端可以删除消息了
-    public static final int REDELIVERED_ACK_TYPE = 3;//消息需"重发",比如consumer处理消息时抛出了异常,broker稍后会重新发送此消息
-    public static final int INDIVIDUAL_ACK_TYPE = 4;//表示只确认"单条消息",无论在任何ACK_MODE下
-    public static final int UNMATCHED_ACK_TYPE = 5;//BROKER间转发消息时,接收端"拒绝"消息
-    public static final int UNSEND_ACK_TYPE = 6;//消息未发出
-
     public static final String LOG_ERROR = "请求出错:{}";
 
     /**
@@ -168,15 +140,6 @@ public class SystemConstant {
         return Objects.nonNull(id) && id.length() > 0 ? Long.parseLong(id) : null;
     }
 
-    /**
-     * id转换为Integer
-     *
-     * @return
-     */
-    public static Integer convertIdToInteger(String id) {
-        return Objects.nonNull(id) && id.length() > 0 ? Integer.parseInt(id) : null;
-    }
-
     /**
      * 获取全局uuid
      *
@@ -196,26 +159,6 @@ public class SystemConstant {
         return uidservice.getId();
     }
 
-    /**
-     * enable转换
-     *
-     * @return
-     */
-    public static Boolean convertEnable(Boolean enable) {
-        return Objects.nonNull(enable) ? enable : true;
-    }
-
-    /**
-     * 试卷类型转换
-     *
-     * @param paperType
-     * @return
-     */
-    public static String convertPaperType(String paperType) {
-        paperType = paperType.toLowerCase();
-        int ascii = (int) paperType.charAt(0);
-        return String.valueOf(ascii + 704);
-    }
 
     /**
      * 模糊查询时调用以去除符号"%","_"特殊字符对查询结果的影响
@@ -236,15 +179,6 @@ public class SystemConstant {
         return param;
     }
 
-    public static void verifyLength(String str, int length, String name) {
-        if (str == null || str.length() == 0 || str.equals("null")) {
-            throw ExceptionResultEnum.ERROR.exception(name + "不能为空");
-        }
-        if (str.length() > length) {
-            throw ExceptionResultEnum.ERROR.exception("[" + name + ":" + str + "]' 超过长度限制 : " + length);
-        }
-    }
-
     public static boolean strNotNull(String str) {
         return str != null && str.length() > 0 && !str.equals("null");
     }

+ 2 - 4
paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssPublicDomain.java → paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssDomain.java

@@ -1,11 +1,9 @@
 package com.qmth.paper.library.common.domain;
 
 /**
- * @Description: 文件存储中心配置-公有
- * @Author: CaoZixuan
- * @Date: 2021-08-18
+ * 文件存储中心配置-单存储模式
  */
-public class FssPublicDomain {
+public class FssDomain {
     private static final long serialVersionUID = 7510626406622200443L;
 
     private String config;

+ 0 - 28
paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssLocalFileDomain.java

@@ -1,28 +0,0 @@
-package com.qmth.paper.library.common.domain;
-
-/**
- * @Description:
- * @Author: CaoZixuan
- * @Date:
- */
-public class FssLocalFileDomain {
-    private String config;
-
-    private String server;
-
-    public String getConfig() {
-        return config;
-    }
-
-    public void setConfig(String config) {
-        this.config = config;
-    }
-
-    public String getServer() {
-        return server;
-    }
-
-    public void setServer(String server) {
-        this.server = server;
-    }
-}

+ 0 - 34
paper-library-common/src/main/java/com/qmth/paper/library/common/domain/FssPrivateDomain.java

@@ -1,34 +0,0 @@
-package com.qmth.paper.library.common.domain;
-
-/**
- * @Description: 文件存储中心配置-私有
- * @Author: CaoZixuan
- * @Date: 2021-08-18
- */
-public class FssPrivateDomain {
-    private static final long serialVersionUID = 7510626406622200443L;
-
-    private String config;
-
-    private String server;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public String getConfig() {
-        return config;
-    }
-
-    public void setConfig(String config) {
-        this.config = config;
-    }
-
-    public String getServer() {
-        return server;
-    }
-
-    public void setServer(String server) {
-        this.server = server;
-    }
-}

+ 0 - 10
paper-library-common/src/main/java/com/qmth/paper/library/common/domain/SysDomain.java

@@ -13,8 +13,6 @@ import java.util.List;
  */
 public class SysDomain implements Serializable {
 
-    boolean oss;
-
     List attachmentType;
 
     Integer attachmentLength;
@@ -47,14 +45,6 @@ public class SysDomain implements Serializable {
         this.attachmentSize = attachmentSize;
     }
 
-    public boolean isOss() {
-        return oss;
-    }
-
-    public void setOss(boolean oss) {
-        this.oss = oss;
-    }
-
     public List getAttachmentType() {
         return attachmentType;
     }

+ 3 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/entity/SysRole.java

@@ -1,5 +1,6 @@
 package com.qmth.paper.library.common.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -61,9 +62,11 @@ public class SysRole extends BaseEntity implements Serializable {
     private Boolean defaultRole;
 
     @ApiModelProperty(value = "角色来源")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private RoleSourceEnum source;
 
     @ApiModelProperty(value = "角色说明")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String interpret;
 
     @TableField(exist = false)

+ 2 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/enums/ExceptionResultEnum.java

@@ -56,6 +56,8 @@ public enum ExceptionResultEnum {
     TASK_NO_DATA(HttpStatus.INTERNAL_SERVER_ERROR, 5000018, "任务不存在"),
 
     PATH_NO_DATA(HttpStatus.INTERNAL_SERVER_ERROR, 5000019, "文件地址不存在"),
+    SERVER_NOT_SETTING(HttpStatus.INTERNAL_SERVER_ERROR, 5000025, "文件存储server未设置"),
+    CONFIG_NOT_SETTING(HttpStatus.INTERNAL_SERVER_ERROR, 5000026, "文件存储config未设置"),
 
     SCHOOL_NO_DATA(HttpStatus.INTERNAL_SERVER_ERROR, 5000020, "学校信息不存在"),
 

+ 1 - 1
paper-library-common/src/main/java/com/qmth/paper/library/common/enums/RoleSourceEnum.java

@@ -9,7 +9,7 @@ import java.util.List;
  */
 public enum RoleSourceEnum {
 
-    SYS("系统自带");
+    SYS("系统内置");
 
     RoleSourceEnum(String desc) {
         this.desc = desc;

+ 10 - 10
paper-library-common/src/main/java/com/qmth/paper/library/common/enums/UploadFileEnum.java

@@ -10,22 +10,22 @@ import java.util.Objects;
  * @Date: 2020/7/15
  */
 public enum UploadFileEnum {
-    FILE("file", "public"),
+    FILE("file", "local"),
 
-    DOWNLOAD("download", "public"),
+    DOWNLOAD("download", "local"),
 
-    IMAGE("image", "private");
+    IMAGE("image", "local");
 
-    private String title;
+    private String prefix;
     private String fssType;
 
-    UploadFileEnum(String title, String fssType) {
-        this.title = title;
+    UploadFileEnum(String prefix, String fssType) {
+        this.prefix = prefix;
         this.fssType = fssType;
     }
 
-    public String getTitle() {
-        return title;
+    public String getPrefix() {
+        return prefix;
     }
 
     public String getFssType() {
@@ -41,7 +41,7 @@ public enum UploadFileEnum {
      */
     public static String convertToName(String title) {
         for (UploadFileEnum e : UploadFileEnum.values()) {
-            if (Objects.equals(title, e.getTitle())) {
+            if (Objects.equals(title, e.getPrefix())) {
                 return e.name();
             }
         }
@@ -56,7 +56,7 @@ public enum UploadFileEnum {
      */
     public static String convertToFssType(String title) {
         for (UploadFileEnum e : UploadFileEnum.values()) {
-            if (Objects.equals(title.toLowerCase(), e.getTitle())) {
+            if (Objects.equals(title.toLowerCase(), e.getPrefix())) {
                 return e.getFssType();
             }
         }

+ 0 - 32
paper-library-common/src/main/java/com/qmth/paper/library/common/service/AttachmentCommonService.java

@@ -1,32 +0,0 @@
-package com.qmth.paper.library.common.service;
-
-import com.qmth.paper.library.common.entity.BasicAttachment;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.util.List;
-
-/**
- * 试卷、题卡下载、预览等操作公共服务service
- */
-public interface AttachmentCommonService {
-
-    /**
-     * 下载文件
-     *
-     * @param rootPath   文件本地存储路径(支持多级)
-     * @param fileName   保存本地文件名
-     * @param attachment 附件表对象
-     */
-    public File downloadFile(String rootPath, String fileName, BasicAttachment attachment) throws Exception;
-
-    /**
-     * 压缩指定文件集合
-     *
-     * @param response response对象
-     * @param filePath 文件根目录(存储zip文件路径)
-     * @param zipName  zip文件名
-     * @param files    需要下载的文件集合
-     */
-    public void zipFiles(HttpServletResponse response, String filePath, String zipName, List<File> files);
-}

+ 0 - 14
paper-library-common/src/main/java/com/qmth/paper/library/common/service/BasicAttachmentService.java

@@ -1,12 +1,7 @@
 package com.qmth.paper.library.common.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.entity.BasicAttachment;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.IOException;
-import java.util.List;
 
 /**
  * <p>
@@ -24,13 +19,4 @@ public interface BasicAttachmentService extends IService<BasicAttachment> {
      * @param tbAttachment
      */
     public void deleteAttachment(BasicAttachment tbAttachment);
-
-    /**
-     * 批量删除附件
-     *
-     * @param basicAttachmentList
-     */
-    public void batchDeleteAttachment(List<BasicAttachment> basicAttachmentList);
-
-    BasicAttachment saveAttachment(MultipartFile file, String requestMd5, UploadFileEnum file1);
 }

+ 2 - 0
paper-library-common/src/main/java/com/qmth/paper/library/common/service/SysRoleService.java

@@ -44,4 +44,6 @@ public interface SysRoleService extends IService<SysRole> {
     List<SysRole> list(Long[] roleIds, String name);
 
     List<SysRole> listToUser();
+
+    boolean builtin(Long id, boolean defaultRole);
 }

+ 0 - 126
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/AttachmentCommonServiceImpl.java

@@ -1,126 +0,0 @@
-package com.qmth.paper.library.common.service.impl;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.lang.UUID;
-import com.alibaba.fastjson.JSONObject;
-import com.qmth.paper.library.common.config.DictionaryConfig;
-import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.UploadFileEnum;
-import com.qmth.paper.library.common.util.FileStoreUtil;
-import com.qmth.paper.library.common.util.Zip4jUtil;
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.common.entity.BasicAttachment;
-import com.qmth.paper.library.common.service.AttachmentCommonService;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.net.URLEncoder;
-import java.util.List;
-
-/**
- * 试卷、题卡下载、预览等操作公共服务service impl
- */
-@Service
-public class AttachmentCommonServiceImpl implements AttachmentCommonService {
-    private final static Logger log = LoggerFactory.getLogger(AttachmentCommonServiceImpl.class);
-
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
-    @Resource
-    FileStoreUtil fileStoreUtil;
-
-    @Override
-    public File downloadFile(String rootPath, String fileName, BasicAttachment basicAttachment) throws Exception {
-        if (basicAttachment == null) {
-            throw ExceptionResultEnum.ERROR.exception("附件信息不存在");
-        }
-        JSONObject object = JSONObject.parseObject(basicAttachment.getPath());
-        String filePath = object.getString(SystemConstant.PATH);
-        String type = object.getString(SystemConstant.TYPE);
-        UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class, (String) object.get(SystemConstant.UPLOAD_TYPE));
-
-        // 存储路径为空,使用默认值
-        rootPath = StringUtils.isNotBlank(rootPath) ? rootPath : dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + System.currentTimeMillis();
-        // 存储文件名为空,使用默认值
-        fileName = StringUtils.isNotBlank(fileName) ? fileName : UUID.fastUUID() + basicAttachment.getType();
-        // 存储文件类型与附件类型不一样,默认改用附件类型
-        if (!fileName.endsWith(basicAttachment.getType())) {
-            fileName = UUID.fastUUID() + basicAttachment.getType();
-        }
-
-        // oss存储
-        if (type.equals(SystemConstant.OSS)) {
-            File localPath = new File(rootPath, fileName);
-            try {
-                return fileStoreUtil.ossDownload(filePath, localPath.getPath(), uploadType.getFssType());
-            } catch (IOException e) {
-                throw ExceptionResultEnum.ERROR.exception("从OSS上下载文件失败");
-            }
-        } else {
-            File file = new File(filePath);
-            if (!file.exists()) {
-                throw ExceptionResultEnum.ERROR.exception("本地文件不存在");
-            }
-            return file;
-        }
-    }
-
-    @Override
-    public void zipFiles(HttpServletResponse response, String filePath, String zipName, List<File> files) {
-        filePath = StringUtils.isNotBlank(filePath) ? filePath : dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + System.currentTimeMillis();
-        File rootFile = new File(filePath);
-        // 创建保存目录
-        if (!rootFile.exists()) {
-            rootFile.mkdirs();
-        }
-        File zipFile = null;
-        try {
-            zipName = StringUtils.isNotBlank(zipName) ? zipName : UUID.fastUUID() + ".zip";
-            zipFile = FileUtil.file(filePath, zipName);
-            Zip4jUtil.zipEncryptFile(zipFile.getPath(), files, SystemConstant.ZIP_ENCRYPT_PWD);
-            outputFile(response, zipFile, zipName);
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception("下载失败");
-        } finally {
-            // 删除zip文件
-            FileUtil.del(zipFile);
-            // 删除压缩内容
-            FileUtil.del(filePath);
-        }
-    }
-
-    public static void outputFile(HttpServletResponse response, File file, String fileName) {
-        try {
-            if (!file.exists()) {
-                response.sendError(404, "File not found!");
-            }
-
-            BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
-            byte[] buf = new byte[1024];
-            int len = 0;
-
-            String fName = URLEncoder.encode(fileName, "UTF-8");
-
-            response.reset();
-            response.setContentType("application/x-msdownload");
-            response.setHeader("Content-Disposition", "attachment; filename=" + fName);
-
-            OutputStream outStream = response.getOutputStream();
-
-            while ((len = br.read(buf)) > 0) {
-                outStream.write(buf, 0, len);
-            }
-
-            br.close();
-            outStream.close();
-        } catch (IOException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-}

+ 6 - 26
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/AuthInfoServiceImpl.java

@@ -13,13 +13,11 @@ import com.qmth.paper.library.common.entity.SysOrg;
 import com.qmth.paper.library.common.entity.TSAuth;
 import com.qmth.paper.library.common.enums.AuthEnum;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.UploadFileEnum;
 import com.qmth.paper.library.common.mapper.BasicSchoolMapper;
 import com.qmth.paper.library.common.mapper.SysOrgMapper;
 import com.qmth.paper.library.common.mapper.TSAuthMapper;
 import com.qmth.paper.library.common.service.*;
-import com.qmth.paper.library.common.util.FileStoreUtil;
-import org.apache.commons.codec.digest.DigestUtils;
+import com.qmth.paper.library.common.util.Base64Util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -28,8 +26,6 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.io.File;
-import java.io.FileInputStream;
-import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -61,9 +57,6 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     @Resource
     BasicSchoolMapper basicSchoolMapper;
 
-    @Resource
-    FileStoreUtil fileStoreUtil;
-
     @Resource
     DictionaryConfig dictionaryConfig;
 
@@ -183,7 +176,6 @@ public class AuthInfoServiceImpl implements AuthInfoService {
             basicSchoolSet = new HashSet<>();
             sysOrgSet = new HashSet<>();
         }
-        boolean oss = dictionaryConfig.sysDomain().isOss();
         for (OrgInfo o : orgInfoList) {
             orgIdsSet.add(o.getId());
             if (authEnum == AuthEnum.OFF_LINE) {
@@ -199,38 +191,26 @@ public class AuthInfoServiceImpl implements AuthInfoService {
             QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
             basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, o.getCode());
             BasicSchool basicSchool = basicSchoolService.getOne(basicSchoolQueryWrapper);
-            if (Objects.isNull(basicSchool)) {//不存在则创建学校
+            if (Objects.isNull(basicSchool)) {
+                //不存在则创建学校
                 basicSchool = new BasicSchool(o.getId(), o.getCode(), o.getName(), o.getAccessKey(), o.getAccessSecret());
                 if (Objects.nonNull(o.getLogo()) && (!o.getLogo().startsWith("https:") || !o.getLogo().startsWith("http"))) {
-                    String filePath = dictionaryConfig.fssLocalFileDomain().getConfig() + File.separator + SystemConstant.getUuid() + ".jpg";
+                    String filePath = dictionaryConfig.fssDomain().getConfig() + File.separator + SystemConstant.getUuid() + ".jpg";
                     File logoFile = new File(filePath);
                     if (!logoFile.getParentFile().exists()) {
                         // 不存在则创建父目录及子文件
                         logoFile.getParentFile().mkdirs();
-                        logoFile.createNewFile();
                     }
                     SystemConstant.base64ToImage(o.getLogo(), filePath);
-
-                    if (oss) {
-                        LocalDateTime nowTime = LocalDateTime.now();
-                        StringJoiner stringJoiner = new StringJoiner("");
-                        stringJoiner.add(UploadFileEnum.FILE.name().toLowerCase()).add(File.separator)
-                                .add(String.valueOf(nowTime.getYear())).add(File.separator)
-                                .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                                .add(String.format("%02d", nowTime.getDayOfMonth())).add(File.separator)
-                                .add(SystemConstant.getUuid()).add(".jpg");
-                        fileStoreUtil.ossUpload(stringJoiner.toString(), logoFile, DigestUtils.md5Hex(new FileInputStream(logoFile)), UploadFileEnum.FILE.getFssType());
+                    if (logoFile.exists()) {
+                        basicSchool.setLogo(Base64Util.imageToBase64(logoFile));
                         logoFile.delete();
-                        basicSchool.setLogo(fileStoreUtil.getPrivateUrl(stringJoiner.toString(), UploadFileEnum.FILE.getFssType()));
-                    } else {
-                        basicSchool.setLogo(filePath);
                     }
                 } else {
                     basicSchool.setLogo(o.getLogo());
                 }
                 basicSchoolSet.add(basicSchool);
             }
-
             QueryWrapper<SysOrg> sysOrgQueryWrapper = new QueryWrapper<>();
             sysOrgQueryWrapper.lambda().eq(SysOrg::getSchoolId, basicSchool.getId());
             int count = sysOrgService.count(sysOrgQueryWrapper);

+ 2 - 112
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/BasicAttachmentServiceImpl.java

@@ -2,36 +2,20 @@ package com.qmth.paper.library.common.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.boot.api.exception.ApiException;
 import com.qmth.paper.library.common.config.DictionaryConfig;
-import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.LocalCatalogEnum;
-import com.qmth.paper.library.common.enums.UploadFileEnum;
-import com.qmth.paper.library.common.util.FileStoreUtil;
-import com.qmth.paper.library.common.util.ResultUtil;
-import com.qmth.paper.library.common.util.ServletUtil;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.BasicAttachment;
-import com.qmth.paper.library.common.entity.SysUser;
 import com.qmth.paper.library.common.mapper.BasicAttachmentMapper;
 import com.qmth.paper.library.common.service.BasicAttachmentService;
-import org.apache.commons.codec.digest.DigestUtils;
+import com.qmth.paper.library.common.util.FileStoreUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
 import java.util.Objects;
-import java.util.StringJoiner;
 
 /**
  * <p>
@@ -61,100 +45,6 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
         deleteAttachmentCommon(basicAttachment);
     }
 
-    /**
-     * 批量删除附件
-     *
-     * @param basicAttachmentList
-     */
-    @Override
-    public void batchDeleteAttachment(List<BasicAttachment> basicAttachmentList) {
-        if (Objects.nonNull(basicAttachmentList) && basicAttachmentList.size() > 0) {
-            for (BasicAttachment basicAttachment : basicAttachmentList) {
-                deleteAttachmentCommon(basicAttachment);
-            }
-        }
-    }
-
-    @Override
-    public BasicAttachment saveAttachment(MultipartFile file, String md5, UploadFileEnum type) {
-        if (Objects.isNull(type)) {
-            throw ExceptionResultEnum.ATTACHMENT_TYPE_EMPTY.exception();
-        }
-        BasicAttachment basicAttachment = null;
-        try {
-            SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-            int temp = file.getOriginalFilename().indexOf(".");
-            String fileName = file.getOriginalFilename().substring(0, temp);
-            String format = file.getOriginalFilename().substring(temp, file.getOriginalFilename().length());
-            List<String> attachmentTypeList = dictionaryConfig.sysDomain().getAttachmentType();
-            if (Objects.nonNull(format)) {
-                long count = attachmentTypeList.stream().filter(s -> format.equalsIgnoreCase(s)).count();
-                if (count == 0) {
-                    throw ExceptionResultEnum.ERROR.exception("文件格式只能为" + attachmentTypeList.toString());
-                }
-            }
-            int attachmentLength = dictionaryConfig.sysDomain().getAttachmentLength().intValue();
-            if (Objects.nonNull(fileName) && fileName.length() > attachmentLength) {
-                throw ExceptionResultEnum.ERROR.exception("文件名长度不能超过" + attachmentLength + "个字符");
-            }
-            long size = file.getSize();
-            BigDecimal b = new BigDecimal(size);
-            BigDecimal num = new BigDecimal(1024);
-            b = b.divide(num, 2, BigDecimal.ROUND_HALF_UP).divide(num, 2, BigDecimal.ROUND_HALF_UP)
-                    .setScale(2, BigDecimal.ROUND_HALF_UP);
-            double attachmentSize = dictionaryConfig.sysDomain().getAttachmentSize().doubleValue();
-            if (b.doubleValue() > attachmentSize) {
-                throw ExceptionResultEnum.ERROR.exception("文件大小不能超过" + attachmentSize + "MB");
-            }
-            log.info("fileName:{}", fileName);
-            log.info("format:{}", format);
-            log.info("size:{}", b);
-            log.info("getOriginalFilename:{}", file.getOriginalFilename());
-            String fileMd5 = DigestUtils.md5Hex(file.getBytes());
-            log.info("fileMd5:{}", fileMd5);
-            log.info("md5:{}", md5);
-            if (!Objects.equals(fileMd5, md5)) {
-                throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
-            }
-            boolean oss = dictionaryConfig.sysDomain().isOss();
-            LocalDateTime nowTime = LocalDateTime.now();
-            StringJoiner stringJoiner = new StringJoiner("");
-            if (!oss) {
-                stringJoiner.add(dictionaryConfig.fssLocalFileDomain().getConfig()).add(File.separator);
-            }
-            stringJoiner.add(type.getTitle()).add(File.separator);
-            stringJoiner.add(String.valueOf(nowTime.getYear())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getMonthValue())).add(File.separator)
-                    .add(String.format("%02d", nowTime.getDayOfMonth()));
-
-            JSONObject jsonObject = new JSONObject();
-            stringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(format);
-            if (oss) {//上传至oss\
-                String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
-                fileStoreUtil.ossUpload(dirName, file.getInputStream(), DigestUtils.md5Hex(file.getInputStream()), type.getFssType());
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
-                jsonObject.put(SystemConstant.PATH, dirName);
-            } else {//上传至服务器
-                fileStoreUtil.copyInputStreamToFile(file.getInputStream(), new File(stringJoiner.toString()), DigestUtils.md5Hex(file.getInputStream()), LocalCatalogEnum.LOCAL_FILE);
-                jsonObject.put(SystemConstant.TYPE, SystemConstant.LOCAL);
-                jsonObject.put(SystemConstant.PATH, stringJoiner.toString());
-            }
-            jsonObject.put(SystemConstant.UPLOAD_TYPE, type);
-
-            basicAttachment = new BasicAttachment(jsonObject.toJSONString(), fileName, format, b, fileMd5, requestUser.getId(), null);
-            save(basicAttachment);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-            deleteAttachment(basicAttachment);
-            if (e instanceof ApiException) {
-                ResultUtil.error((ApiException) e, e.getMessage());
-            } else {
-                ResultUtil.error(e.getMessage());
-            }
-        }
-        return basicAttachment;
-    }
-
     /**
      * 删除附件公用
      *
@@ -171,7 +61,7 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
 //                    ossUtil.ossDelete(jsonObject.get(SystemConstant.PDF_PATH).toString());
 //                }
             } else {//删除服务器附件
-                if (Objects.nonNull(dictionaryConfig.sysDomain()) && dictionaryConfig.sysDomain().isOss()) {
+                if (fileStoreUtil.isOssStore()) {
                     File file = new File(jsonObject.get(SystemConstant.PATH).toString());
                     file.delete();
                     if (Objects.nonNull(jsonObject.get(SystemConstant.PDF_PATH))) {

+ 3 - 13
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/LibraryCommonServiceImpl.java

@@ -15,7 +15,6 @@ import com.qmth.paper.library.common.bean.dto.MenuDto;
 import com.qmth.paper.library.common.bean.dto.MenuPrivilegeDto;
 import com.qmth.paper.library.common.bean.dto.OrgDto;
 import com.qmth.paper.library.common.bean.result.*;
-import com.qmth.paper.library.common.config.DictionaryConfig;
 import com.qmth.paper.library.common.contant.SysSettingConstant;
 import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.*;
@@ -69,9 +68,6 @@ public class LibraryCommonServiceImpl implements LibraryCommonService {
     @Resource
     TBSessionService tbSessionService;
 
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
     @Autowired
     private SysOrgService sysOrgService;
 
@@ -84,9 +80,6 @@ public class LibraryCommonServiceImpl implements LibraryCommonService {
     @Resource
     SysUserService sysUserService;
 
-    @Resource
-    ConvertUtil convertUtil;
-
     @Resource
     SolarService solarService;
 
@@ -391,7 +384,7 @@ public class LibraryCommonServiceImpl implements LibraryCommonService {
             }
         } else {
             UploadFileEnum uploadFileEnum = UploadFileEnum.valueOf((String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
-            url = fileStoreUtil.getPrivateUrl(filePath, uploadFileEnum.getFssType());
+            url = fileStoreUtil.getFileUrl(filePath);
         }
         url = url.replaceAll("\\\\", "/");
         return url;
@@ -413,18 +406,15 @@ public class LibraryCommonServiceImpl implements LibraryCommonService {
             }
         } else {
             if (isExpire) {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, UploadFileEnum.valueOf(uploadType).getFssType());
+                pathUrl = fileStoreUtil.getFileUrl(path);
             } else {
-                pathUrl = fileStoreUtil.getPrivateUrl(path, UploadFileEnum.valueOf(uploadType).getFssType());
+                pathUrl = fileStoreUtil.getFileUrl(path);
             }
-
         }
         return pathUrl;
     }
 
 
-
-
     @Override
     public Set<Long> listSubOrgIds(Long id) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();

+ 15 - 8
paper-library-common/src/main/java/com/qmth/paper/library/common/service/impl/SysRoleServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.entity.*;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
 import com.qmth.paper.library.common.enums.FieldUniqueEnum;
+import com.qmth.paper.library.common.enums.RoleSourceEnum;
 import com.qmth.paper.library.common.mapper.SysRoleMapper;
 import com.qmth.paper.library.common.service.*;
 import com.qmth.paper.library.common.util.ResultUtil;
@@ -314,14 +315,20 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     @Override
     public List<SysRole> listToUser() {
         String schoolId = (String) ServletUtil.getRequestHeaderSchoolIdByNotVaild();
-//        QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
-//        queryWrapper.lambda().eq(SysRole::getEnable, true);
-//        if (Objects.isNull(object)) {
-//            queryWrapper.lambda().isNull(SysRole::getSchoolId);
-//        } else {
-//            Long schoolId = Long.valueOf(object.toString());
-//            queryWrapper.lambda().eq(SysRole::getSchoolId, schoolId);
-//        }
         return this.baseMapper.listRolesBySchoolId(Objects.nonNull(schoolId) ? Long.valueOf(schoolId) : null);
     }
+
+    @Override
+    public boolean builtin(Long id, boolean defaultRole) {
+        SysRole sysRole = this.getById(id);
+        if (defaultRole) {
+            sysRole.setSource(RoleSourceEnum.SYS);
+            sysRole.setInterpret(RoleSourceEnum.SYS.getDesc());
+        } else {
+            sysRole.setSource(null);
+            sysRole.setInterpret(null);
+        }
+        sysRole.setDefaultRole(defaultRole);
+        return this.updateById(sysRole);
+    }
 }

+ 99 - 135
paper-library-common/src/main/java/com/qmth/paper/library/common/util/FileStoreUtil.java

@@ -1,34 +1,34 @@
 package com.qmth.paper.library.common.util;
 
-import com.qmth.boot.core.fss.service.FileService;
 import com.qmth.boot.core.fss.store.FileStore;
+import com.qmth.boot.core.fss.utils.FssUtils;
 import com.qmth.paper.library.common.config.DictionaryConfig;
+import com.qmth.paper.library.common.contant.SystemConstant;
 import com.qmth.paper.library.common.enums.ExceptionResultEnum;
-import com.qmth.paper.library.common.enums.LocalCatalogEnum;
 import com.qmth.paper.library.common.enums.UploadFileEnum;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.io.*;
-import java.time.Duration;
-import java.util.Objects;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.time.LocalDateTime;
 
 /**
- * @Description: 文件存储工具类
- * @Author: CaoZixuan
- * @Date: 2021-08-17
+ * 文件存储工具类
  */
 @Component
 public class FileStoreUtil {
     private final static Logger log = LoggerFactory.getLogger(FileStoreUtil.class);
 
     @Resource
-    private FileService fileService;
+    private FileStore fileStore;
 
     @Resource
     private DictionaryConfig dictionaryConfig;
@@ -38,179 +38,143 @@ public class FileStoreUtil {
      *
      * @param dirName     上传到地址
      * @param inputStream 流
-     * @param type        fileStore类型
      */
-    public void ossUpload(String dirName, InputStream inputStream, String md5, String type) throws Exception {
+    public void fileUpload(String dirName, InputStream inputStream, String md5Hex) throws Exception {
         log.info("ossUpload is come in");
-        fileService.getFileStore(type).write(dirName, inputStream, md5);
-        log.info("dirName:{}", dirName);
-    }
-
-    /**
-     * 上传文件到本地
-     *
-     * @param dirName     上传到地址
-     * @param inputStream 流
-     * @param catalogType 文件
-     */
-    public void localUpload(String dirName, InputStream inputStream, String md5, LocalCatalogEnum catalogType) throws Exception {
-        log.info("ossUpload is come in");
-        String configPath = "";
-        switch (catalogType) {
-            case LOCAL_FILE:
-                configPath = dictionaryConfig.fssLocalFileDomain().getConfig();
-                break;
-            default:
-                break;
+        dirName = this.replaceSlash(dirName);
+        if (!this.isOssStore()) {
+            String config = this.replaceSlash(dictionaryConfig.fssDomain().getConfig());
+            int index = dirName.indexOf(config);
+            dirName = dirName.substring(index + config.length());
         }
-        dirName = dirName.replaceAll(configPath, "");
-        fileService.getFileStore(catalogType.getType()).write(dirName, inputStream, md5);
+        fileStore.write(dirName, inputStream, md5Hex);
         log.info("dirName:{}", dirName);
     }
 
     /**
-     * 上传文件到本地
+     * 上传文件
      *
-     * @param inputStream 流
-     * @param finalFile   最终文件
-     * @param catalogType 文件类型
+     * @param dirName 上传到地址
+     * @param file    文件
      * @throws Exception 异常
      */
-    public void copyInputStreamToFile(InputStream inputStream, File finalFile, String md5, LocalCatalogEnum catalogType) throws Exception {
-        String dirName = finalFile.getPath().replaceAll("\\\\", "/");
-        this.localUpload(dirName, inputStream, md5, catalogType);
+    public void fileUpload(String dirName, File file) throws Exception {
+        String md5Hex = DigestUtils.md5Hex(Files.newInputStream(file.toPath()));
+        fileUpload(dirName, Files.newInputStream(file.toPath()), md5Hex);
     }
 
     /**
-     * 上传文件
+     * 从文件存储上下载文件到本地
      *
-     * @param dirName 上传到地址
-     * @param file    文件
-     * @param type    fileStore类型
+     * @param dirName  文件地址
+     * @param destPath 本地路径
+     * @throws Exception 异常
      */
-    public void ossUpload(String dirName, File file, String md5, String type) throws Exception {
-        log.info("ossUpload is come in");
-        fileService.getFileStore(type).write(dirName, new FileInputStream(file), md5);
-        log.info("dirName:{}", dirName);
+    public File fileDownload(String dirName, String destPath) throws Exception {
+        log.info("ossDownload is come in");
+        return this.saveLocal(fileStore.read(dirName), destPath);
     }
 
     /**
-     * 上传文件
+     * 文件存在某本地路径
      *
-     * @param dirName 上传到地址
-     * @param content 文件
-     * @param type    fileStore类型
+     * @param inputStream 输入流
+     * @param dirPath     本地路径
+     * @return file 存好的文件
+     * @throws IOException 异常
      */
-    public void ossUpload(String dirName, String content, String type) throws Exception {
-        log.info("ossUpload is come in");
-        fileService.getFileStore(type).write(dirName, new ByteArrayInputStream(content.getBytes()), DigestUtils.md5Hex(new ByteArrayInputStream(content.getBytes())));
-        log.info("dirName:{}", dirName);
+    public File saveLocal(InputStream inputStream, String dirPath) throws IOException {
+        String fileName = dirPath.substring(dirPath.lastIndexOf(File.separator) + 1);
+        String parentPath = dirPath.substring(0, dirPath.lastIndexOf(File.separator)) + File.separator;
+        String name = fileName.substring(0, fileName.lastIndexOf('.'));
+        String suffix = fileName.substring(fileName.lastIndexOf('.'));
+
+        File desFile = buildSingleFileName(parentPath, name, suffix, 0);
+        if (!desFile.exists()) {
+            //目标文件目录不存在的话需要创建目录
+            desFile.getParentFile().mkdirs();
+            desFile.createNewFile();
+        }
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, desFile);
+            return desFile;
+        } finally {
+            if (inputStream != null) {
+                inputStream.close();
+            }
+        }
     }
 
     /**
-     * 从文件存储上下载文件到本地
+     * 获取文件访问url
      *
-     * @param dirName   文件地址
-     * @param localPath 本地路径
-     * @param type      fileStore类型
-     * @throws Exception 异常
+     * @param filePath 文件路径
      */
-    public File ossDownload(String dirName, String localPath, String type) throws Exception {
-        log.info("ossDownload is come in");
-        return this.saveLocal(fileService.getFileStore(type).read(dirName), localPath);
+    public String getFileUrl(String filePath) {
+        validDictionaryConfig(dictionaryConfig);
+        String url = dictionaryConfig.fssDomain().getServer() + File.separator + filePath;
+        return url.replaceAll(SystemConstant.DOUBLE_SLASH, SystemConstant.SINGLE_SLASH);
     }
 
-
     /**
-     * 从文件存储上下载文件到byte[]
+     * 拼接文件路径
      *
-     * @param objectName 文件地址
-     * @param type       fileStore类型
-     * @throws Exception 异常
+     * @param uploadFileEnum 文件类型
+     * @param hasConfig      是否加上config参数
+     * @return path 拼接后路径
      */
-    public byte[] ossDownload(String objectName, String type) throws Exception {
-        log.info("oss Download is come in");
-        return IOUtils.toByteArray(fileService.getFileStore(type).read(objectName));
+    public String buildPath(UploadFileEnum uploadFileEnum, boolean hasConfig) {
+        validDictionaryConfig(dictionaryConfig);
+        LocalDateTime nowTime = LocalDateTime.now();
+        String prefix = uploadFileEnum.getPrefix();
+        String year = String.valueOf(nowTime.getYear());
+        String month = String.format("%02d", nowTime.getMonthValue());
+        String day = String.format("%02d", nowTime.getDayOfMonth());
+
+        String config = dictionaryConfig.fssDomain().getConfig();
+        if (config.startsWith("oss://key:secret") && !hasConfig) {
+            return FssUtils.buildPath(prefix, year, month, day);
+        } else {
+            return FssUtils.buildPath(config, prefix, year, month, day);
+        }
     }
 
     /**
-     * 从文件存储上下载文件到InputStream
+     * 校验oss和local
      *
-     * @param objectName 文件地址
-     * @param type       fileStore类型
-     * @throws Exception 异常
+     * @return 是否为oss存储
      */
-    public InputStream ossDownloadIs(String objectName, String type) throws Exception {
-        log.info("oss Download is come in");
-        return fileService.getFileStore(type).read(objectName);
+    public boolean isOssStore() {
+        validDictionaryConfig(dictionaryConfig);
+        String config = dictionaryConfig.fssDomain().getConfig();
+        return config.startsWith("oss://key:secret");
     }
 
-
     /**
-     * 获取文件访问url
-     *
-     * @param objectPath 文件路径
-     * @param type       文件上传的类型
-     * @return
+     * 查询type
      */
-    public String getPrivateUrl(String objectPath, String type) {
-        String server = null;
-        if ("public".equals(type)) {
-            server = dictionaryConfig.fssPublicDomain().getServer();
-            return server + "/" + objectPath;
-        } else if ("private".equals(type)) {
-            Boolean oss = dictionaryConfig.sysDomain().isOss();
-            if (Objects.nonNull(oss) && oss) {
-                FileStore fileStore = fileService.getFileStore(type);
-                return fileStore.getPresignedUrl(objectPath, Duration.ofMinutes(5L));
-            } else {
-                return dictionaryConfig.fssPrivateDomain().getServer() + "/" + objectPath;
-            }
-        } else {
-            throw ExceptionResultEnum.ERROR.exception("文件存储store类型不存在");
-        }
+    public String getType() {
+        return isOssStore() ? SystemConstant.OSS : SystemConstant.LOCAL;
     }
 
     /**
-     * 根据数据库文件路径判断文件上传类型
-     *
-     * @param path 路径
-     * @return 类型
+     * 替换”\\“为”/“
      */
-    public UploadFileEnum getUploadEnumByPath(String path) {
-        path = path.replaceAll("\\\\", "/");
-        String target = path.substring(0, path.indexOf('/'));
-        return UploadFileEnum.valueOf(target.toUpperCase());
+    public String replaceSlash(String path) {
+        return path.replaceAll(SystemConstant.DOUBLE_SLASH, SystemConstant.SINGLE_SLASH);
     }
 
     /**
-     * 文件存在某本地路径
+     * 校验文件存储配置参数
      *
-     * @param inputStream 输入流
-     * @param dirPath     本地路径
-     * @return 存好的文件
-     * @throws IOException 异常
+     * @param dictionaryConfig dictionaryConfig
      */
-    public File saveLocal(InputStream inputStream, String dirPath) throws IOException {
-        String fileName = dirPath.substring(dirPath.lastIndexOf(File.separator) + 1);
-        String parentPath = dirPath.substring(0, dirPath.lastIndexOf(File.separator)) + File.separator;
-        String name = fileName.substring(0, fileName.lastIndexOf('.'));
-        String suffix = fileName.substring(fileName.lastIndexOf('.'));
-
-        File desFile = buildSingleFileName(parentPath, name, suffix, 0);
-        if (!desFile.exists()) {
-            desFile.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
-            desFile.createNewFile();
-        }
-//        if (desFile.length() > 0) {
-//            return desFile;
-//        }
-        try {
-            FileUtils.copyInputStreamToFile(inputStream, desFile);
-            return desFile;
-        } finally {
-            if (inputStream != null) {
-                inputStream.close();
+    public void validDictionaryConfig(DictionaryConfig dictionaryConfig) {
+        if (dictionaryConfig != null) {
+            if (StringUtils.isBlank(dictionaryConfig.fssDomain().getServer())) {
+                throw ExceptionResultEnum.SERVER_NOT_SETTING.exception();
+            } else if (StringUtils.isBlank(dictionaryConfig.fssDomain().getConfig())) {
+                throw ExceptionResultEnum.CONFIG_NOT_SETTING.exception();
             }
         }
     }

+ 45 - 29
paper-library-common/src/main/resources/mapper/SysRoleMapper.xml

@@ -4,39 +4,52 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.qmth.paper.library.common.entity.SysRole">
-    <result column="id" property="id" />
-        <result column="school_id" property="schoolId" />
-        <result column="name" property="name" />
-        <result column="enable" property="enable" />
-        <result column="type" property="type" />
-        <result column="create_id" property="createId" />
-        <result column="create_time" property="createTime" />
-        <result column="update_id" property="updateId" />
-        <result column="update_time" property="updateTime" />
-        <result column="default_role" property="defaultRole" />
+        <result column="id" property="id"/>
+        <result column="school_id" property="schoolId"/>
+        <result column="name" property="name"/>
+        <result column="enable" property="enable"/>
+        <result column="type" property="type"/>
+        <result column="default_role" property="defaultRole"/>
+        <result column="source" property="source"/>
+        <result column="interpret" property="interpret"/>
+        <result column="create_id" property="createId"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_id" property="updateId"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="default_role" property="defaultRole"/>
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        select id, school_id, name, enable, type, create_id, create_time, update_id, update_time, default_role, interpret from sys_role
+        select id,
+               school_id,
+               name,
+               enable,
+               type,
+               create_id,
+               create_time,
+               update_id,
+               update_time,
+               default_role,
+               source,
+               interpret
+        from sys_role
     </sql>
 
     <select id="listRolesByUserId" resultMap="BaseResultMap">
-        SELECT distinct
-            a.id,
-            a.name,
-            a.type,
-            a.default_role
-        FROM
-            sys_role a
-                JOIN
-            sys_user_role b ON a.id = b.role_id
-        WHERE
-            b.user_id = #{id}
+        SELECT distinct a.id,
+                        a.name,
+                        a.type,
+                        a.default_role
+        FROM sys_role a
+                 JOIN
+             sys_user_role b ON a.id = b.role_id
+        WHERE b.user_id = #{id}
     </select>
 
     <select id="listPage" resultMap="BaseResultMap">
-        select * from(<include refid="Base_Column_List"></include>
+        select * from(
+        <include refid="Base_Column_List"></include>
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and school_id = #{schoolId}
@@ -49,22 +62,25 @@
             </if>
         </where>
         union
-        select id, school_id, name, enable, type, create_id, create_time, update_id, update_time, default_role, interpret from sys_role
-        where default_role = 1 and type <![CDATA[ <> ]]> 'ADMIN'
-            ) t
+        <include refid="Base_Column_List"></include>
+        where school_id is null and default_role = 1 and type <![CDATA[ <> ]]> 'ADMIN'
+        ) t
         ORDER BY t.create_time
     </select>
 
     <select id="listRolesBySchoolId" resultMap="BaseResultMap">
-        <include refid="Base_Column_List" />
+        <include refid="Base_Column_List"/>
         <where>
             enable = 1
             <if test="schoolId != null and schoolId != ''">
                 and school_id = #{schoolId}
             </if>
+            <if test="schoolId == null || schoolId == ''">
+                and school_id is null
+            </if>
         </where>
         union
-        select id, school_id, name, enable, type, create_id, create_time, update_id, update_time, default_role, interpret from sys_role
-        where default_role = 1 and type <![CDATA[ <> ]]> 'ADMIN'
+        <include refid="Base_Column_List"/>
+        where school_id is null and default_role = 1 and type <![CDATA[ <> ]]> 'ADMIN'
     </select>
 </mapper>

+ 0 - 33
paper-library-task/.gitignore

@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/

+ 0 - 66
paper-library-task/pom.xml

@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>com.qmth.paper.library.task</groupId>
-    <artifactId>paper-library-task</artifactId>
-    <version>1.0.0</version>
-    <packaging>jar</packaging>
-
-    <parent>
-        <groupId>com.qmth.paper.library.service</groupId>
-        <artifactId>paper-library-service</artifactId>
-        <version>1.0.0</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.qmth.paper.library.business</groupId>
-            <artifactId>paper-library-business</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-quartz</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-            <version>${spring-boot.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <configuration>
-                    <includeSystemScope>true</includeSystemScope>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.spotify</groupId>
-                <artifactId>dockerfile-maven-plugin</artifactId>
-                <version>1.4.12</version>
-                <configuration>
-                    <repository>registry.cn-shenzhen.aliyuncs.com/paper-library-task</repository>
-                    <tag>${project.version}</tag>
-                    <contextDirectory>${project.baseDir}</contextDirectory>
-                    <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
-                    <pullNewerImage>true</pullNewerImage>
-                    <buildArgs>
-                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
-                    </buildArgs>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>

+ 0 - 32
paper-library-task/src/main/java/com/qmth/paper/library/task/PaperLibraryTaskApplication.java

@@ -1,32 +0,0 @@
-package com.qmth.paper.library.task;
-
-//import com.qmth.paper.library.common.threadPool.MyThreadPool;
-
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@SpringBootApplication(scanBasePackages = "com.qmth.*")
-@MapperScan({"com.qmth.paper.library.business.mapper", "com.qmth.paper.library.common.mapper"})
-//主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中,做过web开发的同学一定都有用过@Controller,@Service,@Repository注解,查看其源码你会发现,他们中有一个共同的注解@Component,没错@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中
-@EntityScan(basePackages = {"com.qmth.paper.library.business.entity", "com.qmth.paper.library.common.entity"})
-// 用来扫描和发现指定包及其子包中的Entity定义
-@EnableTransactionManagement // spring开启事务支持
-@EnableAsync // 开启异步任务
-@EnableCaching // 开启缓存注解
-public class PaperLibraryTaskApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(PaperLibraryTaskApplication.class, args);
-    }
-
-//    @Primary
-//    @Bean
-//    public TaskExecutor primaryTaskExecutor() {
-//        return new MyThreadPool();
-//    }
-}

+ 0 - 50
paper-library-task/src/main/java/com/qmth/paper/library/task/enums/JobEnum.java

@@ -1,50 +0,0 @@
-package com.qmth.paper.library.task.enums;
-
-import java.util.Objects;
-
-/**
- * @Description: job enum
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/3/31
- */
-public enum JobEnum {
-
-    SMS_NOTICE_TASK_EXPIRE_JOB("任务到期提醒定时任务"),
-
-    SMS_NOTICE_TASK_EXPIRE_JOB_GROUP("任务到期提醒定时任务job组"),
-
-    SMS_NOTICE_TASK_OVERDUE_JOB("任务逾期提醒定时任务"),
-
-    SMS_NOTICE_TASK_OVERDUE_JOB_GROUP("任务逾期提醒定时任务job组"),
-
-    SMS_NOTICE_TASK_RESEND_JOB("短信发送失败重发定时任务"),
-
-    SMS_NOTICE_TASK_RESEND_JOB_GROUP("短信发送失败重发定时任务job组");
-
-    private String title;
-
-    private JobEnum(String title) {
-        this.title = title;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    /**
-     * 状态转换 toName
-     *
-     * @param value
-     * @return
-     */
-    public static String convertToName(String value) {
-        for (JobEnum e : JobEnum.values()) {
-            if (Objects.equals(value.trim(), e.getTitle())) {
-                return e.name();
-            }
-        }
-        return null;
-    }
-}

+ 0 - 34
paper-library-task/src/main/java/com/qmth/paper/library/task/job/RedisMqSyncJob.java

@@ -1,34 +0,0 @@
-//package com.qmth.paper.library.task.job;
-//
-//import com.qmth.paper.library.common.contant.SystemConstant;
-//import com.qmth.paper.library.task.job.service.JobService;
-//import org.quartz.JobExecutionContext;
-//import org.quartz.JobExecutionException;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.scheduling.quartz.QuartzJobBean;
-//
-//import javax.annotation.Resource;
-//
-///**
-// * @Description: redis mq消息同步
-// * @Param:
-// * @return:
-// * @Author: wangliang
-// * @Date: 2021/7/9
-// */
-//public class RedisMqSyncJob extends QuartzJobBean {
-//    private final static Logger log = LoggerFactory.getLogger(RedisMqSyncJob.class);
-//
-//    @Resource
-//    JobService jobService;
-//
-//    @Override
-//    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-//        try {
-//            jobService.assembleJob(SystemConstant.MQ_TOPIC_BUFFER_LIST);
-//        } catch (Exception e) {
-//            log.error(SystemConstant.LOG_ERROR, e);
-//        }
-//    }
-//}

+ 0 - 30
paper-library-task/src/main/java/com/qmth/paper/library/task/job/ResendSmsJob.java

@@ -1,30 +0,0 @@
-package com.qmth.paper.library.task.job;
-
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.task.job.service.JobService;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-import javax.annotation.Resource;
-
-/**
- * @Description: 定时重发失败短信
- */
-public class ResendSmsJob extends QuartzJobBean {
-    private final static Logger log = LoggerFactory.getLogger(ResendSmsJob.class);
-
-    @Resource
-    JobService jobService;
-
-    @Override
-    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        try {
-            jobService.resendSmsTask();
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-}

+ 0 - 30
paper-library-task/src/main/java/com/qmth/paper/library/task/job/SendSmsExpireJob.java

@@ -1,30 +0,0 @@
-package com.qmth.paper.library.task.job;
-
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.task.job.service.JobService;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-import javax.annotation.Resource;
-
-/**
- * @Description: 发送即将到期数据短信提醒(每天15点)
- */
-public class SendSmsExpireJob extends QuartzJobBean {
-    private final static Logger log = LoggerFactory.getLogger(SendSmsExpireJob.class);
-
-    @Resource
-    JobService jobService;
-
-    @Override
-    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        try {
-            jobService.sendSmsExpireTask();
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-}

+ 0 - 30
paper-library-task/src/main/java/com/qmth/paper/library/task/job/SendSmsOverdueJob.java

@@ -1,30 +0,0 @@
-package com.qmth.paper.library.task.job;
-
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.task.job.service.JobService;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-import javax.annotation.Resource;
-
-/**
- * @Description: 发送已逾期数据(每天9点)
- */
-public class SendSmsOverdueJob extends QuartzJobBean {
-    private final static Logger log = LoggerFactory.getLogger(SendSmsOverdueJob.class);
-
-    @Resource
-    JobService jobService;
-
-    @Override
-    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        try {
-            jobService.sendSmsOverdueTask();
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-}

+ 0 - 28
paper-library-task/src/main/java/com/qmth/paper/library/task/job/service/JobService.java

@@ -1,28 +0,0 @@
-package com.qmth.paper.library.task.job.service;
-
-import java.io.IOException;
-
-/**
- * @Description: job service
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/3/31
- */
-public interface JobService {
-
-    /**
-     * 发送即将到期数据
-     */
-    void sendSmsExpireTask();
-
-    /**
-     * 发送逾期数据
-     */
-    void sendSmsOverdueTask();
-
-    /**
-     * 重发失败短信
-     */
-    void resendSmsTask();
-}

+ 0 - 33
paper-library-task/src/main/java/com/qmth/paper/library/task/job/service/impl/JobServiceImpl.java

@@ -1,33 +0,0 @@
-package com.qmth.paper.library.task.job.service.impl;
-
-import com.qmth.paper.library.task.job.service.JobService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-/**
- * @Description: job service impl
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/3/31
- */
-@Service
-public class JobServiceImpl implements JobService {
-    private final static Logger log = LoggerFactory.getLogger(JobServiceImpl.class);
-
-    @Override
-    public void sendSmsExpireTask() {
-
-    }
-
-    @Override
-    public void sendSmsOverdueTask() {
-
-    }
-
-    @Override
-    public void resendSmsTask() {
-
-    }
-}

+ 0 - 95
paper-library-task/src/main/java/com/qmth/paper/library/task/service/QuartzService.java

@@ -1,95 +0,0 @@
-package com.qmth.paper.library.task.service;
-
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @Description: quartz 服务类
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/1
- */
-public interface QuartzService {
-
-    /**
-     * 增加一个job
-     *
-     * @param jobClass
-     * @param jobName
-     * @param jobGroupName
-     * @param jobTime
-     * @param jobTimes
-     * @param jobData
-     */
-    public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, int jobTime,
-                       int jobTimes, Map jobData);
-
-    /**
-     * 增加一个job
-     *
-     * @param jobClass
-     * @param jobName
-     * @param jobGroupName
-     * @param jobTime
-     * @param jobData
-     */
-    public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, String jobTime, Map jobData);
-
-    /**
-     * 修改一个job的 时间表达式
-     *
-     * @param jobName
-     * @param jobGroupName
-     * @param jobTime
-     */
-    public void updateJob(String jobName, String jobGroupName, String jobTime);
-
-    /**
-     * 删除任务一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    public void deleteJob(String jobName, String jobGroupName);
-
-    /**
-     * 暂停一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    public void pauseJob(String jobName, String jobGroupName);
-
-    /**
-     * 恢复一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    public void resumeJob(String jobName, String jobGroupName);
-
-    /**
-     * 立即执行一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    public void runAJobNow(String jobName, String jobGroupName);
-
-    /**
-     * 获取所有job
-     *
-     * @return
-     */
-    public List<Map<String, Object>> queryAllJob();
-
-    /**
-     * 查询正在运行的job
-     *
-     * @return
-     */
-    public List<Map<String, Object>> queryRunJob();
-}

+ 0 - 255
paper-library-task/src/main/java/com/qmth/paper/library/task/service/impl/QuartzServiceImpl.java

@@ -1,255 +0,0 @@
-package com.qmth.paper.library.task.service.impl;
-
-import com.qmth.paper.library.common.contant.SystemConstant;
-import com.qmth.paper.library.task.service.QuartzService;
-import org.quartz.*;
-import org.quartz.impl.matchers.GroupMatcher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.*;
-
-/**
- * @Description: quartz 服务实现类
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/1
- */
-@Service
-public class QuartzServiceImpl implements QuartzService {
-    private final static Logger log = LoggerFactory.getLogger(QuartzServiceImpl.class);
-
-    @Resource
-    private Scheduler scheduler;
-
-    /**
-     * 增加一个job
-     *
-     * @param jobClass     任务实现类
-     * @param jobName      任务名称
-     * @param jobGroupName 任务组名
-     * @param jobTime      时间表达式 (这是每隔多少秒为一次任务)
-     * @param jobTimes     运行的次数 (<0:表示不限次数)
-     * @param jobData      参数
-     */
-    @Override
-    public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, int jobTime,
-                       int jobTimes, Map jobData) {
-        try {
-            // 任务名称和组构成任务key
-            JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName)
-                    .build();
-            // 设置job参数
-            if (jobData != null && jobData.size() > 0) {
-                jobDetail.getJobDataMap().putAll(jobData);
-            }
-            // 使用simpleTrigger规则
-            Trigger trigger = null;
-            if (jobTimes < 0) {
-                trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName)
-                        .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1).withIntervalInSeconds(jobTime))
-                        .startNow().build();
-            } else {
-                trigger = TriggerBuilder
-                        .newTrigger().withIdentity(jobName, jobGroupName).withSchedule(SimpleScheduleBuilder
-                                .repeatSecondlyForever(1).withIntervalInSeconds(jobTime).withRepeatCount(jobTimes))
-                        .startNow().build();
-            }
-            scheduler.scheduleJob(jobDetail, trigger);
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 增加一个job
-     *
-     * @param jobClass     任务实现类
-     * @param jobName      任务名称(建议唯一)
-     * @param jobGroupName 任务组名
-     * @param jobTime      时间表达式 (如:0/5 * * * * ? )
-     * @param jobData      参数
-     */
-    @Override
-    public void addJob(Class<? extends QuartzJobBean> jobClass, String jobName, String jobGroupName, String jobTime, Map jobData) {
-        try {
-            // 创建jobDetail实例,绑定Job实现类
-            // 指明job的名称,所在组的名称,以及绑定job类
-            // 任务名称和组构成任务key
-            JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName)
-                    .build();
-            // 设置job参数
-            if (jobData != null && jobData.size() > 0) {
-                jobDetail.getJobDataMap().putAll(jobData);
-            }
-            // 定义调度触发规则
-            // 使用cornTrigger规则
-            // 触发器key
-            Trigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroupName)
-                    .startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))
-                    .withSchedule(CronScheduleBuilder.cronSchedule(jobTime)).startNow().build();
-            // 把作业和触发器注册到任务调度中
-            scheduler.scheduleJob(jobDetail, trigger);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 修改一个job的 时间表达式
-     *
-     * @param jobName
-     * @param jobGroupName
-     * @param jobTime
-     */
-    @Override
-    public void updateJob(String jobName, String jobGroupName, String jobTime) {
-        try {
-            TriggerKey triggerKey = TriggerKey.triggerKey(jobName, jobGroupName);
-            CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
-            trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
-                    .withSchedule(CronScheduleBuilder.cronSchedule(jobTime)).build();
-            // 重启触发器
-            scheduler.rescheduleJob(triggerKey, trigger);
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 删除任务一个job
-     *
-     * @param jobName      任务名称
-     * @param jobGroupName 任务组名
-     */
-    @Override
-    public void deleteJob(String jobName, String jobGroupName) {
-        try {
-            scheduler.deleteJob(new JobKey(jobName, jobGroupName));
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 暂停一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    @Override
-    public void pauseJob(String jobName, String jobGroupName) {
-        try {
-            JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-            scheduler.pauseJob(jobKey);
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 恢复一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    @Override
-    public void resumeJob(String jobName, String jobGroupName) {
-        try {
-            JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-            scheduler.resumeJob(jobKey);
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 立即执行一个job
-     *
-     * @param jobName
-     * @param jobGroupName
-     */
-    @Override
-    public void runAJobNow(String jobName, String jobGroupName) {
-        try {
-            JobKey jobKey = JobKey.jobKey(jobName, jobGroupName);
-            scheduler.triggerJob(jobKey);
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-    }
-
-    /**
-     * 获取所有job
-     *
-     * @return
-     */
-    @Override
-    public List<Map<String, Object>> queryAllJob() {
-        List<Map<String, Object>> jobList = null;
-        try {
-            GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
-            Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);
-            jobList = new ArrayList<Map<String, Object>>();
-            for (JobKey jobKey : jobKeys) {
-                List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
-                for (Trigger trigger : triggers) {
-                    Map<String, Object> map = new HashMap<>();
-                    map.put("jobName", jobKey.getName());
-                    map.put("jobGroupName", jobKey.getGroup());
-                    map.put("description", "触发器:" + trigger.getKey());
-                    Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
-                    map.put("jobStatus", triggerState.name());
-                    if (trigger instanceof org.springframework.scheduling.support.CronTrigger) {
-                        CronTrigger cronTrigger = (CronTrigger) trigger;
-                        String cronExpression = cronTrigger.getCronExpression();
-                        map.put("jobTime", cronExpression);
-                    }
-                    jobList.add(map);
-                }
-            }
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-        return jobList;
-    }
-
-    /**
-     * 获取所有正在运行的job
-     *
-     * @return
-     */
-    @Override
-    public List<Map<String, Object>> queryRunJob() {
-        List<Map<String, Object>> jobList = null;
-        try {
-            List<JobExecutionContext> executingJobs = scheduler.getCurrentlyExecutingJobs();
-            jobList = new ArrayList<Map<String, Object>>(executingJobs.size());
-            for (JobExecutionContext executingJob : executingJobs) {
-                Map<String, Object> map = new HashMap<String, Object>();
-                JobDetail jobDetail = executingJob.getJobDetail();
-                JobKey jobKey = jobDetail.getKey();
-                Trigger trigger = executingJob.getTrigger();
-                map.put("jobName", jobKey.getName());
-                map.put("jobGroupName", jobKey.getGroup());
-                map.put("description", "触发器:" + trigger.getKey());
-                Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
-                map.put("jobStatus", triggerState.name());
-                if (trigger instanceof org.springframework.scheduling.support.CronTrigger) {
-                    CronTrigger cronTrigger = (CronTrigger) trigger;
-                    String cronExpression = cronTrigger.getCronExpression();
-                    map.put("jobTime", cronExpression);
-                }
-                jobList.add(map);
-            }
-        } catch (SchedulerException e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-        }
-        return jobList;
-    }
-}
-

+ 0 - 55
paper-library-task/src/main/java/com/qmth/paper/library/task/start/StartRunning.java

@@ -1,55 +0,0 @@
-package com.qmth.paper.library.task.start;
-
-import com.qmth.paper.library.task.service.QuartzService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-
-/**
- * @Description: 服务启动时初始化运行,哪个微服务模块需要则拿此模版去用
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/3
- */
-@Component
-public class StartRunning implements CommandLineRunner {
-    private final static Logger log = LoggerFactory.getLogger(StartRunning.class);
-
-    @Resource
-    QuartzService quartzService;
-
-    @Override
-    public void run(String... args) throws Exception {
-        log.info("服务器启动时执行 start");
-
-//        log.info("增加任务到期提醒定时任务 start");
-//        Map expireJobMap = new HashMap();
-//        expireJobMap.computeIfAbsent("name", v -> SendSmsExpireJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name());
-//        // 每天15点定时任务
-//        quartzService.addJob(SendSmsExpireJob.class, JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB.name(), JobEnum.SMS_NOTICE_TASK_EXPIRE_JOB_GROUP.name(), "0 0 15 * * ?", expireJobMap);
-//        log.info("增加任务到期提醒定时任务 end");
-//
-//        log.info("增加任务逾期提醒定时任务 start");
-//        Map orverdueJobMap = new HashMap();
-//        orverdueJobMap.computeIfAbsent("name", v -> SendSmsOverdueJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name());
-//        // 每天9点定时任务
-//        quartzService.addJob(SendSmsOverdueJob.class, JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB.name(), JobEnum.SMS_NOTICE_TASK_OVERDUE_JOB_GROUP.name(), "0 0 9 * * ?", orverdueJobMap);
-//        log.info("增加任务逾期提醒定时任务 end");
-//
-//        log.info("增加短信发送失败重发定时任务 start");
-//        Map rensendJobMap = new HashMap();
-//        rensendJobMap.computeIfAbsent("name", v -> ResendSmsJob.class.getName());
-//        quartzService.deleteJob(JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name());
-//        // 每隔1小时定时任务
-//        quartzService.addJob(ResendSmsJob.class, JobEnum.SMS_NOTICE_TASK_RESEND_JOB.name(), JobEnum.SMS_NOTICE_TASK_RESEND_JOB_GROUP.name(), "0 0/30 * * * ?", rensendJobMap);
-//        log.info("增加短信发送失败重发定时任务 end");
-
-        log.info("服务器启动时执行 end");
-    }
-}

+ 0 - 97
paper-library-task/src/main/resources/application-task.properties

@@ -1,97 +0,0 @@
-#\u7AEF\u53E3\u914D\u7F6E
-server.port=9011
-#tomcat\u6700\u5927\u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A200
-server.tomcat.threads.max=2500
-#tomcat\u6700\u5927\u8FDE\u63A5\u6570
-server.tomcat.max-connections=2500
-#tomcat\u7684URI\u7F16\u7801
-server.tomcat.uri-encoding=UTF-8
-
-#\u9879\u76EE\u540D\u79F0
-spring.application.name=paper-library-task
-
-#\u6570\u636E\u6E90\u914D\u7F6E
-db.host=localhost
-db.port=3306
-db.name=paper-library-v1.0.0
-db.username=root
-db.password=123456789
-
-#redis\u6570\u636E\u6E90\u914D\u7F6E
-com.qmth.redis.host=${db.host}
-com.qmth.redis.port=6379
-com.qmth.redis.db=2
-#com.qmth.redis.password
-
-#mysql\u914D\u7F6E
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
-com.qmth.fss.localfile.server=http://127.0.0.1:7001
-com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
-com.qmth.fss.localpdf.server=http://127.0.0.1:7001
-
-#\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.serverUpload=
-sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-sys.config.autoCreatePdfResetMaxCount=5
-sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=true
-sys.config.sessionActive=24h
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
-
-#\u65E5\u671F\u683C\u5F0F\u5316
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-#\u65E5\u5FD7\u914D\u7F6E
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/paper-library-task.log
-
-#============================================================================
-# \u914D\u7F6EJobStore
-#============================================================================
-spring.quartz.job-store-type=jdbc
-spring.quartz.jdbc.initialize-schema=never
-# JobDataMaps\u662F\u5426\u90FD\u4E3AString\u7C7B\u578B\uFF0C\u9ED8\u8BA4false
-spring.quartz.properties.org.quartz.jobStore.useProperties=false
-# \u8868\u7684\u524D\u7F00\uFF0C\u9ED8\u8BA4QRTZ_
-spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
-# \u662F\u5426\u52A0\u5165\u96C6\u7FA4
-spring.quartz.properties.org.quartz.jobStore.isClustered=true
-# \u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 ms
-spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=5000
-# \u5F53\u8BBE\u7F6E\u4E3A\u201Ctrue\u201D\u65F6\uFF0C\u6B64\u5C5E\u6027\u544A\u8BC9Quartz \u5728\u975E\u6258\u7BA1JDBC\u8FDE\u63A5\u4E0A\u8C03\u7528setTransactionIsolation\uFF08Connection.TRANSACTION_READ_COMMITTED\uFF09\u3002
-spring.quartz.properties.org.quartz.jobStore.txIsolationLevelReadCommitted=true
-# \u6570\u636E\u4FDD\u5B58\u65B9\u5F0F\u4E3A\u6570\u636E\u5E93\u6301\u4E45\u5316
-spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
-# \u6570\u636E\u5E93\u4EE3\u7406\u7C7B\uFF0C\u4E00\u822Corg.quartz.impl.jdbcjobstore.StdJDBCDelegate\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u6570\u636E\u5E93
-spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-#============================================================================
-# Scheduler \u8C03\u5EA6\u5668\u5C5E\u6027\u914D\u7F6E
-#============================================================================
-# \u8C03\u5EA6\u6807\u8BC6\u540D \u96C6\u7FA4\u4E2D\u6BCF\u4E00\u4E2A\u5B9E\u4F8B\u90FD\u5FC5\u987B\u4F7F\u7528\u76F8\u540C\u7684\u540D\u79F0
-spring.quartz.properties.org.quartz.scheduler.instanceName=ClusterQuartz
-# ID\u8BBE\u7F6E\u4E3A\u81EA\u52A8\u83B7\u53D6 \u6BCF\u4E00\u4E2A\u5FC5\u987B\u4E0D\u540C
-spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
-
-#============================================================================
-# \u914D\u7F6EThreadPool
-#============================================================================
-# \u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B\uFF08\u4E00\u822C\u4F7F\u7528SimpleThreadPool\u5373\u53EF\u6EE1\u8DB3\u51E0\u4E4E\u6240\u6709\u7528\u6237\u7684\u9700\u6C42\uFF09
-spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
-# \u6307\u5B9A\u7EBF\u7A0B\u6570\uFF0C\u4E00\u822C\u8BBE\u7F6E\u4E3A1-100\u76F4\u63A5\u7684\u6574\u6570\uFF0C\u6839\u636E\u7CFB\u7EDF\u8D44\u6E90\u914D\u7F6E
-spring.quartz.properties.org.quartz.threadPool.threadCount=10
-# \u8BBE\u7F6E\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7(\u53EF\u4EE5\u662FThread.MIN_PRIORITY\uFF08\u53731\uFF09\u548CThread.MAX_PRIORITY\uFF08\u8FD9\u662F10\uFF09\u4E4B\u95F4\u7684\u4EFB\u4F55int \u3002\u9ED8\u8BA4\u503C\u4E3AThread.NORM_PRIORITY\uFF085\uFF09\u3002)
-spring.quartz.properties.org.quartz.threadPool.threadPriority=5

+ 0 - 97
paper-library-task/src/main/resources/application-task_36dev.properties

@@ -1,97 +0,0 @@
-#\u7AEF\u53E3\u914D\u7F6E
-server.port=9012
-#tomcat\u6700\u5927\u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A200
-server.tomcat.threads.max=2500
-#tomcat\u6700\u5927\u8FDE\u63A5\u6570
-server.tomcat.max-connections=2500
-#tomcat\u7684URI\u7F16\u7801
-server.tomcat.uri-encoding=UTF-8
-
-#\u9879\u76EE\u540D\u79F0
-spring.application.name=paper-library-task
-
-#\u6570\u636E\u6E90\u914D\u7F6E
-db.host=localhost
-db.port=3306
-db.name=paper-library-v1.0.0
-db.username=root
-db.password=123456789
-
-#redis\u6570\u636E\u6E90\u914D\u7F6E
-com.qmth.redis.host=${db.host}
-com.qmth.redis.port=6379
-com.qmth.redis.db=2
-#com.qmth.redis.password
-
-#mysql\u914D\u7F6E
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
-com.qmth.fss.localfile.server=http://127.0.0.1:7001
-com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
-com.qmth.fss.localpdf.server=http://127.0.0.1:7001
-
-#\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.serverUpload=
-sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-sys.config.autoCreatePdfResetMaxCount=5
-sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=true
-sys.config.sessionActive=24h
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
-
-#\u65E5\u671F\u683C\u5F0F\u5316
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-#\u65E5\u5FD7\u914D\u7F6E
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/paper-library-task.log
-
-#============================================================================
-# \u914D\u7F6EJobStore
-#============================================================================
-spring.quartz.job-store-type=jdbc
-spring.quartz.jdbc.initialize-schema=never
-# JobDataMaps\u662F\u5426\u90FD\u4E3AString\u7C7B\u578B\uFF0C\u9ED8\u8BA4false
-spring.quartz.properties.org.quartz.jobStore.useProperties=false
-# \u8868\u7684\u524D\u7F00\uFF0C\u9ED8\u8BA4QRTZ_
-spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
-# \u662F\u5426\u52A0\u5165\u96C6\u7FA4
-spring.quartz.properties.org.quartz.jobStore.isClustered=true
-# \u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 ms
-spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=5000
-# \u5F53\u8BBE\u7F6E\u4E3A\u201Ctrue\u201D\u65F6\uFF0C\u6B64\u5C5E\u6027\u544A\u8BC9Quartz \u5728\u975E\u6258\u7BA1JDBC\u8FDE\u63A5\u4E0A\u8C03\u7528setTransactionIsolation\uFF08Connection.TRANSACTION_READ_COMMITTED\uFF09\u3002
-spring.quartz.properties.org.quartz.jobStore.txIsolationLevelReadCommitted=true
-# \u6570\u636E\u4FDD\u5B58\u65B9\u5F0F\u4E3A\u6570\u636E\u5E93\u6301\u4E45\u5316
-spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
-# \u6570\u636E\u5E93\u4EE3\u7406\u7C7B\uFF0C\u4E00\u822Corg.quartz.impl.jdbcjobstore.StdJDBCDelegate\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u6570\u636E\u5E93
-spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-#============================================================================
-# Scheduler \u8C03\u5EA6\u5668\u5C5E\u6027\u914D\u7F6E
-#============================================================================
-# \u8C03\u5EA6\u6807\u8BC6\u540D \u96C6\u7FA4\u4E2D\u6BCF\u4E00\u4E2A\u5B9E\u4F8B\u90FD\u5FC5\u987B\u4F7F\u7528\u76F8\u540C\u7684\u540D\u79F0
-spring.quartz.properties.org.quartz.scheduler.instanceName=ClusterQuartz
-# ID\u8BBE\u7F6E\u4E3A\u81EA\u52A8\u83B7\u53D6 \u6BCF\u4E00\u4E2A\u5FC5\u987B\u4E0D\u540C
-spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
-
-#============================================================================
-# \u914D\u7F6EThreadPool
-#============================================================================
-# \u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B\uFF08\u4E00\u822C\u4F7F\u7528SimpleThreadPool\u5373\u53EF\u6EE1\u8DB3\u51E0\u4E4E\u6240\u6709\u7528\u6237\u7684\u9700\u6C42\uFF09
-spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
-# \u6307\u5B9A\u7EBF\u7A0B\u6570\uFF0C\u4E00\u822C\u8BBE\u7F6E\u4E3A1-100\u76F4\u63A5\u7684\u6574\u6570\uFF0C\u6839\u636E\u7CFB\u7EDF\u8D44\u6E90\u914D\u7F6E
-spring.quartz.properties.org.quartz.threadPool.threadCount=10
-# \u8BBE\u7F6E\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7(\u53EF\u4EE5\u662FThread.MIN_PRIORITY\uFF08\u53731\uFF09\u548CThread.MAX_PRIORITY\uFF08\u8FD9\u662F10\uFF09\u4E4B\u95F4\u7684\u4EFB\u4F55int \u3002\u9ED8\u8BA4\u503C\u4E3AThread.NORM_PRIORITY\uFF085\uFF09\u3002)
-spring.quartz.properties.org.quartz.threadPool.threadPriority=5

+ 0 - 97
paper-library-task/src/main/resources/application-task_offline.properties

@@ -1,97 +0,0 @@
-#\u7AEF\u53E3\u914D\u7F6E
-server.port=9013
-#tomcat\u6700\u5927\u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A200
-server.tomcat.threads.max=2500
-#tomcat\u6700\u5927\u8FDE\u63A5\u6570
-server.tomcat.max-connections=2500
-#tomcat\u7684URI\u7F16\u7801
-server.tomcat.uri-encoding=UTF-8
-
-#\u9879\u76EE\u540D\u79F0
-spring.application.name=paper-library-task
-
-#\u6570\u636E\u6E90\u914D\u7F6E
-db.host=localhost
-db.port=3306
-db.name=paper-library-v1.0.0
-db.username=root
-db.password=123456789
-
-#redis\u6570\u636E\u6E90\u914D\u7F6E
-com.qmth.redis.host=${db.host}
-com.qmth.redis.port=6379
-com.qmth.redis.db=2
-#com.qmth.redis.password
-
-#mysql\u914D\u7F6E
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
-com.qmth.fss.localfile.server=http://127.0.0.1:7001
-com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
-com.qmth.fss.localpdf.server=http://127.0.0.1:7001
-
-#\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.serverUpload=
-sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-sys.config.autoCreatePdfResetMaxCount=5
-sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=true
-sys.config.sessionActive=24h
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
-
-#\u65E5\u671F\u683C\u5F0F\u5316
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-#\u65E5\u5FD7\u914D\u7F6E
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/paper-library-task.log
-
-#============================================================================
-# \u914D\u7F6EJobStore
-#============================================================================
-spring.quartz.job-store-type=jdbc
-spring.quartz.jdbc.initialize-schema=never
-# JobDataMaps\u662F\u5426\u90FD\u4E3AString\u7C7B\u578B\uFF0C\u9ED8\u8BA4false
-spring.quartz.properties.org.quartz.jobStore.useProperties=false
-# \u8868\u7684\u524D\u7F00\uFF0C\u9ED8\u8BA4QRTZ_
-spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
-# \u662F\u5426\u52A0\u5165\u96C6\u7FA4
-spring.quartz.properties.org.quartz.jobStore.isClustered=true
-# \u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 ms
-spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=5000
-# \u5F53\u8BBE\u7F6E\u4E3A\u201Ctrue\u201D\u65F6\uFF0C\u6B64\u5C5E\u6027\u544A\u8BC9Quartz \u5728\u975E\u6258\u7BA1JDBC\u8FDE\u63A5\u4E0A\u8C03\u7528setTransactionIsolation\uFF08Connection.TRANSACTION_READ_COMMITTED\uFF09\u3002
-spring.quartz.properties.org.quartz.jobStore.txIsolationLevelReadCommitted=true
-# \u6570\u636E\u4FDD\u5B58\u65B9\u5F0F\u4E3A\u6570\u636E\u5E93\u6301\u4E45\u5316
-spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
-# \u6570\u636E\u5E93\u4EE3\u7406\u7C7B\uFF0C\u4E00\u822Corg.quartz.impl.jdbcjobstore.StdJDBCDelegate\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u6570\u636E\u5E93
-spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-#============================================================================
-# Scheduler \u8C03\u5EA6\u5668\u5C5E\u6027\u914D\u7F6E
-#============================================================================
-# \u8C03\u5EA6\u6807\u8BC6\u540D \u96C6\u7FA4\u4E2D\u6BCF\u4E00\u4E2A\u5B9E\u4F8B\u90FD\u5FC5\u987B\u4F7F\u7528\u76F8\u540C\u7684\u540D\u79F0
-spring.quartz.properties.org.quartz.scheduler.instanceName=ClusterQuartz
-# ID\u8BBE\u7F6E\u4E3A\u81EA\u52A8\u83B7\u53D6 \u6BCF\u4E00\u4E2A\u5FC5\u987B\u4E0D\u540C
-spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
-
-#============================================================================
-# \u914D\u7F6EThreadPool
-#============================================================================
-# \u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B\uFF08\u4E00\u822C\u4F7F\u7528SimpleThreadPool\u5373\u53EF\u6EE1\u8DB3\u51E0\u4E4E\u6240\u6709\u7528\u6237\u7684\u9700\u6C42\uFF09
-spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
-# \u6307\u5B9A\u7EBF\u7A0B\u6570\uFF0C\u4E00\u822C\u8BBE\u7F6E\u4E3A1-100\u76F4\u63A5\u7684\u6574\u6570\uFF0C\u6839\u636E\u7CFB\u7EDF\u8D44\u6E90\u914D\u7F6E
-spring.quartz.properties.org.quartz.threadPool.threadCount=10
-# \u8BBE\u7F6E\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7(\u53EF\u4EE5\u662FThread.MIN_PRIORITY\uFF08\u53731\uFF09\u548CThread.MAX_PRIORITY\uFF08\u8FD9\u662F10\uFF09\u4E4B\u95F4\u7684\u4EFB\u4F55int \u3002\u9ED8\u8BA4\u503C\u4E3AThread.NORM_PRIORITY\uFF085\uFF09\u3002)
-spring.quartz.properties.org.quartz.threadPool.threadPriority=5

+ 0 - 97
paper-library-task/src/main/resources/application-task_test.properties

@@ -1,97 +0,0 @@
-#\u7AEF\u53E3\u914D\u7F6E
-server.port=9014
-#tomcat\u6700\u5927\u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A200
-server.tomcat.threads.max=2500
-#tomcat\u6700\u5927\u8FDE\u63A5\u6570
-server.tomcat.max-connections=2500
-#tomcat\u7684URI\u7F16\u7801
-server.tomcat.uri-encoding=UTF-8
-
-#\u9879\u76EE\u540D\u79F0
-spring.application.name=paper-library-task
-
-#\u6570\u636E\u6E90\u914D\u7F6E
-db.host=localhost
-db.port=3306
-db.name=paper-library-v1.0.0
-db.username=root
-db.password=123456789
-
-#redis\u6570\u636E\u6E90\u914D\u7F6E
-com.qmth.redis.host=${db.host}
-com.qmth.redis.port=6379
-com.qmth.redis.db=2
-#com.qmth.redis.password
-
-#mysql\u914D\u7F6E
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=http://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=/Users/king/Downloads/file-temp
-com.qmth.fss.localfile.server=http://127.0.0.1:7001
-com.qmth.fss.localpdf.config=/Users/king/Downloads/pdf-temp
-com.qmth.fss.localpdf.server=http://127.0.0.1:7001
-
-#\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.serverUpload=
-sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-sys.config.autoCreatePdfResetMaxCount=5
-sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=true
-sys.config.sessionActive=24h
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
-
-#\u65E5\u671F\u683C\u5F0F\u5316
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-#\u65E5\u5FD7\u914D\u7F6E
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/paper-library-task.log
-
-#============================================================================
-# \u914D\u7F6EJobStore
-#============================================================================
-spring.quartz.job-store-type=jdbc
-spring.quartz.jdbc.initialize-schema=never
-# JobDataMaps\u662F\u5426\u90FD\u4E3AString\u7C7B\u578B\uFF0C\u9ED8\u8BA4false
-spring.quartz.properties.org.quartz.jobStore.useProperties=false
-# \u8868\u7684\u524D\u7F00\uFF0C\u9ED8\u8BA4QRTZ_
-spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
-# \u662F\u5426\u52A0\u5165\u96C6\u7FA4
-spring.quartz.properties.org.quartz.jobStore.isClustered=true
-# \u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 ms
-spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=5000
-# \u5F53\u8BBE\u7F6E\u4E3A\u201Ctrue\u201D\u65F6\uFF0C\u6B64\u5C5E\u6027\u544A\u8BC9Quartz \u5728\u975E\u6258\u7BA1JDBC\u8FDE\u63A5\u4E0A\u8C03\u7528setTransactionIsolation\uFF08Connection.TRANSACTION_READ_COMMITTED\uFF09\u3002
-spring.quartz.properties.org.quartz.jobStore.txIsolationLevelReadCommitted=true
-# \u6570\u636E\u4FDD\u5B58\u65B9\u5F0F\u4E3A\u6570\u636E\u5E93\u6301\u4E45\u5316
-spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
-# \u6570\u636E\u5E93\u4EE3\u7406\u7C7B\uFF0C\u4E00\u822Corg.quartz.impl.jdbcjobstore.StdJDBCDelegate\u53EF\u4EE5\u6EE1\u8DB3\u5927\u90E8\u5206\u6570\u636E\u5E93
-spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
-#============================================================================
-# Scheduler \u8C03\u5EA6\u5668\u5C5E\u6027\u914D\u7F6E
-#============================================================================
-# \u8C03\u5EA6\u6807\u8BC6\u540D \u96C6\u7FA4\u4E2D\u6BCF\u4E00\u4E2A\u5B9E\u4F8B\u90FD\u5FC5\u987B\u4F7F\u7528\u76F8\u540C\u7684\u540D\u79F0
-spring.quartz.properties.org.quartz.scheduler.instanceName=ClusterQuartz
-# ID\u8BBE\u7F6E\u4E3A\u81EA\u52A8\u83B7\u53D6 \u6BCF\u4E00\u4E2A\u5FC5\u987B\u4E0D\u540C
-spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
-
-#============================================================================
-# \u914D\u7F6EThreadPool
-#============================================================================
-# \u7EBF\u7A0B\u6C60\u7684\u5B9E\u73B0\u7C7B\uFF08\u4E00\u822C\u4F7F\u7528SimpleThreadPool\u5373\u53EF\u6EE1\u8DB3\u51E0\u4E4E\u6240\u6709\u7528\u6237\u7684\u9700\u6C42\uFF09
-spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
-# \u6307\u5B9A\u7EBF\u7A0B\u6570\uFF0C\u4E00\u822C\u8BBE\u7F6E\u4E3A1-100\u76F4\u63A5\u7684\u6574\u6570\uFF0C\u6839\u636E\u7CFB\u7EDF\u8D44\u6E90\u914D\u7F6E
-spring.quartz.properties.org.quartz.threadPool.threadCount=10
-# \u8BBE\u7F6E\u7EBF\u7A0B\u7684\u4F18\u5148\u7EA7(\u53EF\u4EE5\u662FThread.MIN_PRIORITY\uFF08\u53731\uFF09\u548CThread.MAX_PRIORITY\uFF08\u8FD9\u662F10\uFF09\u4E4B\u95F4\u7684\u4EFB\u4F55int \u3002\u9ED8\u8BA4\u503C\u4E3AThread.NORM_PRIORITY\uFF085\uFF09\u3002)
-spring.quartz.properties.org.quartz.threadPool.threadPriority=5

+ 0 - 2
paper-library-task/src/main/resources/application.properties

@@ -1,2 +0,0 @@
-#\u5207\u6362\u914D\u7F6E\u6587\u4EF6
-spring.profiles.active=task

+ 0 - 4
paper-library/pom.xml

@@ -24,10 +24,6 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        <dependency>
-            <groupId>com.qmth.paper.library.common.api</groupId>
-            <artifactId>paper-library-common-api</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>

+ 4 - 8
paper-library-common-api/src/main/java/com/qmth/paper/library/common/api/BasicAttachmentController.java → paper-library/src/main/java/com/qmth/paper/library/api/BasicAttachmentController.java

@@ -1,4 +1,4 @@
-package com.qmth.paper.library.common.api;
+package com.qmth.paper.library.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.paper.library.common.contant.ApiPrefixConstant;
@@ -8,32 +8,28 @@ import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  * 所有附件记录表 前端控制器
  * </p>
- *
- * @author xf
- * @since 2021-03-23
  */
 @Api(tags = "文件上传Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_COMMON + "/file")
 public class BasicAttachmentController {
 
-    @Autowired
+    @Resource
     private BasicAttachmentService basicAttachmentService;
 
     /**
      * 文件查询
-     *
-     * @return
      */
     @ApiOperation(value = "文件查询")
     @RequestMapping(value = "/get_one", method = RequestMethod.POST)

+ 3 - 8
paper-library-common-api/src/main/java/com/qmth/paper/library/common/api/BasicSchoolController.java → paper-library/src/main/java/com/qmth/paper/library/api/BasicSchoolController.java

@@ -1,4 +1,4 @@
-package com.qmth.paper.library.common.api;
+package com.qmth.paper.library.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.paper.library.common.bean.dto.SchoolDto;
@@ -8,33 +8,28 @@ import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
  * <p>
  * 学校表 前端控制器
  * </p>
- *
- * @author xf
- * @since 2021-03-23
  */
 @Api(tags = "学校Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_COMMON + "/school")
 public class BasicSchoolController {
 
-    @Autowired
+    @Resource
     private BasicSchoolService basicSchoolService;
 
     /**
      * 学校查询
-     *
-     * @return
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)

+ 0 - 3
paper-library/src/main/java/com/qmth/paper/library/api/BasicSemesterController.java

@@ -23,9 +23,6 @@ import javax.validation.constraints.Min;
  * <p>
  * 学期字典表 前端控制器
  * </p>
- *
- * @author wangliang
- * @since 2021-10-28
  */
 @Api(tags = "学期管理controller")
 @RestController

+ 0 - 3
paper-library/src/main/java/com/qmth/paper/library/api/BasicStudentController.java

@@ -36,9 +36,6 @@ import java.util.stream.Stream;
  * <p>
  * 学校id 前端控制器
  * </p>
- *
- * @author wangliang
- * @since 2021-08-02
  */
 @Api(tags = "学生管理controller")
 @RestController

+ 1 - 4
paper-library/src/main/java/com/qmth/paper/library/api/EnumsController.java

@@ -17,8 +17,6 @@ import java.util.List;
 
 /**
  * 枚举类型查询接口
- *
- * @Date: 2021/3/29.
  */
 @Api(tags = "枚举类型Controller")
 @RestController
@@ -28,8 +26,7 @@ public class EnumsController {
     /**
      * 查询
      *
-     * @param type
-     * @return
+     * @param type 类型
      */
     @RequestMapping(method = RequestMethod.POST)
     public Result list(@RequestParam(value = "type", required = true) String type) {

+ 7 - 10
paper-library/src/main/java/com/qmth/paper/library/api/MenuCustomController.java

@@ -6,6 +6,7 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.paper.library.business.bean.params.TSchoolPrivilegeParam;
 import com.qmth.paper.library.business.bean.result.CustomPrivilegeResult;
 import com.qmth.paper.library.business.bean.result.TSchoolPrivilegeResult;
+import com.qmth.paper.library.common.base.BaseEntity;
 import com.qmth.paper.library.common.bean.dto.PrivilegeDto;
 import com.qmth.paper.library.common.contant.ApiPrefixConstant;
 import com.qmth.paper.library.common.entity.*;
@@ -28,11 +29,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- * @Description: 菜单权限修改
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2021/10/29
+ * 菜单权限修改
  */
 @Api(tags = "菜单权限修改Controller")
 @RestController
@@ -83,7 +80,7 @@ public class MenuCustomController {
         if (!CollectionUtils.isEmpty(tSchoolPrivileges)) {//编辑
             Set<Long> changePrivilegeSetIds = tSchoolPrivileges.stream().filter(s -> !Arrays.asList(tSchoolPrivilegeParam.getPrivilegeIds()).contains(s.getPrivilegeId()))
                     .collect(Collectors.toList())
-                    .stream().map(s -> s.getPrivilegeId())
+                    .stream().map(TSchoolPrivilege::getPrivilegeId)
                     .collect(Collectors.toSet());
             //数据发生改变
             if (!CollectionUtils.isEmpty(changePrivilegeSetIds)) {
@@ -95,11 +92,11 @@ public class MenuCustomController {
                 if (!CollectionUtils.isEmpty(sysRoleList)) {
                     QueryWrapper<SysRolePrivilege> sysRolePrivilegeQueryWrapper = new QueryWrapper<>();
                     sysRolePrivilegeQueryWrapper.lambda()
-                            .in(SysRolePrivilege::getRoleId, sysRoleList.stream().map(s -> s.getId()).collect(Collectors.toList()))
+                            .in(SysRolePrivilege::getRoleId, sysRoleList.stream().map(BaseEntity::getId).collect(Collectors.toList()))
                             .in(SysRolePrivilege::getPrivilegeId, changePrivilegeSetIds);
                     List<SysRolePrivilege> sysRolePrivilegeList = sysRolePrivilegeService.list(sysRolePrivilegeQueryWrapper);
                     //仅删除绑定了该权限的角色用户缓存
-                    roleSetIds = sysRolePrivilegeList.stream().map(s -> s.getRoleId()).collect(Collectors.toSet());
+                    roleSetIds = sysRolePrivilegeList.stream().map(SysRolePrivilege::getRoleId).collect(Collectors.toSet());
                     sysRolePrivilegeService.remove(sysRolePrivilegeQueryWrapper);
                 }
             }
@@ -108,8 +105,8 @@ public class MenuCustomController {
         Long[] privilegeIds = tSchoolPrivilegeParam.getPrivilegeIds();
         if (Objects.nonNull(privilegeIds) && privilegeIds.length > 0) {
             List<TSchoolPrivilege> tSchoolPrivilegeList = new ArrayList<>();
-            for (int i = 0; i < privilegeIds.length; i++) {
-                tSchoolPrivilegeList.add(new TSchoolPrivilege(tSchoolPrivilegeParam.getSchoolId(), privilegeIds[i]));
+            for (Long privilegeId : privilegeIds) {
+                tSchoolPrivilegeList.add(new TSchoolPrivilege(tSchoolPrivilegeParam.getSchoolId(), privilegeId));
             }
             tSchoolPrivilegeService.saveBatch(tSchoolPrivilegeList);
         }

+ 1 - 1
paper-library/src/main/java/com/qmth/paper/library/api/SysController.java

@@ -335,7 +335,7 @@ public class SysController {
             authInfoService.appHasExpired(code);
             Map<String, String> map = new HashMap<>();
             if (Objects.nonNull(basicSchool.getLogo()) && (!basicSchool.getLogo().startsWith("http") || !basicSchool.getLogo().startsWith("https"))) {
-                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssLocalFileDomain().getServer());
+                String hostUrl = SystemConstant.getLocalFileHost(dictionaryConfig.fssDomain().getServer());
                 String filePath = SystemConstant.getLocalFilePath(hostUrl, basicSchool.getLogo());
                 String url = null;
                 if (filePath.startsWith("/")) {

+ 3 - 8
paper-library/src/main/java/com/qmth/paper/library/api/SysOrgController.java

@@ -48,8 +48,6 @@ public class SysOrgController {
 
     /**
      * 查询机构树
-     *
-     * @return
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
@@ -60,8 +58,7 @@ public class SysOrgController {
     /**
      * 新增/修改
      *
-     * @param org
-     * @return
+     * @param org 机构对象
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
@@ -75,8 +72,7 @@ public class SysOrgController {
     /**
      * 启用/禁用
      *
-     * @param org
-     * @return
+     * @param org 机构对象
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
@@ -87,8 +83,7 @@ public class SysOrgController {
     /**
      * 删除
      *
-     * @param ids
-     * @return
+     * @param ids ids
      */
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)

+ 7 - 13
paper-library/src/main/java/com/qmth/paper/library/api/SysPrivilegeController.java

@@ -8,9 +8,10 @@ import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+
 /**
  * <p>
  * 菜单权限表 前端控制器
@@ -24,13 +25,11 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_SYS + "/privilege")
 public class SysPrivilegeController {
 
-    @Autowired
+    @Resource
     private SysPrivilegeService sysPrivilegeService;
 
     /**
      * 查询
-     *
-     * @return
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
@@ -40,8 +39,6 @@ public class SysPrivilegeController {
 
     /**
      * 查询需要授权的菜单
-     *
-     * @return
      */
     @ApiOperation(value = "查询需要授权的菜单")
     @RequestMapping(value = "/list_auth", method = RequestMethod.POST)
@@ -52,8 +49,7 @@ public class SysPrivilegeController {
     /**
      * 新增/修改
      *
-     * @param privilege
-     * @return
+     * @param privilege privilege对象
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
@@ -64,8 +60,7 @@ public class SysPrivilegeController {
     /**
      * 删除
      *
-     * @param privilege
-     * @return
+     * @param privilege privilege对象
      */
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)
@@ -76,12 +71,11 @@ public class SysPrivilegeController {
     /**
      * 角色已绑定权限列表
      *
-     * @param roleId
-     * @return
+     * @param roleId 角色ID
      */
     @ApiOperation(value = "角色已绑定权限列表")
     @RequestMapping(value = "/get_role_privileges", method = RequestMethod.POST)
-    public Result getRolePrivileges(@RequestParam(value = "roleId", required = true) Long roleId) {
+    public Result getRolePrivileges(@RequestParam(value = "roleId") Long roleId) {
         return ResultUtil.ok(sysPrivilegeService.getRolePrivileges(roleId));
     }
 }

+ 24 - 21
paper-library/src/main/java/com/qmth/paper/library/api/SysRoleController.java

@@ -9,11 +9,11 @@ import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
@@ -23,9 +23,6 @@ import java.security.NoSuchAlgorithmException;
  * <p>
  * 角色表 前端控制器
  * </p>
- *
- * @author xf
- * @since 2021-03-23
  */
 @Api(tags = "角色Controller")
 @RestController
@@ -33,17 +30,16 @@ import java.security.NoSuchAlgorithmException;
 @Validated
 public class SysRoleController {
 
-    @Autowired
+    @Resource
     private SysRoleService sysRoleService;
 
     /**
      * 查询
      *
-     * @param name
-     * @param enable
-     * @param pageNumber
-     * @param pageSize
-     * @return
+     * @param name       名称
+     * @param enable     是否启用
+     * @param pageNumber 分页参数
+     * @param pageSize   分页参数
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
@@ -56,8 +52,6 @@ public class SysRoleController {
 
     /**
      * 新增用户时查询角色方法
-     *
-     * @return
      */
     @ApiOperation(value = "新增用户时查询角色方法")
     @RequestMapping(value = "/list_to_user", method = RequestMethod.POST)
@@ -68,8 +62,7 @@ public class SysRoleController {
     /**
      * 新增/修改
      *
-     * @param role
-     * @return
+     * @param role role对象
      */
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
@@ -83,8 +76,7 @@ public class SysRoleController {
     /**
      * 启用/禁用
      *
-     * @param role
-     * @return
+     * @param role role对象
      */
     @ApiOperation(value = "启用/禁用")
     @RequestMapping(value = "/enable", method = RequestMethod.POST)
@@ -95,8 +87,7 @@ public class SysRoleController {
     /**
      * 删除
      *
-     * @param id
-     * @return
+     * @param ids ids
      */
     @ApiOperation(value = "删除")
     @RequestMapping(value = "/remove", method = RequestMethod.POST)
@@ -107,13 +98,25 @@ public class SysRoleController {
     /**
      * 用户已绑定角色列表
      *
-     * @param userId
-     * @return
+     * @param userId 用户ID
      */
     @ApiOperation(value = "用户已绑定角色列表")
     @RequestMapping(value = "/get_user_roles", method = RequestMethod.POST)
-    public Result getUserRoles(@RequestParam(value = "userId", required = true) Long userId) {
+    public Result getUserRoles(@RequestParam(value = "userId") Long userId) {
         return ResultUtil.ok(sysRoleService.getUserRoles(userId));
     }
+
+    /**
+     * 设置内置角色
+     *
+     * @param
+     */
+    @ApiOperation(value = "内置角色")
+    @RequestMapping(value = "/builtin", method = RequestMethod.POST)
+    public Result builtin(@RequestParam Long id,
+                         @RequestParam boolean defaultRole) {
+        return ResultUtil.ok(sysRoleService.builtin(id, defaultRole));
+    }
+
 }
 

+ 1 - 5
paper-library-common-api/src/main/java/com/qmth/paper/library/common/api/SysRoleGroupMemberController.java → paper-library/src/main/java/com/qmth/paper/library/api/SysRoleGroupMemberController.java

@@ -1,4 +1,4 @@
-package com.qmth.paper.library.common.api;
+package com.qmth.paper.library.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.paper.library.common.bean.params.SysRoleGroupMemberParams;
@@ -20,15 +20,11 @@ import javax.validation.Valid;
  * <p>
  * 角色组成员表 前端控制器
  * </p>
- *
- * @author wangliang
- * @since 2022-03-08
  */
 @Api(tags = "角色组成员Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_SYS + "/role/group")
 @Validated
-//@Aac(auth = BOOL.FALSE, strict = BOOL.FALSE)
 public class SysRoleGroupMemberController {
 
     @Resource

+ 10 - 17
paper-library/src/main/java/com/qmth/paper/library/api/SysUserController.java

@@ -17,8 +17,6 @@ import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
 import io.swagger.annotations.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -39,17 +37,12 @@ import java.util.stream.Stream;
  * <p>
  * 用户表 前端控制器
  * </p>
- *
- * @author xf
- * @since 2021-03-23
  */
 @Api(tags = "用户Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_SYS + "/user")
 @Validated
 public class SysUserController {
-    private final static Logger log = LoggerFactory.getLogger(SysUserController.class);
-
     @Resource
     private SysUserService sysUserService;
 
@@ -63,11 +56,11 @@ public class SysUserController {
      * 用户列表查询
      *
      * @param userInfo   用户信息(账号/姓名/手机号)
-     * @param roleId
-     * @param orgId
-     * @param enable
-     * @param pageNumber
-     * @param pageSize
+     * @param roleId     角色ID
+     * @param orgId      机构ID
+     * @param enable     是否启用
+     * @param pageNumber 分页参数
+     * @param pageSize   分页参数
      */
     @ApiOperation(value = "查询")
     @PostMapping("/list")
@@ -83,7 +76,7 @@ public class SysUserController {
     /**
      * 新增/修改
      *
-     * @param userSaveParams
+     * @param userSaveParams 用户信息
      */
     @ApiOperation(value = "新增/修改")
     @PostMapping("/save")
@@ -97,7 +90,7 @@ public class SysUserController {
     /**
      * 启用/禁用
      *
-     * @param user
+     * @param user 用户信息
      */
     @ApiOperation(value = "启用/禁用")
     @PostMapping("/enable")
@@ -108,7 +101,7 @@ public class SysUserController {
     /**
      * 重置密码
      *
-     * @param user
+     * @param user 用户信息
      */
     @ApiOperation(value = "重置密码")
     @PostMapping("/reset_password")
@@ -140,7 +133,7 @@ public class SysUserController {
     /**
      * 绑定角色
      *
-     * @param sysUser
+     * @param sysUser 用户信息
      */
     @ApiOperation(value = "绑定角色")
     @PostMapping("/bind_roles")
@@ -151,7 +144,7 @@ public class SysUserController {
     @ApiOperation(value = "用户管理-批量导入(异步)")
     @RequestMapping(value = "/import", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result sysUserImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
+    public Result sysUserImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Map<String, Object> map = paperLibraryCommonService.saveTask(file, TaskTypeEnum.USER_IMPORT);
         map.put(SystemConstant.SYS_USER, sysUser);

+ 3 - 7
paper-library/src/main/java/com/qmth/paper/library/api/TBTaskController.java

@@ -13,8 +13,6 @@ import com.qmth.paper.library.common.service.TBTaskService;
 import com.qmth.paper.library.common.util.Result;
 import com.qmth.paper.library.common.util.ResultUtil;
 import io.swagger.annotations.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,17 +36,15 @@ import javax.validation.constraints.Min;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_DATA)
 @Validated
 public class TBTaskController {
-    private final static Logger log = LoggerFactory.getLogger(TBTaskController.class);
-
     @Resource
     TBTaskService tbTaskService;
 
     @ApiOperation(value = "任务管理查询接口")
     @PostMapping("/t_b_task/query")
     @ApiResponses({@ApiResponse(code = 200, message = "任务管理列表信息", response = TaskListResult.class)})
-    public Result taskQuery(@ApiParam(value = "任务状态", required = false) @RequestParam(required = false) TaskStatusEnum status,
-                            @ApiParam(value = "任务类型", required = false) @RequestParam(required = false) TaskTypeEnum type,
-                            @ApiParam(value = "任务数据结果", required = false) @RequestParam(required = false) TaskResultEnum result,
+    public Result taskQuery(@ApiParam(value = "任务状态") @RequestParam(required = false) TaskStatusEnum status,
+                            @ApiParam(value = "任务类型") @RequestParam(required = false) TaskTypeEnum type,
+                            @ApiParam(value = "任务数据结果") @RequestParam(required = false) TaskResultEnum result,
                             @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                             @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
         IPage<TaskListResult> taskListResultIPage = tbTaskService.query(new Page<>(pageNumber, pageSize), status, type, result);

+ 3 - 9
paper-library-common-api/src/main/java/com/qmth/paper/library/common/api/TSAuthController.java → paper-library/src/main/java/com/qmth/paper/library/api/TSAuthController.java

@@ -1,4 +1,4 @@
-package com.qmth.paper.library.common.api;
+package com.qmth.paper.library.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.solar.crypto.AppLicenseUtil;
@@ -10,8 +10,6 @@ import com.qmth.paper.library.common.util.ResultUtil;
 import com.qmth.paper.library.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -28,16 +26,12 @@ import java.io.IOException;
  * <p>
  * 激活授权配置表 前端控制器
  * </p>
- *
- * @author wangliang
- * @since 2022-04-26
  */
 @Api(tags = "授权配置Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + ApiPrefixConstant.PREFIX_AUTH)
 @Validated
 public class TSAuthController {
-    private final static Logger log = LoggerFactory.getLogger(TSAuthController.class);
 
     @Resource
     AuthInfoService authInfoService;
@@ -51,14 +45,14 @@ public class TSAuthController {
             response.setHeader("Content-Disposition", "attachment; filename=" + SystemConstant.urlEncode("device.info"));
             IOUtils.copy(new ByteArrayInputStream(AppLicenseUtil.buildDeviceInfo().value()), response.getOutputStream());
         } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
+            e.printStackTrace();
         }
     }
 
     @ApiOperation(value = "离线激活")
     @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Boolean.class)})
     @RequestMapping(value = "/offline/activation", method = RequestMethod.POST)
-    public Result offlineActivation(@ApiParam(value = "上传文件", required = true) @RequestParam(required = true) MultipartFile file) throws Exception {
+    public Result offlineActivation(@ApiParam(value = "上传文件", required = true) @RequestParam() MultipartFile file) throws Exception {
         try {
             authInfoService.updateLicense(file.getBytes());
         } catch (IOException e) {

+ 0 - 64
paper-library/src/main/resources/application-dev.properties

@@ -1,64 +0,0 @@
-server.port=8001
-spring.application.name=paper-library
-#----------tomcat-------------
-server.tomcat.threads.max=2500
-server.tomcat.max-connections=2500
-server.tomcat.uri-encoding=UTF-8
-
-#--------database config--------------
-db.host=localhost
-db.port=3306
-db.name=paper-library-v1.0.1
-db.username=root
-db.password=root
-
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-#---------sys config-----------------
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.sessionActive=24h
-spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/
-
-#----------------fss config-----------------
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=file-temp
-com.qmth.fss.localfile.server=http://localhost:8000
-
-#-----------------qmth boot config--------------
-com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
-#com.qmth.api.global-strict=false
-#com.qmth.api.global-rate-limit=1/5s
-
-#token
-com.qmth.auth.time-max-ahead=1m
-com.qmth.auth.time-max-delay=5m
-com.qmth.cache.expire-after-write=8h
-
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=logs/paper-library.log
-
-com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
-#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
-
-spring.cache.ehcache.config=classpath:ehcache/ehcache.xml
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-sms.config.smsNormalCode=qmth
-sms.config.codeExpiredTime=2
-sms.config.codeSendInterval=60
-sms.config.aliyunSMSKey=LTAI4Fi8jVRYT49QBXU9x5QX
-sms.config.aliyunSMSSecret=97aBLBfkQR5mzCiQa82yWLAH57eUd8
-sms.config.aliyunSMSSignName=\u9038\u6559\u4E91
-sms.config.aliyunSMSTplCode=SMS_147416565

+ 0 - 64
paper-library/src/main/resources/application-offline.properties

@@ -1,64 +0,0 @@
-server.port=7380
-spring.application.name=paper-library
-#----------tomcat-------------
-server.tomcat.threads.max=2500
-server.tomcat.max-connections=2500
-server.tomcat.uri-encoding=UTF-8
-
-#--------database config--------------
-db.host=localhost
-db.port=3306
-db.name=paper_library_db
-db.username=paperlibrary
-db.password=paperlibrary
-
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-#---------sys config-----------------
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.sessionActive=24h
-spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/
-
-#----------------fss config-----------------
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=file-temp
-com.qmth.fss.localfile.server=http://localhost:8000
-
-#-----------------qmth boot config--------------
-com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
-#com.qmth.api.global-strict=false
-#com.qmth.api.global-rate-limit=1/5s
-
-#token
-com.qmth.auth.time-max-ahead=1m
-com.qmth.auth.time-max-delay=5m
-com.qmth.cache.expire-after-write=8h
-
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=/Users/king/Downloads/paper-library.log
-
-com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
-#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
-
-spring.cache.ehcache.config=classpath:ehcache/ehcache.xml
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-sms.config.smsNormalCode=qmth
-sms.config.codeExpiredTime=2
-sms.config.codeSendInterval=60
-sms.config.aliyunSMSKey=LTAI4Fi8jVRYT49QBXU9x5QX
-sms.config.aliyunSMSSecret=97aBLBfkQR5mzCiQa82yWLAH57eUd8
-sms.config.aliyunSMSSignName=\u9038\u6559\u4E91
-sms.config.aliyunSMSTplCode=SMS_147416565

+ 0 - 98
paper-library/src/main/resources/application-test.properties

@@ -1,98 +0,0 @@
-server.port=8111
-#tomcat\u6700\u5927\u7EBF\u7A0B\u6570\uFF0C\u9ED8\u8BA4\u4E3A200
-server.tomcat.threads.max=2500
-#tomcat\u6700\u5927\u8FDE\u63A5\u6570
-server.tomcat.max-connections=2500
-#tomcat\u7684URI\u7F16\u7801
-server.tomcat.uri-encoding=UTF-8
-
-#\u9879\u76EE\u540D\u79F0
-spring.application.name=paper-library-test
-
-#\u6570\u636E\u6E90\u914D\u7F6E
-db.host=192.168.10.136
-db.port=3307
-db.name=paper-library-test
-db.username=paper
-db.password=paper
-
-#redis\u6570\u636E\u6E90\u914D\u7F6E
-com.qmth.redis.host=${db.host}
-com.qmth.redis.port=6379
-com.qmth.redis.db=2
-com.qmth.redis.password=123456
-
-#mysql\u914D\u7F6E
-com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
-com.qmth.datasource.username=${db.username}
-com.qmth.datasource.password=${db.password}
-com.qmth.mybatis.log-level=debug
-
-#\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=false
-sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
-sys.config.attachmentLength=100
-sys.config.attachmentSize=200
-sys.config.serverUpload=
-sys.config.adminLogoUrl=http://qmth-test.oss-cn-shenzhen.aliyuncs.com/frontend/wx_logo.png
-sys.config.autoCreatePdfResetMaxCount=5
-sys.config.threadPoolCoreSize=1
-sys.config.customThreadPoolCoreSize=true
-sys.config.sessionActive=24h
-spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
-
-com.qmth.fss.public.config=oss://key:secret@teachcloud-print-dev-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-print-dev-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-print-dev-private
-com.qmth.fss.localfile.config=/file-temp
-com.qmth.fss.localfile.server=http://192.168.10.136:8111
-com.qmth.fss.localpdf.config=/pdf-temp
-com.qmth.fss.localpdf.server=http://192.168.10.136:8111
-
-#com.qmth.api.uri-prefix=/aaa
-#\u7EDF\u8BA1\u9875\u9762\u914D\u7F6E
-com.qmth.api.metrics-endpoint=/metrics-count
-com.qmth.api.global-auth=true
-#com.qmth.api.global-strict=false
-#com.qmth.api.global-rate-limit=1/5s
-
-#token\u8D85\u65F6\u914D\u7F6E
-com.qmth.auth.time-max-ahead=1m
-com.qmth.auth.time-max-delay=5m
-
-#\u7F13\u5B58\u65F6\u95F4
-com.qmth.cache.expire-after-write=8h
-
-#api\u524D\u7F00
-prefix.url.common=admin/common
-prefix.url.sys=admin/sys
-prefix.url.basic=admin/basic
-prefix.url.data=admin/data
-prefix.url.menu=admin/menu
-prefix.url.auth=admin/auth
-prefix.url.paper=admin/paper
-prefix.url.client=admin/client
-
-#\u65E5\u671F\u683C\u5F0F\u5316
-spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-spring.jackson.time-zone=GMT+8
-
-#\u65E5\u5FD7\u914D\u7F6E
-com.qmth.logging.root-level=info
-com.qmth.logging.file-path=./logs/paper-library.log
-
-com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
-#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
-
-sms.config.smsNormalCode=qmth
-sms.config.codeExpiredTime=2
-sms.config.codeSendInterval=60
-#aliyun SMS key
-sms.config.aliyunSMSKey=LTAI4Fi8jVRYT49QBXU9x5QX
-#aliyun SMS secret
-sms.config.aliyunSMSSecret=97aBLBfkQR5mzCiQa82yWLAH57eUd8
-sms.config.aliyunSMSSignName=\u9038\u6559\u4E91
-sms.config.aliyunSMSTplCode=SMS_147416565
-sms.config.aliyunSMSAuditPassCode=SMS_216425141

+ 59 - 1
paper-library/src/main/resources/application.properties

@@ -1 +1,59 @@
-spring.profiles.active=dev
+server.port=8001
+spring.application.name=paper-library
+#----------tomcat-------------
+server.tomcat.threads.max=2500
+server.tomcat.max-connections=2500
+server.tomcat.uri-encoding=UTF-8
+
+#--------database config--------------
+db.host=localhost
+db.port=3306
+db.name=paper-library-v1.0.2
+db.username=root
+db.password=root
+
+com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
+com.qmth.datasource.username=${db.username}
+com.qmth.datasource.password=${db.password}
+com.qmth.mybatis.log-level=debug
+
+#---------sys config-----------------
+sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip,.mp3,.wav,.dll,.exe,.ftl,.bpmn,.xml
+sys.config.attachmentLength=100
+sys.config.attachmentSize=200
+sys.config.sessionActive=24h
+spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/
+
+#----------------fss config-----------------
+com.qmth.fss.config=file-temp
+com.qmth.fss.server=http://localhost:8001
+
+#-----------------qmth boot config--------------
+com.qmth.api.metrics-endpoint=/metrics-count
+com.qmth.api.global-auth=true
+#com.qmth.api.global-strict=false
+#com.qmth.api.global-rate-limit=1/5s
+
+#token
+com.qmth.auth.time-max-ahead=1m
+com.qmth.auth.time-max-delay=5m
+com.qmth.cache.expire-after-write=8h
+
+com.qmth.logging.root-level=info
+com.qmth.logging.file-path=logs/paper-library.log
+
+com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
+
+spring.cache.ehcache.config=classpath:ehcache/ehcache.xml
+spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+spring.jackson.time-zone=GMT+8
+
+sms.config.smsNormalCode=qmth
+sms.config.codeExpiredTime=2
+sms.config.codeSendInterval=60
+sms.config.aliyunSMSKey=LTAI4Fi8jVRYT49QBXU9x5QX
+sms.config.aliyunSMSSecret=97aBLBfkQR5mzCiQa82yWLAH57eUd8
+sms.config.aliyunSMSSignName=\u9038\u6559\u4E91
+sms.config.aliyunSMSTplCode=SMS_147416565

+ 0 - 12
pom.xml

@@ -11,8 +11,6 @@
         <module>paper-library</module>
         <module>paper-library-business</module>
         <module>paper-library-common</module>
-        <module>paper-library-common-api</module>
-        <module>paper-library-task</module>
     </modules>
 
     <properties>
@@ -64,21 +62,11 @@
                 <artifactId>paper-library-common</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>com.qmth.paper.library.common.api</groupId>
-                <artifactId>paper-library-common-api</artifactId>
-                <version>${project.version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.qmth.paper.library.business</groupId>
                 <artifactId>paper-library-business</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>com.qmth.paper.library.task</groupId>
-                <artifactId>paper-library-task</artifactId>
-                <version>${project.version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.qmth.boot</groupId>
                 <artifactId>starter-api</artifactId>

+ 0 - 804
sql/paper-library-v1.0.1.sql

@@ -1,804 +0,0 @@
-/*
- Navicat Premium Data Transfer
-
- Source Server         : 127.0.0.1
- Source Server Type    : MySQL
- Source Server Version : 50717
- Source Host           : localhost:3306
- Source Schema         : 2
-
- Target Server Type    : MySQL
- Target Server Version : 50717
- File Encoding         : 65001
-
- Date: 25/10/2022 11:01:40
-*/
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
--- ----------------------------
--- Table structure for basic_attachment
--- ----------------------------
-DROP TABLE IF EXISTS `basic_attachment`;
-CREATE TABLE `basic_attachment`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名',
-  `type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件类型',
-  `size` int(11) NOT NULL COMMENT '单位(KB)',
-  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件md5值',
-  `path` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '存储路径',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  `obj_id` bigint(20) NULL DEFAULT NULL COMMENT '关联业务id',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '所有附件记录表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_message
--- ----------------------------
-DROP TABLE IF EXISTS `basic_message`;
-CREATE TABLE `basic_message`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `user_id` bigint(20) NOT NULL COMMENT '消息接收人用户',
-  `user_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称',
-  `mobile_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电话号码',
-  `paper_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '试卷编号',
-  `course_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程代码',
-  `message_type` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息类型',
-  `business_operate` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务操作',
-  `business_id` bigint(20) NULL DEFAULT NULL COMMENT '业务id',
-  `template_code` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '消息模板代码',
-  `variable_params` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '变量参数内容',
-  `template_content` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '模板内容',
-  `send_status` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息发送状态',
-  `send_result` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息发送结果',
-  `remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  `resend_count` int(11) NULL DEFAULT NULL COMMENT '重试次数',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_operation_log
--- ----------------------------
-DROP TABLE IF EXISTS `basic_operation_log`;
-CREATE TABLE `basic_operation_log`  (
-  `id` bigint(20) NOT NULL COMMENT 'id',
-  `detail` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '日志详情',
-  `level` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志等级(PRIMARY(\"一级日志:敏感信息\"),SECONDARY(\"二级日志:重要信息\"),TERTIARY(\"三级日志:次要信息\"),QUATERNARY(\"四级日志:普通信息\"))',
-  `operation_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作类型(UN_KNOW(\"未知\"),SELECT(\"查询\"),EDIT(\"新增或更新\"),DELETE(\"删除\"))',
-  `operation_unit` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作对象(略)',
-  `system_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志系统类型',
-  `url` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求地址url',
-  `clazz_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类名称',
-  `method` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称',
-  `args` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '参数',
-  `run_time` bigint(20) NULL DEFAULT NULL COMMENT '方法运行时间',
-  `run_status` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法运行状态',
-  `return_value` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '方法返回值',
-  `user_id` bigint(20) NOT NULL COMMENT '用户对象id',
-  `user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '日志记录时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '基础日志记录表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_school
--- ----------------------------
-DROP TABLE IF EXISTS `basic_school`;
-CREATE TABLE `basic_school`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学校编码',
-  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学校名称',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,false:停用,true:启用',
-  `access_key` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '访问key',
-  `access_secret` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '访问秘钥',
-  `remark` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  `logo` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学校logo',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `code`(`code`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '学校表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_semester
--- ----------------------------
-DROP TABLE IF EXISTS `basic_semester`;
-CREATE TABLE `basic_semester`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学期名称',
-  `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学期编码',
-  `enable` tinyint(4) NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人id',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `semester_schoolId_name_idx`(`school_id`, `name`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '学期字典表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_student
--- ----------------------------
-DROP TABLE IF EXISTS `basic_student`;
-CREATE TABLE `basic_student`  (
-  `id` bigint(20) NOT NULL COMMENT '学生id',
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `student_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学生姓名',
-  `student_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学生编号',
-  `phone_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '电话号码',
-  `belong_org_id` bigint(20) NULL DEFAULT NULL COMMENT '所属院系',
-  `major_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '专业',
-  `clazz_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '行政班',
-  `enable` tinyint(4) NULL DEFAULT 1 COMMENT '可用状态(1:可用,0:不可用)',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '可操作人机构id',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人id',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人id',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `student_schoolId_code_orgId_idx`(`school_id`, `student_code`, `belong_org_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '学校id' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for basic_verify_code
--- ----------------------------
-DROP TABLE IF EXISTS `basic_verify_code`;
-CREATE TABLE `basic_verify_code`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
-  `mobile_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '手机号',
-  `expire_time` bigint(20) NOT NULL COMMENT '到期时间',
-  `valid_period` int(11) NOT NULL COMMENT '单位(分)',
-  `verify_code` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '4位数字',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '短信验证码记录表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for paper_archives
--- ----------------------------
-DROP TABLE IF EXISTS `paper_archives`;
-CREATE TABLE `paper_archives`  (
-  `id` bigint(20) NOT NULL,
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `semester_id` bigint(20) NOT NULL COMMENT '学期id',
-  `manager_org_id` bigint(20) NOT NULL COMMENT '档案管理部门Id',
-  `archives_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '档案名称',
-  `archives_code` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '档案编号',
-  `archives_type_id` bigint(20) NOT NULL COMMENT '档案类型id',
-  `manager_id` bigint(20) NOT NULL COMMENT '档案管理员',
-  `warning_time` bigint(20) NULL DEFAULT NULL COMMENT '档案到期预警时间',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '档案管理表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for paper_archives_type
--- ----------------------------
-DROP TABLE IF EXISTS `paper_archives_type`;
-CREATE TABLE `paper_archives_type`  (
-  `id` bigint(20) NOT NULL,
-  `school_id` bigint(20) NOT NULL,
-  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类型名称',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '档案类型表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for paper_library
--- ----------------------------
-DROP TABLE IF EXISTS `paper_library`;
-CREATE TABLE `paper_library`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `paper_scan_task_id` bigint(20) NULL DEFAULT NULL COMMENT '扫描任务Id',
-  `path` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '存储路径',
-  `paper_scan_task_detail_id` bigint(20) NULL DEFAULT NULL COMMENT '扫描任务详情表id',
-  `user_id` bigint(20) NULL DEFAULT NULL COMMENT '数据检验员id',
-  `sequence` int(11) NULL DEFAULT NULL COMMENT '图片序号',
-  `abnormal` tinyint(1) NULL DEFAULT '0' COMMENT '异常,默认否(0)',
-  `words_result` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'OCR识别结果',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE,
-  INDEX `idx_paper_scan_detail_id`(`paper_scan_task_detail_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '图片库' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for paper_scan_task
--- ----------------------------
-DROP TABLE IF EXISTS `paper_scan_task`;
-CREATE TABLE `paper_scan_task`  (
-  `id` bigint(20) NOT NULL,
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `paper_archives_id` bigint(20) NOT NULL COMMENT '档案表iid',
-  `scan_task_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '扫描任务名称',
-  `course_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程名称',
-  `teacher_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任课教师',
-  `teach_clazz_name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '教学班名称',
-  `scan_user_id` bigint(20) NULL DEFAULT NULL COMMENT '扫描员id',
-  `student_count` int(11) NULL DEFAULT 0 COMMENT '扫描量(份)',
-  `scan_count` int(11) NULL DEFAULT 0 COMMENT '扫描数量',
-  `enable` tinyint(1) NULL DEFAULT 0 COMMENT '任务是否已关闭(1-是,0-否)',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '扫描任务表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for paper_scan_task_detail
--- ----------------------------
-DROP TABLE IF EXISTS `paper_scan_task_detail`;
-CREATE TABLE `paper_scan_task_detail`  (
-  `id` bigint(20) NOT NULL,
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `paper_scan_task_id` bigint(20) NOT NULL COMMENT '扫描任务id',
-  `student_id` bigint(20) NOT NULL COMMENT '学生id',
-  `is_bind` tinyint(1) NULL DEFAULT 0 COMMENT '是否绑定图片(大于1张)',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '扫描任务详情表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for sys_org
--- ----------------------------
-DROP TABLE IF EXISTS `sys_org`;
-CREATE TABLE `sys_org`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型,SCHOOL:学校,COLLEGE:学院,FACULTY:院系,TEACHING_ROOM:教研室,PRINTING_HOUSE:印刷厂',
-  `code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机构代码',
-  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '机构名称',
-  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '上级机构id',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '修改时间',
-  `historic_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '历史机构名称',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `org_schoolId_name_idx`(`school_id`, `name`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '学校组织架构' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for sys_privilege
--- ----------------------------
-DROP TABLE IF EXISTS `sys_privilege`;
-CREATE TABLE `sys_privilege`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '菜单名称',
-  `url` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'URL地址',
-  `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类型,MENU:菜单,BUTTON:按钮,LINK:链接,URL:接口地址,LIST:列表,CONDITION:查询条件,TAB:选项卡',
-  `parent_id` bigint(20) NULL DEFAULT NULL COMMENT '上级菜单',
-  `sequence` int(11) NOT NULL COMMENT '序号',
-  `property` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '属性,NO_AUTH:无需鉴权,AUTH:鉴权,SYS:系统公用',
-  `related` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '关联属性,type为URL且property为AUTH才有',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  `default_auth` tinyint(4) NULL DEFAULT 1 COMMENT '默认权限,0:否,1:是',
-  `front_display` tinyint(1) NULL DEFAULT 1 COMMENT '是否前端展示',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单权限表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_privilege
--- ----------------------------
-INSERT INTO `sys_privilege` VALUES (1, '基础配置', 'base', 'MENU', NULL, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (2, '用户管理', 'user', 'MENU', 1, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (4, '组织架构', 'OrganizationManage', 'MENU', 2, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (5, '用户管理', 'UserManage', 'MENU', 2, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (6, '角色管理', 'RoleManage', 'MENU', 2, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (7, '权限管理', 'MenuManage', 'MENU', 129, 6, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (8, '档案管理', 'archives', 'MENU', 1, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (9, '档案管理', 'ArchivesManage', 'MENU', 8, 1, NULL, '27,34,35,37,410', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (10, '列表', 'List', 'LIST', 9, 1, 'AUTH', '15', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (11, '新增', 'Add', 'BUTTON', 9, 2, 'AUTH', '16', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (12, '编辑', 'Edit', 'LINK', 9, 3, 'AUTH', '16', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (13, '查看', 'Detail', 'LINK', 9, 4, 'AUTH', '17,29', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (14, '删除', 'Delete', 'LINK', 9, 5, 'AUTH', '18', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (15, '查询接口', '/api/admin/paper/archives/page', 'URL', 9, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (16, '新增/编辑接口', '/api/admin/paper/archives/save', 'URL', 9, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (17, '查看详情接口', '/api/admin/paper/archives/page_detail', 'URL', 9, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (18, '删除接口', '/api/admin/paper/archives/delete', 'URL', 9, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (19, '数据检查', 'library', 'MENU', 1, 4, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (20, '数据检查', 'LibraryManage', 'MENU', 19, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (21, '列表', 'List', 'LIST', 20, 1, 'AUTH', '23,24,25,26,29,40,41,43,410', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (22, '开始处理', 'Deal', 'BUTTON', 20, 2, 'AUTH', '27,28,34,35,42', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (23, '未处理接口', '/api/admin/paper/library/page_unbind', 'URL', 20, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (24, '未处理数量接口', '/api/admin/paper/library/count_unbind', 'URL', 20, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (25, '已处理接口', '/api/admin/paper/library/page_bind', 'URL', 20, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (26, '已处理数量接口', '/api/admin/paper/library/count_bind', 'URL', 20, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (27, '绑定接口', '/api/admin/paper/library/bind', 'URL', 20, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (28, '开始处理接口', '/api/admin/paper/library/get_bind_data', 'URL', 20, 6, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (29, '查询考生图片集合接口', '/api/admin/paper/library/list_student_picture', 'URL', 20, 7, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (30, '查询条件', 'Condition', 'CONDITION', 9, 3, 'AUTH', '15', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (31, '查询条件', 'Condition', 'CONDITION', 20, 3, 'AUTH', '23,24,25,26,40,41,43', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (32, '查询', 'Select', 'BUTTON', 9, 1, 'AUTH', '15', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (33, '查询', 'Select', 'BUTTON', 20, 1, 'AUTH', '23,24,25,26,40,41,43', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (34, '根据扫描任务ID查询学生', '/api/admin/paper/library/page_student', 'URL', 20, 7, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (35, 'ocr识别', '/api/admin/paper/library/ocr', 'URL', 20, 8, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (36, '所有任务考生信息', 'AllData', 'BUTTON', 20, 3, 'AUTH', '37', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (37, '所有任务考生信息', '/api/admin/paper/library/list_by_student_code', 'URL', 20, 9, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (38, '批量下载', 'Download', 'BUTTON', 9, 6, 'AUTH', '39', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (39, '批量下载', '/api/admin/paper/archives/paper_download', 'URL', 9, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (40, '异常分页接口', '/api/admin/paper/library/page_abnormal', 'URL', 20, 10, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (41, '异常数量接口', '/api/admin/paper/library/count_abnormal', 'URL', 20, 11, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (42, '标记异常接口', '/api/admin/paper/library/abnormal', 'URL', 20, 12, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (43, '获取单条图片详情', '/api/admin/paper/library/get_paper_data', 'URL', 20, 13, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (49, '查询条件-档案管理员', '/api/admin/common/manager_user/query', 'URL', 149, 10, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (50, '查询条件-学期', '/api/admin/common/semester/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (51, '查询条件-档案', '/api/admin/common/archives/query', 'URL', 149, 8, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (52, '查询条件-档案管理部门', '/api/admin/common/manager_org/query', 'URL', 149, 10, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (53, '查询条件-档案类型', '/api/admin/common/archives_type/query', 'URL', 149, 11, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (54, '查询条件-课程', '/api/admin/common/course/query', 'URL', 149, 12, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (55, '查询条件-教学班', '/api/admin/common/teach_clazz/query', 'URL', 149, 13, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (56, '查询条件-扫描任务', '/api/admin/common/scan_task/query', 'URL', 149, 14, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (57, '查询条件-学生查询条件级联查询(学生学院-专业-班级)', '/api/admin/common/basic_student/condition', 'URL', 149, 15, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (70, '异步任务查询', '/api/admin/data/t_b_task/query', 'URL', 149, 9, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (77, '查询', '/api/admin/sys/user/list', 'URL', 5, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (78, '新增/修改', '/api/admin/sys/user/save', 'URL', 5, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (79, '启用/禁用', '/api/admin/sys/user/enable', 'URL', 5, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (80, '重置密码', '/api/admin/sys/user/reset_password', 'URL', 5, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (81, '导入用户', '/api/admin/sys/user/import', 'URL', 5, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (82, '绑定角色', '/api/admin/sys/user/bind_roles', 'URL', 5, 6, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (83, '查询', '/api/admin/sys/role/list', 'URL', 6, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (84, '删除', '/api/admin/sys/role/remove', 'URL', 6, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (85, '新增/修改', '/api/admin/sys/role/save', 'URL', 6, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (86, '启用/禁用', '/api/admin/sys/role/enable', 'URL', 6, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (87, '用户已绑定角色列表', '/api/admin/sys/role/get_user_roles', 'URL', 5, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (88, '查询', '/api/admin/sys/privilege/list', 'URL', 7, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (89, '新增/修改', '/api/admin/sys/privilege/save', 'URL', 7, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (90, '删除', '/api/admin/sys/privilege/remove', 'URL', 7, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (91, '角色已绑定权限列表', '/api/admin/sys/privilege/get_role_privileges', 'URL', 6, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (92, '查询', '/api/admin/sys/org/list', 'URL', 4, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (93, '新增/修改', '/api/admin/sys/org/save', 'URL', 4, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (94, '删除', '/api/admin/sys/org/remove', 'URL', 4, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (95, '启用/禁用', '/api/admin/sys/org/enable', 'URL', 4, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (111, '扫描管理', 'scanTask', 'MENU', 1, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (112, '系统管理', 'data', 'MENU', 1, 5, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (129, '公共接口', 'common', 'MENU', NULL, 11, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (130, '用户登录相关', 'login', 'MENU', 129, 1, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (131, '用户登录', '/api/admin/common/login', 'URL', 130, 1, 'NO_AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (132, '查询用户权限', '/api/admin/common/get_menu', 'URL', 130, 2, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (133, '发送验证码', '/api/admin/common/get_verify_code', 'URL', 130, 3, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (134, '修改密码', '/api/admin/sys/user/update_password', 'URL', 130, 4, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (135, '用户登出', '/api/admin/common/logout', 'URL', 130, 5, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (136, '模糊查询', 'query', 'MENU', 129, 2, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (144, '文件相关', 'file', 'MENU', 129, 3, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (145, '文件上传', '/api/admin/common/file/upload', 'URL', 144, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (146, '文件查询', '/api/admin/common/file/get_one', 'URL', 144, 2, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (147, '文件下载', '/api/admin/common/file/download', 'URL', 144, 3, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (148, '文件预览', '/api/admin/common/file/preview', 'URL', 144, 4, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (149, '系统相关', 'sys', 'MENU', 129, 4, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (150, '查询枚举类型', '/api/admin/common/get_enums', 'URL', 149, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (151, '查询学校列表', '/api/admin/common/school/list', 'URL', 149, 2, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (152, '查询系统参数', '/api/admin/common/sys_config/get_one', 'URL', 149, 3, 'NO_AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (153, '根据学校代码查询学校信息', '/api/admin/common/school/query_by_school_code', 'URL', 149, 4, 'NO_AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (154, '其他', 'other', 'MENU', 129, 5, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (155, '用户导入(异步)', '/api/admin/sys/user/async/import', 'URL', 154, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (156, '用户导出', '/api/admin/sys/user/export', 'URL', 154, 2, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (179, '查询考务规则', '/api/admin/basic/exam_rule/list', 'URL', 149, 5, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (180, '查询可设置权限列表', '/api/admin/sys/privilege/list_auth', 'URL', 6, 6, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (181, '超管中心', 'admin', 'MENU', 129, 7, NULL, NULL, 0, 1, 1);
-INSERT INTO `sys_privilege` VALUES (182, '查询客服', '/api/admin/sys/user/list_customer', 'URL', 181, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (183, '新增客服', '/api/admin/sys/user/save_customer', 'URL', 181, 2, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (184, '查询用户可绑定角色', '/api/admin/sys/role/list_to_user', 'URL', 5, 7, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (185, '删除', 'Delete', 'LINK', 5, 6, 'AUTH', '186', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (186, '删除', '/api/admin/sys/user/remove', 'URL', 5, 8, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (195, '获取服务器时间', '/api/admin/common/get_system_time', 'URL', 129, 2, 'NO_AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (200, '扫描端', 'client', 'MENU', NULL, 1, NULL, '202,203,204,205', 1, 0, 0);
-INSERT INTO `sys_privilege` VALUES (201, '客户端登录', '/api/admin/client/user/login', 'URL', NULL, 1, 'NO_AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (202, '任务查询', '/api/admin/client/task/page', 'URL', 200, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (203, '开始扫描', '/api/admin/client/bind/user', 'URL', 200, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (204, '上传图片', '/api/admin/client/picture/upload', 'URL', 200, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (205, '开启/关闭', '/api/admin/client/task/enable', 'URL', 200, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (217, '查询', 'Select', 'BUTTON', 5, 1, 'AUTH', '77', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (218, '新增用户', 'Add', 'BUTTON', 5, 2, 'AUTH', '78', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (219, '编辑', 'Edit', 'LINK', 5, 1, 'AUTH', '78', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (220, '启用&禁用', 'Enable', 'LINK', 5, 2, 'AUTH', '79', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (221, '列表', 'List', 'LIST', 5, 1, 'AUTH', '77', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (222, '查询条件', 'Condition', 'CONDITION', 5, 1, 'AUTH', '184,87', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (223, '重置密码', 'Reset', 'LINK', 5, 3, 'AUTH', '80', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (225, '子部门', 'Add', 'LINK', 4, 1, 'AUTH', '93', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (226, '修改', 'Edit', 'LINK', 4, 2, 'AUTH', '93', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (227, '删除', 'Delete', 'LINK', 4, 3, 'AUTH', '94', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (228, '树形列表', 'List', 'LIST', 4, 1, 'AUTH', '92', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (229, '查询', 'Select', 'BUTTON', 6, 1, 'AUTH', '83,88', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (230, '添加角色', 'Add', 'BUTTON', 6, 2, 'AUTH', '85,89', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (231, '编辑', 'Edit', 'LINK', 6, 1, 'AUTH', '83,91', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (232, '删除', 'Delete', 'LINK', 6, 2, 'AUTH', '84,90', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (233, '列表', 'List', 'LIST', 6, 1, 'AUTH', '83', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (234, '查询条件', 'Condition', 'CONDITION', 4, 1, 'AUTH', '92', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (235, '查询条件', 'Condition', 'CONDITION', 6, 1, 'AUTH', '83', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (243, '批量导入', 'Export', 'BUTTON', 5, 3, 'AUTH', '81', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (244, '扫描任务管理', 'ScanTaskManage', 'MENU', 111, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (245, '新增/编辑', '/api/admin/paper/scan_task/save', 'URL', 244, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (246, '查询', '/api/admin/paper/scan_task/query', 'URL', 244, 2, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (247, '批量删除(物理)', '/api/admin/paper/scan_task/delete_batch', 'URL', 244, 3, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (248, '批量导入(异步)', '/api/admin/paper/scan_task/scan_task_import', 'URL', 244, 4, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (249, '任务详情查询', '/api/admin/paper/scan_task/task_detail_page', 'URL', 244, 5, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (250, '清除数据', '/api/admin/paper/scan_task/clear_scan_data', 'URL', 244, 6, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (251, '解绑扫描员', '/api/admin/paper/scan_task/unbind_scanner', 'URL', 244, 7, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (252, '绑定进度详情', '/api/admin/paper/scan_task/bind_progress_detail', 'URL', 244, 8, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (253, '释放正在绑定的任务', '/api/admin/paper/scan_task/release_binding_task', 'URL', 244, 9, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (254, '查询', 'Select', 'BUTTON', 244, 1, 'AUTH', '246', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (255, '列表', 'List', 'LIST', 244, 2, 'AUTH', '246', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (256, '删除', 'Delete', 'LINK', 244, 3, 'AUTH', '247', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (257, '查看详情', 'ScanTaskDetail', 'LINK', 244, 4, 'AUTH', '249', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (258, '清除数据', 'ClearScanData', 'LINK', 244, 5, 'AUTH', '250', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (259, '解绑扫描员', 'UnbindScanner', 'LINK', 244, 6, 'AUTH', '251', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (260, '绑定进度详情', 'ProgressDetail', 'LINK', 244, 7, 'AUTH', '252,253', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (262, '批量删除', 'DeleteBatch', 'BUTTON', 244, 9, 'AUTH', '247', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (263, '导入扫描任务', 'Import', 'BUTTON', 244, 10, 'AUTH', '248', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (264, '查询条件', 'Condition', 'CONDITION', 244, 11, 'AUTH', '246', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (358, '学生管理', 'StudentManage', 'MENU', 2, 6, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (362, '查询', '/api/admin/basic/student/query', 'URL', 358, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (363, '增/编辑', '/api/admin/basic/student/save', 'URL', 358, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (364, '批量删除(逻辑)', '/api/admin/basic/student/delete_batch', 'URL', 358, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (365, '批量导入(异步)', '/api/admin/basic/student/data_import', 'URL', 358, 4, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (370, '获取系统编码', '/api/admin/common/get_code', 'URL', 149, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (371, '根据类型查询机构', '/api/admin/sys/org/find_by_type', 'URL', 4, 5, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (377, '查询', 'Select', 'BUTTON', 358, 1, 'AUTH', '362,462', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (378, '列表', 'List', 'LIST', 358, 1, 'AUTH', '362', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (379, '新增', 'Add', 'BUTTON', 358, 1, 'AUTH', '359,363,462', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (380, '编辑', 'Edit', 'LINK', 358, 1, 'AUTH', '359,363', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (381, '删除', 'Delete', 'LINK', 358, 1, 'AUTH', '364', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (382, '批量导入', 'Import', 'BUTTON', 358, 2, 'AUTH', '365', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (400, '查询条件', 'Condition', 'CONDITION', 358, 1, 'AUTH', '377', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (401, '档案类型管理', 'ArchivesTypeManage', 'MENU', 112, 3, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (402, '列表', 'List', 'LIST', 401, 1, 'AUTH', '406', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (403, '新增类型', 'Add', 'BUTTON', 401, 2, 'AUTH', '407', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (404, '编辑', 'Edit', 'LINK', 401, 3, 'AUTH', '407', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (405, '删除', 'Delete', 'LINK', 401, 4, 'AUTH', '408', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (406, '查询接口', '/api/admin/paper/archives_type/page', 'URL', 401, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (407, '新增/编辑接口', '/api/admin/paper/archives_type/save', 'URL', 401, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (408, '删除接口', '/api/admin/paper/archives_type/delete', 'URL', 401, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (409, '系统设置', 'SystemSetting', 'MENU', 112, 1, NULL, '410,411', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (410, '查询', '/api/admin/sys/setting/get', 'URL', 409, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (411, '新增/修改', '/api/admin/sys/setting/save', 'URL', 409, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (412, '查询全局系统设置参数', '/api/admin/sys/setting_global/get', 'URL', 149, 16, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (413, '新增/修改全局系统设置参数', '/api/admin/sys/setting_global/save', 'URL', 149, 17, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (507, '菜单管理', 'MenuManage', 'MENU', 1, 7, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (508, '自定义菜单', 'CustomMenu', 'MENU', 507, 1, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (510, '学期管理', 'SemesterManage', 'MENU', 112, 2, NULL, NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (511, '新建学期', 'Add', 'BUTTON', 510, 1, 'AUTH', '534', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (512, '编辑', 'Edit', 'LINK', 510, 1, 'AUTH', '534', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (513, '删除', 'Delete', 'LINK', 510, 2, 'AUTH', '535', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (514, '列表', 'List', 'LIST', 510, 1, 'AUTH', '533', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (527, '查询自定义菜单权限', '/api/admin/menu/custom/list', 'URL', 508, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (528, '学校已绑定自定义菜单权限列表', '/api/admin/menu/custom/get_school_custom_privileges', 'URL', 508, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (529, '学校新增/修改自定义菜单权限', '/api/admin/menu/custom/save', 'URL', 508, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (530, '查询', 'Select', 'BUTTON', 508, 1, 'AUTH', '527,528', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (531, '保存', 'Save', 'BUTTON', 508, 2, 'AUTH', '529', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (533, '查询', '/api/admin/basic/semester/page', 'URL', 510, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (534, '新增/编辑', '/api/admin/basic/semester/save', 'URL', 510, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (535, '删除', '/api/admin/basic/semester/delete', 'URL', 510, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (539, '共用接口-查询字典', '/api/admin/common/get_dictionary', 'URL', 149, 7, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (547, '阅卷试卷上传待办计数接口', '/api/admin/work/structure/task/ready_count', 'URL', 16, 7, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (548, '阅卷试卷上传待办接口', '/api/admin/work/structure/task/ready', 'URL', 16, 8, 'SYS', '490', 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (549, '短信日志', 'SmsManage', 'MENU', 112, 4, NULL, NULL, 1, 0, 0);
-INSERT INTO `sys_privilege` VALUES (550, '查询', 'Select', 'BUTTON', 549, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (551, '查询', '/api/admin/basic/message/list', 'URL', 550, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (552, '查询短信类型', '/api/admin/basic/message/list_message_types', 'URL', 550, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (553, '短信失败重发', '/api/admin/basic/message/resend', 'URL', 550, 3, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (554, '查询条件', 'Condition', 'CONDITION', 549, 1, 'AUTH', NULL, 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (555, '列表', 'List', 'LIST', 549, 1, 'AUTH', '551,552', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (556, '短信失败重发', 'Send', 'LINK', 549, 1, 'AUTH', '553', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (558, '模糊查询', '/api/admin/basic/semester/list', 'URL', 510, 1, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (564, '考试试卷文件上传接口', '/api/admin/common/file/exam_paper_upload', 'URL', 144, 5, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (569, '根据条件删除(物理)', '/api/admin/basic/student/delete_by_condition', 'URL', 358, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (570, '根据条件删除', 'Delete', 'BUTTON', 358, 1, 'AUTH', '569', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (634, '发送验证码(绑定手机号)', '/api/admin/common/get_verify_code_for_bind', 'URL', 130, 3, 'SYS', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (647, '成员管理', 'Manager', 'LINK', 6, 3, 'AUTH', '648,649', 1, 0, 1);
-INSERT INTO `sys_privilege` VALUES (648, '新增/修改', '/api/admin/sys/role/group/save', 'URL', 647, 1, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (649, '查询', '/api/admin/sys/role/group/list', 'URL', 647, 2, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (675, '授权配置', 'AuthManage', 'MENU', 1, 6, NULL, NULL, 1, 0, 0);
-INSERT INTO `sys_privilege` VALUES (676, '授权配置-导出硬件信息按钮', 'Export', 'BUTTON', 675, 1, 'AUTH', '677,678,679', 1, 0, 0);
-INSERT INTO `sys_privilege` VALUES (677, '导出硬件信息', '/api/admin/auth/export/device/info', 'URL', 676, 1, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (678, '离线激活', '/api/admin/auth/offline/activation', 'URL', 676, 2, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (679, '查询激活信息', '/api/admin/auth/select', 'URL', 676, 3, 'AUTH', NULL, 1, 1, 0);
-INSERT INTO `sys_privilege` VALUES (757, '导入组织架构', '/api/admin/sys/org/import', 'URL', 4, 5, 'AUTH', NULL, 1, 1, 1);
-INSERT INTO `sys_privilege` VALUES (758, '导入组织架构', 'Import', 'BUTTON', 4, 4, 'AUTH', '757', 1, 0, 1);
-
--- ----------------------------
--- Table structure for sys_role
--- ----------------------------
-DROP TABLE IF EXISTS `sys_role`;
-CREATE TABLE `sys_role`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色类别,ADMIN:超级管理员,SCHOOL_ADMIN:管理员:EXAM_TEACHER:考务老师,QUESTION_TEACHER:命题老师,CUSTOMER:客服人员,PRINTER:印刷人员,CUSTOM:自定义',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '修改时间',
-  `default_role` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否系统内置角色,1:是,0:不是',
-  `source` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色来源,ANALYSIS:教研分析',
-  `interpret` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '角色说明',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `role_schoolId_name_idx`(`school_id`, `name`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_role
--- ----------------------------
-INSERT INTO `sys_role` VALUES (1, NULL, NULL, '系统管理员', 1, 'ADMIN', NULL, NULL, NULL, NULL, 1, NULL, '系统内置');
-INSERT INTO `sys_role` VALUES (2, NULL, NULL, '档案管理员', 1, 'ARCHIVIST', 1, 1665561494512, 299492059637612544, 1666343020661, 1, 'SYS', '系统内置');
-INSERT INTO `sys_role` VALUES (3, NULL, NULL, '扫描员', 1, 'SCANNER', 1, 1665560162947, 299492059637612544, 1666338980206, 1, 'SYS', '系统内置');
-INSERT INTO `sys_role` VALUES (4, NULL, NULL, '数据校验员', 1, 'DATA_CHECKER', 1, 1665561477787, 1, 1666316593841, 1, 'SYS', '系统内置');
-
--- ----------------------------
--- Table structure for sys_role_group_member
--- ----------------------------
-DROP TABLE IF EXISTS `sys_role_group_member`;
-CREATE TABLE `sys_role_group_member`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `role_id` bigint(20) NOT NULL COMMENT '角色id',
-  `user_id` bigint(20) NOT NULL COMMENT '用户id',
-  `member_id` bigint(20) NOT NULL COMMENT '成员id',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `role_group_roleId_memberId_idx`(`role_id`, `member_id`, `enable`) USING BTREE,
-  INDEX `role_group_member_idx`(`role_id`, `user_id`, `member_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色组成员表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for sys_role_privilege
--- ----------------------------
-DROP TABLE IF EXISTS `sys_role_privilege`;
-CREATE TABLE `sys_role_privilege`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `role_id` bigint(20) NOT NULL COMMENT '角色id',
-  `privilege_id` bigint(20) NOT NULL COMMENT '菜单id',
-  `enable` tinyint(4) NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_role_privilege
--- ----------------------------
-INSERT INTO `sys_role_privilege` VALUES (1582980520034942978, 4, 1, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520043331586, 4, 33, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520047525889, 4, 34, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520051720194, 4, 35, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520051720195, 4, 36, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520055914497, 4, 37, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520055914498, 4, 19, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520060108801, 4, 20, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520060108802, 4, 21, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520060108803, 4, 22, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520064303106, 4, 23, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520064303107, 4, 24, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497409, 4, 25, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497410, 4, 26, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497411, 4, 410, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520072691713, 4, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520072691714, 4, 28, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520072691715, 4, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520076886018, 4, 31, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497412, 4, 40, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497413, 4, 41, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497414, 4, 42, 1);
-INSERT INTO `sys_role_privilege` VALUES (1582980520068497415, 4, 43, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583366560558071809, 3, 200, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583366560566460417, 3, 202, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583366560566460418, 3, 203, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583366560570654722, 3, 204, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583366560570654723, 3, 205, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507484000257, 2, 32, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507492388866, 2, 1, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507492388867, 2, 34, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507496583170, 2, 35, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507496583171, 2, 37, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507500777473, 2, 38, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507504971778, 2, 39, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507504971779, 2, 8, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507509166082, 2, 9, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507509166083, 2, 10, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507513360386, 2, 11, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507513360387, 2, 12, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507517554690, 2, 13, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507517554691, 2, 14, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507521748994, 2, 15, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507521748995, 2, 16, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507525943298, 2, 17, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507525943299, 2, 18, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507530137601, 2, 410, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507534331905, 2, 27, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507534331906, 2, 29, 1);
-INSERT INTO `sys_role_privilege` VALUES (1583383507538526210, 2, 30, 1);
-
--- ----------------------------
--- Table structure for sys_setting
--- ----------------------------
-DROP TABLE IF EXISTS `sys_setting`;
-CREATE TABLE `sys_setting`  (
-  `id` bigint(20) NOT NULL,
-  `school_id` bigint(20) NOT NULL COMMENT '学校Id',
-  `parameter_object` varchar(2000) NOT NULL COMMENT '参数对象(json)',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统设置' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for sys_setting_global
--- ----------------------------
-DROP TABLE IF EXISTS `sys_setting_global`;
-CREATE TABLE `sys_setting_global`  (
-    `id` bigint(20) NOT NULL,
-    `parameter_object` varchar(2000) NOT NULL COMMENT '参数对象(json)',
-    `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-    `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-    `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-    `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-    PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统全局设置' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for sys_user
--- ----------------------------
-DROP TABLE IF EXISTS `sys_user`;
-CREATE TABLE `sys_user`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `login_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
-  `real_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',
-  `code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工号',
-  `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
-  `mobile_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  `pwd_count` tinyint(4) NULL DEFAULT 0 COMMENT '密码修改次数,默认为0',
-  `pwd_update_time` bigint(20) NULL DEFAULT NULL COMMENT '密码修改时间',
-  `remark` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '修改时间',
-  `historic_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '历史用户名称',
-  `identify_area` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '识别区域,坐标数组,可传多个',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `user_schoolId_loginName_idx`(`school_id`, `login_name`) USING BTREE,
-  UNIQUE INDEX `uq_school_id_mobile_number`(`school_id`, `mobile_number`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_user
--- ----------------------------
-INSERT INTO `sys_user` VALUES (1, NULL, 'sysadmin', 'sysadmin', NULL, 'MTIzNDU2', NULL, NULL, 1, 1, 1629353956868, NULL, NULL, NULL, NULL, 1629353956881, NULL, NULL);
-
--- ----------------------------
--- Table structure for sys_user_role
--- ----------------------------
-DROP TABLE IF EXISTS `sys_user_role`;
-CREATE TABLE `sys_user_role`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `user_id` bigint(20) NOT NULL COMMENT '用户id',
-  `role_id` bigint(20) NOT NULL COMMENT '角色id',
-  `privilege_id` bigint(20) NULL DEFAULT NULL COMMENT '权限id',
-  `enable` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否启用,0:停用,1:启用',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户和角色关联表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_user_role
--- ----------------------------
-INSERT INTO `sys_user_role` VALUES (1, 1, 1, NULL, 1);
-
--- ----------------------------
--- Table structure for t_b_session
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_session`;
-CREATE TABLE `t_b_session`  (
-  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `identity` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户标识',
-  `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户类型',
-  `source` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '访问来源',
-  `platform` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备分类',
-  `device_id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '设备标识',
-  `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '登录IP地址',
-  `access_token` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '访问令牌',
-  `last_access_time` bigint(20) NULL DEFAULT NULL COMMENT '最近访问时间',
-  `last_access_ip` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最近访问IP地址',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '令牌更新时间',
-  `expire_time` bigint(20) NULL DEFAULT NULL COMMENT '令牌强制失效时间',
-  `app_source` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '应用来源',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '会话表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for t_b_task
--- ----------------------------
-DROP TABLE IF EXISTS `t_b_task`;
-CREATE TABLE `t_b_task`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NULL DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint(20) NULL DEFAULT NULL COMMENT '机构id',
-  `type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务类型,USER_IMPORT:用户导入,\nQUESTION_MISSION_BATCH_CREATE:批量新建命题任务,\nSAMPLE_EXPORT:导出审核样本,\nPAPER_DOWNLOAD:卷库下载,\nEXAMINATION_IMPORT:考务数据导入,\nEXAMINATION_EXPORT:考务数据导出,\nPRINT_PDF_DOWNLOAD:批量下载pdf,\nCREATE_PDF:生成pdf,\nCOURSE_IMPORT:课程导入',
-  `status` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务状态,INIT:未开始,RUNNING:进行中,FINISH:已完成',
-  `summary` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '实时摘要信息',
-  `result` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据结果,SUCCESS:成功,ERROR:失败',
-  `import_file_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '导入文件名',
-  `import_file_path` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '导入文件路径',
-  `export_file_path` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '导出文件路径',
-  `txt_file_path` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '报告路径',
-  `remark` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '备注',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '导入导出任务表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for t_s_auth
--- ----------------------------
-DROP TABLE IF EXISTS `t_s_auth`;
-CREATE TABLE `t_s_auth`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `access_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'accessKey',
-  `access_secret` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'accessSecret',
-  `description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '离线授权证书',
-  `type` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '授权类型',
-  `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
-  `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
-  `update_id` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
-  `update_time` bigint(20) NULL DEFAULT NULL COMMENT '更新时间',
-  `expire_time` bigint(20) NULL DEFAULT NULL COMMENT '过期时间',
-  `file` mediumblob NULL COMMENT '文件数据',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '激活授权配置表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Table structure for t_school_privilege
--- ----------------------------
-DROP TABLE IF EXISTS `t_school_privilege`;
-CREATE TABLE `t_school_privilege`  (
-  `id` bigint(20) NOT NULL COMMENT '主键',
-  `school_id` bigint(20) NOT NULL COMMENT '学校id',
-  `privilege_id` bigint(20) NOT NULL COMMENT '菜单权限id',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '学校菜单权限表' ROW_FORMAT = Dynamic;
-
-SET FOREIGN_KEY_CHECKS = 1;

+ 3 - 3
sql/paper-library-v1.0.1-按罗总要求优化后.sql → sql/paper-library-v1.0.2-按罗总要求优化后.sql

@@ -76,8 +76,8 @@ CREATE TABLE `basic_operation_log`  (
   `id` bigint(20) NOT NULL COMMENT 'id',
   `detail` mediumtext NOT NULL COMMENT '日志详情',
   `level` varchar(32) DEFAULT NULL COMMENT '日志等级(PRIMARY(\"一级日志:敏感信息\"),SECONDARY(\"二级日志:重要信息\"),TERTIARY(\"三级日志:次要信息\"),QUATERNARY(\"四级日志:普通信息\"))',
-  `operation_type` DEFAULT NULL COMMENT '操作类型(UN_KNOW(\"未知\"),SELECT(\"查询\"),EDIT(\"新增或更新\"),DELETE(\"删除\"))',
-  `operation_unit` DEFAULT NULL COMMENT '操作对象(略)',
+  `operation_type` varchar(32) DEFAULT NULL COMMENT '操作类型(UN_KNOW(\"未知\"),SELECT(\"查询\"),EDIT(\"新增或更新\"),DELETE(\"删除\"))',
+  `operation_unit` varchar(32) DEFAULT NULL COMMENT '操作对象(略)',
   `system_type` varchar(32) DEFAULT NULL COMMENT '日志系统类型',
   `url` varchar(64) DEFAULT NULL COMMENT '请求地址url',
   `clazz_name` varchar(64) DEFAULT NULL COMMENT '类名称',
@@ -108,7 +108,7 @@ CREATE TABLE `basic_school`  (
   `create_time` bigint(20) DEFAULT NULL COMMENT '创建时间',
   `update_id` bigint(20) DEFAULT NULL COMMENT '更新人',
   `update_time` bigint(20) DEFAULT NULL COMMENT '更新时间',
-  `logo` varchar(500) DEFAULT NULL COMMENT '学校logo',
+  `logo` text DEFAULT NULL COMMENT '学校logo',
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `code`(`code`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COMMENT = '学校表' ROW_FORMAT = Dynamic;