浏览代码

从授权配置了增加学校信息

wangliang 3 年之前
父节点
当前提交
0e3c55699f

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/AuthInfoService.java

@@ -2,6 +2,8 @@ package com.qmth.distributed.print.business.service;
 
 import com.qmth.boot.core.solar.model.AppInfo;
 
+import java.io.IOException;
+
 /**
  * @Description: 授权信息service
  * @Param:
@@ -30,7 +32,7 @@ public interface AuthInfoService {
      *
      * @param licenseData
      */
-    void updateLicense(byte[] licenseData);
+    void updateLicense(byte[] licenseData) throws Exception;
 
     /**
      * 查询授权信息

+ 68 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/AuthInfoServiceImpl.java

@@ -11,14 +11,27 @@ import com.qmth.distributed.print.business.mapper.TSAuthMapper;
 import com.qmth.distributed.print.business.service.AuthInfoService;
 import com.qmth.distributed.print.business.service.TSAuthService;
 import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
+import com.qmth.teachcloud.common.config.DictionaryConfig;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
+import com.qmth.teachcloud.common.service.BasicSchoolService;
 import com.qmth.teachcloud.common.service.CommonCacheService;
+import com.qmth.teachcloud.common.util.FileStoreUtil;
+import com.qmth.teachcloud.common.util.JacksonUtil;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -47,6 +60,18 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     @Resource
     CommonCacheService commonCacheService;
 
+    @Resource
+    BasicSchoolService basicSchoolService;
+
+    @Resource
+    BasicSchoolMapper basicSchoolMapper;
+
+    @Resource
+    FileStoreUtil fileStoreUtil;
+
+    @Resource
+    DictionaryConfig dictionaryConfig;
+
     /**
      * 授权信息初始化
      *
@@ -71,9 +96,10 @@ public class AuthInfoServiceImpl implements AuthInfoService {
                 QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
                 tsAuthQueryWrapper.lambda().isNotNull(TSAuth::getFile);
                 List<TSAuth> tsAuthList = tsAuthService.list(tsAuthQueryWrapper);
-                if (Objects.nonNull(tsAuthList) && tsAuthList.size() > 0) {
+                if (!CollectionUtils.isEmpty(tsAuthList)) {
                     for (TSAuth t : tsAuthList) {
                         appInfo = solarService.update(t.getFile());
+                        log.info("appInfo:{}", JacksonUtil.parseJson(appInfo));
                         saveAuthInfo(appInfo, AuthEnum.OFF_LINE, t.getFile());
                     }
                 }
@@ -106,7 +132,7 @@ public class AuthInfoServiceImpl implements AuthInfoService {
      * @param licenseData
      */
     @Override
-    public void updateLicense(byte[] licenseData) {
+    public void updateLicense(byte[] licenseData) throws Exception {
         AppInfo appInfo = solarService.update(licenseData);
         if (Objects.isNull(appInfo)) {
             throw ExceptionResultEnum.ERROR.exception("激活失败");
@@ -135,14 +161,17 @@ public class AuthInfoServiceImpl implements AuthInfoService {
      * @param authEnum
      */
     @Transactional
-    public void saveAuthInfo(AppInfo appInfo, AuthEnum authEnum, byte[] file) {
+    public void saveAuthInfo(AppInfo appInfo, AuthEnum authEnum, byte[] file) throws Exception {
         List<OrgInfo> orgInfoList = solarService.getOrgList();
         List<TSAuth> tsAuthList = null;
         Set<Long> orgIdsSet = null;
-        if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
+        Set<BasicSchool> basicSchoolSet = null;
+        if (!CollectionUtils.isEmpty(orgInfoList)) {
             tsAuthList = new ArrayList<>();
             orgIdsSet = new HashSet<>();
+            basicSchoolSet = new HashSet<>();
         }
+        boolean oss = dictionaryConfig.sysDomain().isOss();
         for (OrgInfo o : orgInfoList) {
             orgIdsSet.add(o.getId());
             if (authEnum == AuthEnum.OFF_LINE) {
@@ -155,12 +184,46 @@ public class AuthInfoServiceImpl implements AuthInfoService {
                 tsAuthList.add(new TSAuth(o.getId(), solarProperties.getAccessKey(), solarProperties.getAccessSecret(), authEnum, appInfo.getControl().getExpireTime()));
             }
             commonCacheService.updateAuthInfoCache(o.getCode());
+
+            QueryWrapper<BasicSchool> basicSchoolQueryWrapper = new QueryWrapper<>();
+            basicSchoolQueryWrapper.lambda().eq(BasicSchool::getCode, o.getCode());
+            int count = basicSchoolService.count(basicSchoolQueryWrapper);
+            if (count == 0) {//不存在则创建学校
+                BasicSchool basicSchool = new BasicSchool(o.getCode(), o.getName(), o.getAccessKey(), o.getAccessSecret());
+                String filePath = SystemConstant.TEMP_FILES_DIR + 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());
+                    logoFile.delete();
+                    basicSchool.setLogo(fileStoreUtil.getPrivateUrl(stringJoiner.toString(), UploadFileEnum.FILE.getFssType()));
+                } else {
+                    basicSchool.setLogo(filePath);
+                }
+                basicSchoolSet.add(basicSchool);
+            }
         }
-        if (Objects.nonNull(tsAuthList) && tsAuthList.size() > 0 && Objects.nonNull(orgIdsSet) && orgIdsSet.size() > 0) {
+        if (!CollectionUtils.isEmpty(tsAuthList) && !CollectionUtils.isEmpty(orgIdsSet)) {
             QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
             tsAuthQueryWrapper.lambda().in(TSAuth::getSchoolId, orgIdsSet);
             tsAuthService.remove(tsAuthQueryWrapper);
             tsAuthMapper.insertBatch(tsAuthList);
+
+            if (!CollectionUtils.isEmpty(basicSchoolSet)) {
+                basicSchoolMapper.insertBatch(basicSchoolSet);
+            }
         }
     }
 }

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TSAuthController.java

@@ -65,7 +65,7 @@ public class TSAuthController {
     @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) {
+    public Result offlineActivation(@ApiParam(value = "上传文件", required = true) @RequestParam(required = true) MultipartFile file) throws Exception {
         try {
             authInfoService.updateLicense(file.getBytes());
         } catch (IOException e) {

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/start/StartRunning.java

@@ -31,7 +31,7 @@ public class StartRunning implements CommandLineRunner {
     public void run(String... args) throws Exception {
         log.info("服务器启动时执行 start");
         SystemConstant.initTempFiles();
-        orgCenterDataDisposeService.updateSchoolInfo();
+//        orgCenterDataDisposeService.updateSchoolInfo();
         authInfoService.appInfoInit();
         log.info("服务器启动时执行 end");
     }

+ 1 - 1
distributed-print/src/main/resources/application-dev.properties

@@ -159,7 +159,7 @@ sync.config.markerSaveUrl=/api/exam/marker/save
 
 #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\u5237v3.0.2/tc-dev-wl.lic
+com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.0.2/tc-dev-wl.lic
 
 sms.config.smsNormalCode=qmth
 sms.config.codeExpiredTime=2

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

@@ -7,10 +7,10 @@ import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.TFCustomTypeEnum;
+import com.qmth.teachcloud.common.util.Base64Util;
 import com.qmth.teachcloud.common.util.ServletUtil;
 
-import java.io.File;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
 import java.lang.reflect.Field;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
@@ -539,4 +539,27 @@ public class SystemConstant {
             throw ExceptionResultEnum.ERROR.exception(e.getMessage());
         }
     }
+
+    /**
+     * 图片转换
+     *
+     * @param imgBase64
+     * @param filePath
+     * @throws IOException
+     */
+    public static void base64ToImage(String imgBase64, String filePath) throws IOException {
+        OutputStream out = null;
+        try {
+            byte[] b = Base64Util.decode(imgBase64);
+            out = new FileOutputStream(filePath);
+            out.write(b);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (Objects.nonNull(out)) {
+                out.flush();
+                out.close();
+            }
+        }
+    }
 }

+ 22 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicSchool.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.common.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
@@ -39,6 +40,27 @@ public class BasicSchool extends BaseEntity implements Serializable {
     @TableField(value = "logo")
     private String logo;
 
+    public BasicSchool() {
+
+    }
+
+    public BasicSchool(String code, String name, String accessKey, String accessSecret) {
+        this.code = code;
+        this.name = name;
+        this.accessKey = accessKey;
+        this.accessSecret = accessSecret;
+        setId(SystemConstant.getDbUuid());
+    }
+
+    public BasicSchool(String code, String name, String accessKey, String accessSecret, String logo) {
+        this.code = code;
+        this.name = name;
+        this.accessKey = accessKey;
+        this.accessSecret = accessSecret;
+        this.logo = logo;
+        setId(SystemConstant.getDbUuid());
+    }
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }

+ 2 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicSchoolMapper.java

@@ -1,6 +1,6 @@
 package com.qmth.teachcloud.common.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.common.base.CustomBaseMapper;
 import com.qmth.teachcloud.common.bean.dto.SchoolDto;
 import com.qmth.teachcloud.common.entity.BasicSchool;
 
@@ -14,7 +14,7 @@ import java.util.List;
  * @author xf
  * @since 2021-03-23
  */
-public interface BasicSchoolMapper extends BaseMapper<BasicSchool> {
+public interface BasicSchoolMapper extends CustomBaseMapper<BasicSchool> {
 
     List<SchoolDto> listSchool();
 }