Przeglądaj źródła

3.4.3 update -1205

xiaofei 6 miesięcy temu
rodzic
commit
ef09d2ba9e
16 zmienionych plików z 164 dodań i 101 usunięć
  1. 9 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/upgrade/Mainfest.java
  2. 9 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/upgrade/result/ClientResult.java
  3. 17 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientUpgrade.java
  4. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ClientUpgradeMapper.java
  5. 6 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientUpgradeService.java
  6. 60 31
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientUpgradeServiceImpl.java
  7. 2 1
      distributed-print/install/mysql/init/teachcloud_db.sql
  8. 7 1
      distributed-print/install/mysql/upgrade/3.4.2.sql
  9. 9 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/admin/ClientUpgradeController.java
  10. 3 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/admin/SysToolsController.java
  11. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  12. 5 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysTools.java
  13. 27 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ClientUpgradeToolTypeEnum.java
  14. 0 36
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ToolsTypeEnum.java
  15. 3 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysToolsService.java
  16. 4 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysToolsServiceImpl.java

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/upgrade/Mainfest.java

@@ -8,6 +8,7 @@ public class Mainfest {
     private Integer build;
     private String platform;
     private Integer supportMin;
+    private String serverMin;
     private List<MainfestApp> app;
     private MainfestScript script;
     private List<String> data;
@@ -44,6 +45,14 @@ public class Mainfest {
         this.supportMin = supportMin;
     }
 
+    public String getServerMin() {
+        return serverMin;
+    }
+
+    public void setServerMin(String serverMin) {
+        this.serverMin = serverMin;
+    }
+
     public List<MainfestApp> getApp() {
         return app;
     }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/upgrade/result/ClientResult.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.bean.upgrade.result;
 
 public class ClientResult {
     private String prefix;
+    private String serverVersion;
     private ClientInstallResult install;
     private ClientUpgradeResult upgrade;
 
@@ -13,6 +14,14 @@ public class ClientResult {
         this.prefix = prefix;
     }
 
+    public String getServerVersion() {
+        return serverVersion;
+    }
+
+    public void setServerVersion(String serverVersion) {
+        this.serverVersion = serverVersion;
+    }
+
     public ClientInstallResult getInstall() {
         return install;
     }

+ 17 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ClientUpgrade.java

@@ -1,11 +1,11 @@
 package com.qmth.distributed.print.business.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.io.Serializable;
 
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -23,9 +23,13 @@ public class ClientUpgrade implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId(value = "platform")
+    @MppMultiId(value = "platform")
     private String platform;
 
+    @ApiModelProperty(value = "文件类型")
+    @MppMultiId(value = "tool_type")
+    private ClientUpgradeToolTypeEnum toolType;
+
     @ApiModelProperty(value = "安装包保存地址")
     private String installPath;
 
@@ -51,8 +55,9 @@ public class ClientUpgrade implements Serializable {
     public ClientUpgrade() {
     }
 
-    public ClientUpgrade(String platform) {
+    public ClientUpgrade(String platform, ClientUpgradeToolTypeEnum toolType) {
         this.platform = platform;
+        this.toolType = toolType;
     }
 
     public String getPlatform() {
@@ -63,6 +68,14 @@ public class ClientUpgrade implements Serializable {
         this.platform = platform;
     }
 
+    public ClientUpgradeToolTypeEnum getToolType() {
+        return toolType;
+    }
+
+    public void setToolType(ClientUpgradeToolTypeEnum toolType) {
+        this.toolType = toolType;
+    }
+
     public String getInstallPath() {
         return installPath;
     }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ClientUpgradeMapper.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.mapper;
 
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
 import com.qmth.distributed.print.business.entity.ClientUpgrade;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -11,6 +12,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author xf
  * @since 2024-03-20
  */
-public interface ClientUpgradeMapper extends BaseMapper<ClientUpgrade> {
+public interface ClientUpgradeMapper extends MppBaseMapper<ClientUpgrade> {
 
 }

+ 6 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ClientUpgradeService.java

@@ -1,8 +1,9 @@
 package com.qmth.distributed.print.business.service;
 
+import com.github.jeffreyning.mybatisplus.service.IMppService;
 import com.qmth.distributed.print.business.bean.upgrade.result.ClientResult;
 import com.qmth.distributed.print.business.entity.ClientUpgrade;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import com.qmth.teachcloud.common.enums.clientpackage.ClientPackageEnum;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -14,11 +15,11 @@ import org.springframework.web.multipart.MultipartFile;
  * @author xf
  * @since 2024-03-20
  */
-public interface ClientUpgradeService extends IService<ClientUpgrade> {
+public interface ClientUpgradeService extends IMppService<ClientUpgrade> {
 
-    void upload(MultipartFile file, String md5, ClientPackageEnum type);
+    void upload(MultipartFile file, String md5, ClientPackageEnum type, String platform, ClientUpgradeToolTypeEnum toolType);
 
-    ClientUpgrade getByPlatform(String platform);
+    ClientUpgrade getByPlatformAndToolType(String platform, ClientUpgradeToolTypeEnum toolType);
 
-    ClientResult getExternalByPlatform(String platform);
+    ClientResult getExternalByPlatform(String platform, ClientUpgradeToolTypeEnum toolType);
 }

+ 60 - 31
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ClientUpgradeServiceImpl.java

@@ -1,10 +1,8 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
 import com.qmth.boot.tools.io.ZipReader;
-import com.qmth.boot.tools.io.ZipWriter;
 import com.qmth.distributed.print.business.bean.upgrade.Mainfest;
 import com.qmth.distributed.print.business.bean.upgrade.MainfestApp;
 import com.qmth.distributed.print.business.bean.upgrade.MainfestScript;
@@ -16,13 +14,12 @@ import com.qmth.distributed.print.business.mapper.ClientUpgradeMapper;
 import com.qmth.distributed.print.business.service.ClientUpgradeService;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.enums.clientpackage.ClientPackageEnum;
 import com.qmth.teachcloud.common.service.FileUploadService;
 import com.qmth.teachcloud.common.util.FileUtil;
-import com.qmth.teachcloud.common.util.Zip4jUtil;
-import okio.Buffer;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
@@ -34,8 +31,6 @@ import javax.annotation.Resource;
 import java.io.*;
 import java.util.Objects;
 import java.util.StringJoiner;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
 
 /**
  * <p>
@@ -46,16 +41,14 @@ import java.util.zip.ZipInputStream;
  * @since 2024-03-20
  */
 @Service
-public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, ClientUpgrade> implements ClientUpgradeService {
+public class ClientUpgradeServiceImpl extends MppServiceImpl<ClientUpgradeMapper, ClientUpgrade> implements ClientUpgradeService {
 
-    private static String platform = "WINDOWS";
-    private static String MAIN_FEST_JSON = "mainfest.json";
 
     @Resource
     private FileUploadService fileUploadService;
 
     @Override
-    public void upload(MultipartFile file, String md5, ClientPackageEnum type) {
+    public void upload(MultipartFile file, String md5, ClientPackageEnum type, String platform, ClientUpgradeToolTypeEnum toolType) {
         File parentDirVar = null;
         try {
             String fileName = FilenameUtils.getName(file.getOriginalFilename());
@@ -72,18 +65,17 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
                 throw ExceptionResultEnum.MD5_EQUALS_FALSE.exception();
             }
 
-            ClientUpgrade clientUpgrade = this.getByPlatform(platform);
+            ClientUpgrade clientUpgrade = this.getByPlatformAndToolType(platform, toolType);
             //安装包
             if (ClientPackageEnum.INSTALL.equals(type)) {
                 // 上传
-                String filePathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), "release", platform) + fileName;
+                String filePathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), toolType.getType(), "release", platform) + fileName;
                 FilePathVo filePathVo = fileUploadService.uploadFile(file, UploadFileEnum.UPGRADE, filePathName, fileMd5);
                 clientUpgrade.setInstallPath(JSON.toJSONString(filePathVo));
                 clientUpgrade.setInstallUploadTime(System.currentTimeMillis());
             } else if (ClientPackageEnum.UPGRADE.equals(type)) {
                 // 升级包文件上传
                 parentDirVar = SystemConstant.getFileTempDirVar(SystemConstant.ZIP_PREFIX);
-//                file.transferTo(parentDirVar);
                 FileUtils.copyToFile(file.getInputStream(), parentDirVar);
                 ZipReader zipReader = new ZipReader(parentDirVar);
                 String mainfestJson = "mainfest.json";
@@ -107,8 +99,17 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
                 if (supportMin == null) {
                     throw ExceptionResultEnum.ERROR.exception("supportMin值必填");
                 }
+                String serverMin = mainfest.getServerMin();
+                if (StringUtils.isBlank(serverMin)) {
+                    throw ExceptionResultEnum.ERROR.exception("serverMin值必填");
+                }
+                // 校验版本号是否支持
+                if (!compareVersion(SystemConstant.VERSION_VALUE, serverMin)) {
+                    throw ExceptionResultEnum.ERROR.exception("服务端版本号为[" + SystemConstant.VERSION_VALUE + "],升级程序支持的最低版本号为[" + serverMin + "]");
+                }
+
                 // 上传
-                String filePathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), "update", platform, version, String.valueOf(build)) + fileName;
+                String filePathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), toolType.getType(), "update", platform, version, String.valueOf(build)) + fileName;
                 FilePathVo filePathVo = fileUploadService.uploadFile(file, UploadFileEnum.UPGRADE, filePathName, fileMd5);
                 clientUpgrade.setVersion(version);
                 clientUpgrade.setBuild(build);
@@ -116,34 +117,34 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
                 clientUpgrade.setUpgradePath(JSON.toJSONString(filePathVo));
 
                 // 上传mainfest.json文件
-                String mainfestPathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), "update", platform, version, String.valueOf(build)) + mainfestJson;
+                String mainfestPathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), toolType.getType(), "update", platform, version, String.valueOf(build)) + mainfestJson;
                 FilePathVo mainfestPathVo = fileUploadService.uploadFile(zipReader.read(mainfestJson), UploadFileEnum.UPGRADE, mainfestPathName, DigestUtils.md5Hex(zipReader.read(mainfestJson)));
                 clientUpgrade.setMainfestPath(JSON.toJSONString(mainfestPathVo));
                 // 上传app目录下文件
                 String app = "app";
                 for (MainfestApp mainfestApp : mainfest.getApp()) {
                     // 上传
-                    uploadUpgradeZipFiles(version, build, zipReader, app, mainfestApp.getName());
+                    uploadUpgradeZipFiles(version, build, zipReader, app, mainfestApp.getName(), toolType, platform);
                 }
                 // 上传script目录下文件
                 String script = "script";
                 MainfestScript mainfestScript = mainfest.getScript();
-                uploadUpgradeZipFiles(version, build, zipReader, script, mainfestScript.getBefore());
-                uploadUpgradeZipFiles(version, build, zipReader, script, mainfestScript.getAfter());
+                uploadUpgradeZipFiles(version, build, zipReader, script, mainfestScript.getBefore(), toolType, platform);
+                uploadUpgradeZipFiles(version, build, zipReader, script, mainfestScript.getAfter(), toolType, platform);
                 for (String includeFileName : mainfestScript.getIncludes()) {
-                    uploadUpgradeZipFiles(version, build, zipReader, script, includeFileName);
+                    uploadUpgradeZipFiles(version, build, zipReader, script, includeFileName, toolType, platform);
                 }
                 // 上传data目录下文件
                 String data = "data";
                 for (String dataFileName : mainfest.getData()) {
-                    uploadUpgradeZipFiles(version, build, zipReader, data, dataFileName);
+                    uploadUpgradeZipFiles(version, build, zipReader, data, dataFileName, toolType, platform);
                 }
                 clientUpgrade.setUpgradeUploadTime(System.currentTimeMillis());
             } else {
                 throw ExceptionResultEnum.ERROR.exception("请选择正确的包类型");
             }
             // 保存或更新
-            this.saveOrUpdate(clientUpgrade);
+            this.saveOrUpdateByMultiId(clientUpgrade);
         } catch (Exception e) {
             throw ExceptionResultEnum.ERROR.exception(type.getName() + "上传失败:" + e.getMessage());
         } finally {
@@ -153,13 +154,13 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
         }
     }
 
-    private void uploadUpgradeZipFiles(String version, int build, ZipReader zipReader, String pathType, String fileName) {
+    private void uploadUpgradeZipFiles(String version, int build, ZipReader zipReader, String pathType, String fileName, ClientUpgradeToolTypeEnum toolType, String platform) {
         if (StringUtils.isBlank(fileName)) {
             return;
         }
         // 上传
         String filePath = FileUtil.replaceSplit(pathType + File.separator + fileName);
-        String dataPathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), "update", platform, version, String.valueOf(build), pathType) + fileName;
+        String dataPathName = buildPath(true, UploadFileEnum.UPGRADE.getTitle(), toolType.getType(), "update", platform, version, String.valueOf(build), pathType) + fileName;
         try {
             fileUploadService.uploadFile(zipReader.read(filePath), UploadFileEnum.UPGRADE, dataPathName, DigestUtils.md5Hex(zipReader.read(filePath)));
         } catch (Exception e) {
@@ -171,21 +172,20 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
      * 升级数据查询
      *
      * @param platform 平台类型
+     * @param toolType 文件类型
      */
     @Override
-    public ClientUpgrade getByPlatform(String platform) {
-        QueryWrapper<ClientUpgrade> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ClientUpgrade::getPlatform, platform);
-        ClientUpgrade clientUpgrade = this.getOne(queryWrapper);
+    public ClientUpgrade getByPlatformAndToolType(String platform, ClientUpgradeToolTypeEnum toolType) {
+        ClientUpgrade clientUpgrade = this.selectByMultiId(new ClientUpgrade(platform, toolType));
         if (clientUpgrade == null) {
-            clientUpgrade = new ClientUpgrade(platform);
+            clientUpgrade = new ClientUpgrade(platform, toolType);
         }
         return clientUpgrade;
     }
 
     @Override
-    public ClientResult getExternalByPlatform(String platform) {
-        ClientUpgrade clientUpgrade = this.getByPlatform(platform);
+    public ClientResult getExternalByPlatform(String platform, ClientUpgradeToolTypeEnum toolType) {
+        ClientUpgrade clientUpgrade = this.getByPlatformAndToolType(platform, toolType);
         ClientResult clientResult = new ClientResult();
         ClientInstallResult clientInstallResult = new ClientInstallResult();
         ClientUpgradeResult clientUpgradeResult = new ClientUpgradeResult();
@@ -211,6 +211,7 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
         }
         clientResult.setUpgrade(clientUpgradeResult);
         clientResult.setPrefix(prefix);
+        clientResult.setServerVersion(SystemConstant.VERSION_VALUE);
         return clientResult;
     }
 
@@ -253,4 +254,32 @@ public class ClientUpgradeServiceImpl extends ServiceImpl<ClientUpgradeMapper, C
         return path;
     }
 
+    /**
+     * 比较version1>=version2
+     *
+     * @param version1
+     * @param version2
+     */
+    public static Boolean compareVersion(String version1, String version2) {
+        String[] appVersion1 = version1.split("\\.");
+        String[] appVersion2 = version2.split("\\.");
+        //根据位数最短的判断
+        int lim = appVersion1.length > appVersion2.length ? appVersion1.length : appVersion2.length;
+        boolean flag = true;
+        //根据位数循环判断各个版本
+        for (int i = 0; i < lim; i++) {
+            String appVersion1Str = appVersion1.length - 1 >= i ? appVersion1[i] : "0";
+            String appVersion2Str = appVersion2.length - 1 >= i ? appVersion2[i] : "0";
+            if (Integer.parseInt(appVersion1Str) > Integer.parseInt(appVersion2Str)) {
+                flag = true;
+                break;
+            }
+            if (Integer.parseInt(appVersion1Str) < Integer.parseInt(appVersion2Str)) {
+                flag = false;
+                break;
+            }
+        }
+        return flag;
+    }
+
 }

+ 2 - 1
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -646,6 +646,7 @@ CREATE TABLE IF NOT EXISTS `client_status` (
 -- ----------------------------
 CREATE TABLE IF NOT EXISTS `client_upgrade` (
   `platform` varchar(20) NOT NULL COMMENT '系统',
+  `tool_type` VARCHAR(45) NOT NULL COMMENT '文件类型',
   `install_path` varchar(200) DEFAULT NULL COMMENT '安装包保存地址',
   `version` varchar(20) DEFAULT NULL COMMENT '版本名称',
   `build` varchar(45) DEFAULT NULL COMMENT '版本号,用于客户端比对版本高低',
@@ -654,7 +655,7 @@ CREATE TABLE IF NOT EXISTS `client_upgrade` (
   `mainfest_path` varchar(200) DEFAULT NULL COMMENT 'mainfest.json文件保存路径',
   `install_upload_time` bigint DEFAULT NULL COMMENT '安装包更新时间',
   `upgrade_upload_time` bigint DEFAULT NULL COMMENT '升级包更新时间',
-  PRIMARY KEY (`platform`)
+  PRIMARY KEY (`platform`, `tool_type`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 
 INSERT INTO `client_upgrade` (`platform`,`install_path`,`install_upload_time`) select 'WINDOWS','{"md5":"b458068a408a11a82625b65e7e252eff","path":"知学知考-印刷扫描客户端_V3.4.0.exe","type":"oss","uploadType":"UPGRADE"}', unix_timestamp()*1000;

+ 7 - 1
distributed-print/install/mysql/upgrade/3.4.2.sql

@@ -211,4 +211,10 @@ CREATE INDEX t_c_final_score_culture_program_id_IDX USING BTREE ON t_c_final_sco
 
 CREATE INDEX t_c_usual_score_culture_program_id_IDX USING BTREE ON t_c_usual_score (culture_program_id,exam_id,course_id,paper_number);
 
-CREATE INDEX t_r_basic_info_program_id_IDX USING BTREE ON t_r_basic_info (culture_program_id,exam_id,course_id,paper_number);
+CREATE INDEX t_r_basic_info_program_id_IDX USING BTREE ON t_r_basic_info (culture_program_id,exam_id,course_id,paper_number);
+
+ALTER TABLE `client_upgrade`
+    ADD COLUMN `tool_type` VARCHAR(45) NOT NULL COMMENT '文件类型' AFTER `platform`,
+DROP PRIMARY KEY,
+ADD PRIMARY KEY USING BTREE (`platform`, `tool_type`);
+UPDATE `client_upgrade` SET `tool_type` = 'TEACHCLOUD_CLIENT' WHERE (`platform` = 'WINDOWS') and (`tool_type` is null);

+ 9 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/admin/ClientUpgradeController.java

@@ -4,6 +4,7 @@ import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.ClientUpgradeService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import com.qmth.teachcloud.common.enums.clientpackage.ClientPackageEnum;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -33,16 +34,19 @@ public class ClientUpgradeController {
     @ApiOperation(value = "上传安装包/升级包")
     @RequestMapping(value = "/upload", method = RequestMethod.POST)
     public Result upload(@ApiParam(value = "上传文件", required = true) @RequestParam(value = "file") MultipartFile file,
-                        @ApiParam(value = "文件MD5", required = true) @RequestParam(value = "md5") String md5,
-                        @ApiParam(value = "上传文件", required = true) @RequestParam(value = "type") ClientPackageEnum type) {
-        clientUpgradeService.upload(file, md5, type);
+                         @ApiParam(value = "文件MD5", required = true) @RequestParam(value = "md5") String md5,
+                         @ApiParam(value = "上传文件", required = true) @RequestParam(value = "type") ClientPackageEnum type,
+                         @ApiParam(value = "上传文件") @RequestParam(value = "platform", required = false, defaultValue = "WINDOWS") String platform,
+                         @ApiParam(value = "上传文件类型") @RequestParam(value = "toolType", required = false, defaultValue = "TEACHCLOUD_CLIENT") ClientUpgradeToolTypeEnum toolType) {
+        clientUpgradeService.upload(file, md5, type, platform, toolType);
         return ResultUtil.ok(true);
     }
 
     @ApiOperation(value = "升级信息接口")
     @RequestMapping(value = "/external", method = RequestMethod.POST)
-    public Result external(@ApiParam(value = "上传文件") @RequestParam(value = "platform", required = false, defaultValue = "WINDOWS") String platform) {
-        return ResultUtil.ok(clientUpgradeService.getExternalByPlatform(platform));
+    public Result external(@ApiParam(value = "上传文件") @RequestParam(value = "platform", required = false, defaultValue = "WINDOWS") String platform,
+                           @ApiParam(value = "上传文件类型") @RequestParam(value = "toolType", required = false, defaultValue = "TEACHCLOUD_CLIENT") ClientUpgradeToolTypeEnum toolType) {
+        return ResultUtil.ok(clientUpgradeService.getExternalByPlatform(platform, toolType));
     }
 
 }

+ 3 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/admin/SysToolsController.java

@@ -3,7 +3,7 @@ package com.qmth.distributed.print.api.admin;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.enums.ToolsTypeEnum;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import com.qmth.teachcloud.common.service.SysToolsService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -34,14 +34,14 @@ public class SysToolsController {
     @RequestMapping(value = "/upload", method = RequestMethod.POST)
     public Result upload(@ApiParam(value = "上传文件", required = true) @RequestParam(value = "file") MultipartFile file,
                         @ApiParam(value = "文件MD5", required = true) @RequestParam(value = "md5") String md5,
-                        @ApiParam(value = "工具类型", required = true) @RequestParam(value = "type", defaultValue = "PICTURE_DOWNLOAD") ToolsTypeEnum type) {
+                        @ApiParam(value = "工具类型", required = true) @RequestParam(value = "type", defaultValue = "PICTURE_DOWNLOAD") ClientUpgradeToolTypeEnum type) {
         sysToolsService.upload(file, md5, type);
         return ResultUtil.ok(true);
     }
 
     @ApiOperation(value = "访问链接")
     @RequestMapping(value = "/external", method = RequestMethod.POST)
-    public Result external(@ApiParam(value = "工具类型", required = true) @RequestParam(value = "type") ToolsTypeEnum type) {
+    public Result external(@ApiParam(value = "工具类型", required = true) @RequestParam(value = "type") ClientUpgradeToolTypeEnum type) {
         return ResultUtil.ok(sysToolsService.getExternalByType(type));
     }
 

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -270,7 +270,7 @@ public class SystemConstant {
     public static final String ID = "id";
     public static final String MODEL = "model";
     public static final String VERSION = "version";
-    public static final String VERSION_VALUE = "3.4.2.1";
+    public static final String VERSION_VALUE = "3.4.2";
     public static final String FLOW_ENTITY_ID = "flowEntityId";
     public static final String CUSTOM_FLOW_ID = "customFlowId";
     public static final String ACT_FLOW_ID = "actFlowId";

+ 5 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysTools.java

@@ -2,11 +2,10 @@ package com.qmth.teachcloud.common.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 
-import com.qmth.teachcloud.common.enums.ToolsTypeEnum;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -26,7 +25,7 @@ public class SysTools implements Serializable {
 
     @ApiModelProperty(value = "类型")
     @TableId(value = "type")
-    private ToolsTypeEnum type;
+    private ClientUpgradeToolTypeEnum type;
 
     @ApiModelProperty(value = "文件地址信息")
     private String path;
@@ -41,16 +40,16 @@ public class SysTools implements Serializable {
     public SysTools() {
     }
 
-    public SysTools(ToolsTypeEnum type) {
+    public SysTools(ClientUpgradeToolTypeEnum type) {
         this.type = type;
         this.createTime = System.currentTimeMillis();
     }
 
-    public ToolsTypeEnum getType() {
+    public ClientUpgradeToolTypeEnum getType() {
         return type;
     }
 
-    public void setType(ToolsTypeEnum type) {
+    public void setType(ClientUpgradeToolTypeEnum type) {
         this.type = type;
     }
     public String getPath() {

+ 27 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ClientUpgradeToolTypeEnum.java

@@ -0,0 +1,27 @@
+package com.qmth.teachcloud.common.enums;
+
+/**
+ * 工具类型
+ */
+public enum ClientUpgradeToolTypeEnum {
+
+    TEACHCLOUD_CLIENT("client", "知学知考客户端"),
+    PICTURE_DOWNLOAD("picture", "图片下载工具");
+
+    private String type;
+    private String desc;
+
+    ClientUpgradeToolTypeEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+}

+ 0 - 36
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ToolsTypeEnum.java

@@ -1,36 +0,0 @@
-package com.qmth.teachcloud.common.enums;
-
-import java.util.Objects;
-
-/**
- * 工具类型
- */
-public enum ToolsTypeEnum {
-
-    PICTURE_DOWNLOAD("图片下载工具");
-
-    private String name;
-
-    private ToolsTypeEnum(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * 状态转换 toName
-     *
-     * @param name
-     * @return
-     */
-    public static String convertToName(String name) {
-        for (ToolsTypeEnum e : ToolsTypeEnum.values()) {
-            if (Objects.equals(name, e.getName())) {
-                return e.name();
-            }
-        }
-        return null;
-    }
-}

+ 3 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysToolsService.java

@@ -2,7 +2,7 @@ package com.qmth.teachcloud.common.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.entity.SysTools;
-import com.qmth.teachcloud.common.enums.ToolsTypeEnum;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import org.springframework.web.multipart.MultipartFile;
 
 /**
@@ -15,7 +15,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface SysToolsService extends IService<SysTools> {
 
-    void upload(MultipartFile file, String md5, ToolsTypeEnum type);
+    void upload(MultipartFile file, String md5, ClientUpgradeToolTypeEnum type);
 
-    SysTools getExternalByType(ToolsTypeEnum type);
+    SysTools getExternalByType(ClientUpgradeToolTypeEnum type);
 }

+ 4 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysToolsServiceImpl.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.entity.SysTools;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.ToolsTypeEnum;
+import com.qmth.teachcloud.common.enums.ClientUpgradeToolTypeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.mapper.SysToolsMapper;
 import com.qmth.teachcloud.common.service.FileUploadService;
@@ -36,7 +36,7 @@ public class SysToolsServiceImpl extends ServiceImpl<SysToolsMapper, SysTools> i
     private FileUploadService fileUploadService;
 
     @Override
-    public void upload(MultipartFile file, String md5, ToolsTypeEnum type) {
+    public void upload(MultipartFile file, String md5, ClientUpgradeToolTypeEnum type) {
         File parentDirVar = null;
         try {
             String fileName = FilenameUtils.getName(file.getOriginalFilename());
@@ -58,7 +58,7 @@ public class SysToolsServiceImpl extends ServiceImpl<SysToolsMapper, SysTools> i
             // 保存或更新
             this.saveOrUpdate(sysTools);
         } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception(type.getName() + "上传失败:" + e.getMessage());
+            throw ExceptionResultEnum.ERROR.exception(type.getDesc() + "上传失败:" + e.getMessage());
         } finally {
             if (parentDirVar != null) {
                 FileUtil.deleteFile(parentDirVar);
@@ -67,7 +67,7 @@ public class SysToolsServiceImpl extends ServiceImpl<SysToolsMapper, SysTools> i
     }
 
     @Override
-    public SysTools getExternalByType(ToolsTypeEnum type) {
+    public SysTools getExternalByType(ClientUpgradeToolTypeEnum type) {
         SysTools sysTools = this.getById(type);
         if (sysTools != null) {
             sysTools.setUrl(fileUploadService.filePreview(sysTools.getPath()));