Pārlūkot izejas kodu

加入系统授权配置

wangliang 3 gadi atpakaļ
vecāks
revīzija
38ebb0fc10
15 mainītis faili ar 311 papildinājumiem un 86 dzēšanām
  1. 30 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSAuth.java
  2. 27 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/AuthInfoService.java
  3. 109 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/AuthInfoServiceImpl.java
  4. 6 73
      distributed-print/src/main/java/com/qmth/distributed/print/api/TSAuthController.java
  5. 7 1
      distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintAuthenticationService.java
  6. 1 2
      distributed-print/src/main/java/com/qmth/distributed/print/interceptor/AuthInterceptor.java
  7. 5 0
      distributed-print/src/main/java/com/qmth/distributed/print/start/StartRunning.java
  8. 4 0
      distributed-print/src/main/resources/application-dev.properties
  9. 1 1
      pom.xml
  10. 30 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/AuthOrgInfoDto.java
  11. 14 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  12. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java
  13. 23 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CommonCacheService.java
  14. 43 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CommonCacheServiceImpl.java
  15. 9 8
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java

+ 30 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TSAuth.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.AuthEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -38,8 +39,36 @@ public class TSAuth extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "授权类型")
     private AuthEnum type;
 
-    public TSAuth(){
+    @ApiModelProperty(value = "过期时间")
+    private Long expireTime;
 
+    public TSAuth() {
+
+    }
+
+    public TSAuth(Long schoolId, String accessKey, String accessSecret, AuthEnum type, Long expireTime) {
+        setId(SystemConstant.getDbUuid());
+        this.schoolId = schoolId;
+        this.accessKey = accessKey;
+        this.accessSecret = accessSecret;
+        this.type = type;
+        this.expireTime = expireTime;
+    }
+
+    public TSAuth(Long schoolId, String description, AuthEnum type, Long expireTime) {
+        setId(SystemConstant.getDbUuid());
+        this.schoolId = schoolId;
+        this.description = description;
+        this.type = type;
+        this.expireTime = expireTime;
+    }
+
+    public Long getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(Long expireTime) {
+        this.expireTime = expireTime;
     }
 
     public Long getSchoolId() {

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/AuthInfoService.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.boot.core.solar.model.AppInfo;
+
+/**
+ * @Description: 授权信息service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/5/17
+ */
+public interface AuthInfoService {
+
+    /**
+     * 授权信息初始化
+     *
+     * @return
+     */
+    AppInfo appInfoInit();
+
+    /**
+     * app是否过期
+     *
+     * @param schoolId
+     */
+    void appHasExpired(Long schoolId);
+}

+ 109 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/AuthInfoServiceImpl.java

@@ -0,0 +1,109 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.core.solar.config.SolarProperties;
+import com.qmth.boot.core.solar.model.AppInfo;
+import com.qmth.boot.core.solar.model.OrgInfo;
+import com.qmth.boot.core.solar.service.SolarService;
+import com.qmth.distributed.print.business.entity.TSAuth;
+import com.qmth.distributed.print.business.enums.AuthEnum;
+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.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.CommonCacheService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description: 授权信息service
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2022/5/17
+ */
+@Service
+public class AuthInfoServiceImpl implements AuthInfoService {
+    private final static Logger log = LoggerFactory.getLogger(AuthInfoServiceImpl.class);
+
+    @Resource
+    SolarProperties solarProperties;
+
+    @Resource
+    SolarService solarService;
+
+    @Resource
+    TSAuthService tsAuthService;
+
+    @Resource
+    CommonCacheService commonCacheService;
+
+    /**
+     * 授权信息初始化
+     *
+     * @return
+     */
+    @Override
+    public AppInfo appInfoInit() {
+        AppInfo appInfo = solarService.getAppInfo();
+        if (Objects.nonNull(appInfo) && Objects.nonNull(solarProperties)) {
+            if (Objects.nonNull(solarProperties.getAccessKey())
+                    && !Objects.equals(solarProperties.getAccessKey().trim(), "")
+                    && Objects.nonNull(solarProperties.getAccessSecret())
+                    && !Objects.equals(solarProperties.getAccessSecret().trim(), "")) {//在线激活
+                saveAuthInfo(appInfo, AuthEnum.ON_LINE);
+            } else if (Objects.nonNull(solarProperties.getLicense())
+                    && !Objects.equals(solarProperties.getLicense().trim(), "")) {//离线激活
+                saveAuthInfo(appInfo, AuthEnum.OFF_LINE);
+            }
+        }
+        return appInfo;
+    }
+
+    /**
+     * app是否过期
+     *
+     * @param schoolId
+     * @return
+     */
+    @Override
+    public void appHasExpired(Long schoolId) {
+        if (Objects.nonNull(schoolId)) {
+            AuthOrgInfoDto authOrgInfoDto = commonCacheService.authInfoCache(schoolId);
+            if (Objects.isNull(authOrgInfoDto) || (Objects.nonNull(authOrgInfoDto) && authOrgInfoDto.getControl().hasExpired())) {
+                throw ExceptionResultEnum.AUTH_INFO_ERROR.exception();
+            }
+        }
+    }
+
+    /**
+     * 保存鉴权信息
+     *
+     * @param appInfo
+     * @param authEnum
+     */
+    @Transactional
+    protected void saveAuthInfo(AppInfo appInfo, AuthEnum authEnum) {
+        List<OrgInfo> orgInfoList = solarService.getOrgList();
+        List<TSAuth> tsAuthList = new ArrayList<>();
+        Set<Long> orgIdsSet = new HashSet<>();
+        for (OrgInfo o : orgInfoList) {
+            orgIdsSet.add(o.getId());
+            if (authEnum == AuthEnum.OFF_LINE) {
+                tsAuthList.add(new TSAuth(o.getId(), solarProperties.getLicense(), authEnum, appInfo.getControl().getExpireTime()));
+            } else {
+                tsAuthList.add(new TSAuth(o.getId(), solarProperties.getAccessKey(), solarProperties.getAccessSecret(), authEnum, appInfo.getControl().getExpireTime()));
+            }
+            commonCacheService.updateAuthInfoCache(o.getId());
+        }
+        QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
+        tsAuthQueryWrapper.lambda().in(TSAuth::getSchoolId, orgIdsSet);
+        tsAuthService.remove(tsAuthQueryWrapper);
+        tsAuthService.saveOrUpdateBatch(tsAuthList);
+    }
+}

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

@@ -2,19 +2,8 @@ package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.solar.crypto.AppLicenseUtil;
-import com.qmth.boot.core.solar.model.AppControl;
-import com.qmth.boot.core.solar.model.AppInfo;
-import com.qmth.boot.core.solar.service.SolarService;
-import com.qmth.boot.tools.device.DeviceInfo;
 import com.qmth.distributed.print.business.bean.dto.TSAuthDto;
-import com.qmth.distributed.print.business.entity.TSAuth;
-import com.qmth.distributed.print.business.service.TSAuthService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.util.JacksonUtil;
-import com.qmth.teachcloud.common.util.Result;
-import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -23,19 +12,13 @@ import io.swagger.annotations.ApiResponses;
 import org.apache.commons.io.IOUtils;
 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.RequestBody;
 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 javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
 import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
 
 /**
  * <p>
@@ -48,70 +31,20 @@ import java.net.URLEncoder;
 @Api(tags = "授权配置Controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.auth}")
-//@Aac(auth = BOOL.FALSE, strict = BOOL.FALSE)
 @Validated
 public class TSAuthController {
     private final static Logger log = LoggerFactory.getLogger(TSAuthController.class);
 
-    @Resource
-    TSAuthService tsAuthService;
-
-    @Resource
-    SolarService solarService;
-
-    @ApiOperation(value = "授权配置信息")
-    @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = TSAuthDto.class)})
-    @RequestMapping(value = "/info", method = RequestMethod.POST)
-    public Result info() {
-        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
-        return ResultUtil.ok(true);
-    }
-
-    @ApiOperation(value = "保存或更新授权配置信息")
-    @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = TSAuth.class)})
-    @RequestMapping(value = "/save", method = RequestMethod.POST)
-    public void save(@Valid @RequestBody TSAuth tsAuth, BindingResult bindingResult) {
-//        if (bindingResult.hasErrors()) {
-//            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
-//        }
-        Long schoolId = SystemConstant.getHeadOrUserSchoolId();
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        DeviceInfo deviceInfo = new DeviceInfo();
-        log.info("DeviceInfo.current():{}", JacksonUtil.parseJson(DeviceInfo.current()));
-        log.info("deviceInfo.getComputer():{}", JacksonUtil.parseJson(deviceInfo.getComputer()));
-        log.info("deviceInfo.getDiskStore():{}", JacksonUtil.parseJson(deviceInfo.getDiskStore()));
-        log.info("deviceInfo.getNetworkInterface():{}", JacksonUtil.parseJson(deviceInfo.getNetworkInterface()));
-        log.info("deviceInfo.getProcessor():{}", JacksonUtil.parseJson(deviceInfo.getProcessor()));
-        log.info("deviceInfo.uuid():{}", deviceInfo.uuid());
-
-        AppControl appControl = solarService.getAppControl();
-        log.info("appControl:{}", JacksonUtil.parseJson(appControl));
-//        List<OrgInfo> orgInfoList = solarService.getOrgList();
-//        log.info("orgInfoList:{}", JacksonUtil.parseJson(orgInfoList));
-        AppInfo appInfo = solarService.getAppInfo();
-        log.info("appInfo:{}", JacksonUtil.parseJson(appInfo));
-//        solarService.update();
+    @ApiOperation(value = "导出硬件信息")
+    @ApiResponses({@ApiResponse(code = 200, message = "导出硬件信息", response = TSAuthDto.class)})
+    @RequestMapping(value = "/export/device/info", method = RequestMethod.POST)
+    public void info() {
         try {
-//            ByteArray byteArray = AppLicenseUtil.buildDeviceInfo();
-//            log.info("byteArray:{}", byteArray.value());
-//            solarService.update(byteArray.value());
             HttpServletResponse response = ServletUtil.getResponse();
-            response.setHeader("Content-Disposition", "attachment; filename=" + urlEncode("device.info"));
+            response.setHeader("Content-Disposition", "attachment; filename=" + SystemConstant.urlEncode("device.info"));
             IOUtils.copy(new ByteArrayInputStream(AppLicenseUtil.buildDeviceInfo().value()), response.getOutputStream());
         } catch (Exception e) {
-            e.printStackTrace();
-        }
-//        return ResultUtil.ok(true);
-    }
-
-    /**
-     * URL 编码, Encode默认为UTF-8.
-     */
-    public static String urlEncode(String part) {
-        try {
-            return URLEncoder.encode(part, SystemConstant.CHARSET_NAME);
-        } catch (UnsupportedEncodingException e) {
-            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+            log.error(SystemConstant.LOG_ERROR, e);
         }
     }
 }

+ 7 - 1
distributed-print/src/main/java/com/qmth/distributed/print/auth/DistributedPrintAuthenticationService.java

@@ -4,6 +4,7 @@ import com.qmth.boot.core.enums.Platform;
 import com.qmth.boot.core.security.model.AccessEntity;
 import com.qmth.boot.core.security.service.AuthorizationService;
 import com.qmth.boot.tools.signature.SignatureType;
+import com.qmth.distributed.print.business.service.AuthInfoService;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -22,7 +23,6 @@ import org.springframework.stereotype.Component;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 
@@ -39,6 +39,9 @@ public class DistributedPrintAuthenticationService implements AuthorizationServi
     @Resource
     DictionaryConfig dictionaryConfig;
 
+    @Resource
+    AuthInfoService authInfoService;
+
     @Override
     public AccessEntity findByIdentity(String identity, SignatureType signatureType, String path) {
         return new DistributedPrintSession(identity, SignatureType.TOKEN);
@@ -117,6 +120,9 @@ public class DistributedPrintAuthenticationService implements AuthorizationServi
         if (count > 0) {
             return true;
         }
+        if (Objects.nonNull(authBean.getSchool())) {
+            authInfoService.appHasExpired(authBean.getSchool().getId());
+        }
         //系统公用接口不拦截
         Set<String> sysUrls = commonCacheService.privilegeUrlCache(PrivilegePropertyEnum.SYS, SystemConstant.getHeadOrUserSchoolId());
         int sysCount = Objects.nonNull(sysUrls) ? (int) sysUrls.stream().filter(s -> s.equalsIgnoreCase(path)).count() : 0;

+ 1 - 2
distributed-print/src/main/java/com/qmth/distributed/print/interceptor/AuthInterceptor.java

@@ -1,7 +1,6 @@
 package com.qmth.distributed.print.interceptor;
 
 import com.qmth.boot.api.interceptor.ExtendInterceptor;
-import com.qmth.teachcloud.common.util.AuthUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -23,7 +22,7 @@ public class AuthInterceptor extends ExtendInterceptor {
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
         log.info("preHandle is come in");
 //        if (request.getServletPath().contains(endpoint)) {
-            return true;
+        return true;
 //        } else {
 //            return AuthUtil.adminAuthInterceptor(request, response, handler);
 //        }

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

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.start;
 
+import com.qmth.distributed.print.business.service.AuthInfoService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.OrgCenterDataDisposeService;
 import org.slf4j.Logger;
@@ -23,11 +24,15 @@ public class StartRunning implements CommandLineRunner {
     @Resource
     private OrgCenterDataDisposeService orgCenterDataDisposeService;
 
+    @Resource
+    AuthInfoService authInfoService;
+
     @Override
     public void run(String... args) throws Exception {
         log.info("服务器启动时执行 start");
         SystemConstant.initTempFiles();
         orgCenterDataDisposeService.updateSchoolInfo();
+        authInfoService.appInfoInit();
         log.info("服务器启动时执行 end");
     }
 }

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

@@ -155,6 +155,10 @@ sync.config.groupCountUrl=/api/exam/mark_group/count
 sync.config.groupDeleteUrl=/api/exam/mark_group/delete
 sync.config.markerSaveUrl=/api/exam/marker/save
 
+#com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+#com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+com.qmth.solar.license=/Users/king/Downloads/tc-dev-wl.lic
+
 sms.config.smsNormalCode=qmth
 sms.config.codeExpiredTime=2
 sms.config.codeSendInterval=60

+ 1 - 1
pom.xml

@@ -22,7 +22,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
-        <qmth.boot.version>1.0.2</qmth.boot.version>
+        <qmth.boot.version>1.0.3</qmth.boot.version>
         <java.version>1.8</java.version>
         <swagger2.version>2.9.2</swagger2.version>
         <fastjson.version>1.2.68</fastjson.version>

+ 30 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/AuthOrgInfoDto.java

@@ -0,0 +1,30 @@
+package com.qmth.teachcloud.common.bean.dto;
+
+import com.qmth.boot.core.solar.model.AppControl;
+import com.qmth.boot.core.solar.model.OrgInfo;
+
+import java.io.Serializable;
+
+public class AuthOrgInfoDto implements Serializable {
+
+    OrgInfo orgInfo;
+
+    AppControl control;
+
+    public AuthOrgInfoDto() {
+
+    }
+
+    public AuthOrgInfoDto(OrgInfo orgInfo, AppControl control) {
+        this.orgInfo = orgInfo;
+        this.control = control;
+    }
+
+    public AppControl getControl() {
+        return control;
+    }
+
+    public void setControl(AppControl control) {
+        this.control = control;
+    }
+}

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

@@ -10,7 +10,9 @@ import com.qmth.teachcloud.common.enums.TFCustomTypeEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
 
 import java.io.File;
+import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
+import java.net.URLEncoder;
 import java.nio.charset.Charset;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -120,6 +122,7 @@ public class SystemConstant {
     public static final String USER_ROLE_PRIVILEGE_CACHE = "user:role:privilege:cache";
     public static final String PDF_CACHE = "pdf:cache";
     public static final String ROLE_CACHE = "role:cache";
+    public static final String AUTH_INFO_CACHE = "auth:info:cache";
 
     /**
      * 报表缓存
@@ -521,4 +524,15 @@ public class SystemConstant {
         }
         return result;
     }
+
+    /**
+     * URL 编码, Encode默认为UTF-8.
+     */
+    public static String urlEncode(String part) {
+        try {
+            return URLEncoder.encode(part, SystemConstant.CHARSET_NAME);
+        } catch (UnsupportedEncodingException e) {
+            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
+        }
+    }
 }

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

@@ -104,6 +104,8 @@ public enum ExceptionResultEnum {
 
     ROLE_ENABLE_AUTHORIZATION(HttpStatus.UNAUTHORIZED, 4010008, "角色被禁用或没有权限"),
 
+    AUTH_INFO_ERROR(HttpStatus.UNAUTHORIZED, 4010009, "系统鉴权信息已过期,请联系系统管理员激活!"),
+
     /**
      * 404
      */

+ 23 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/CommonCacheService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.service;
 
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
+import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
 import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.PrivilegePropertyEnum;
@@ -274,4 +275,26 @@ public interface CommonCacheService {
      */
     public void removeSurveyTeacherViewCache(Long schoolId, String semester, Long examId, String courseCode, Long collegeId);
 
+    /**
+     * 添加鉴权缓存
+     *
+     * @param id
+     * @return
+     */
+    public AuthOrgInfoDto authInfoCache(Long id);
+
+    /**
+     * 修改鉴权缓存
+     *
+     * @param id
+     * @return
+     */
+    public AuthOrgInfoDto updateAuthInfoCache(Long id);
+
+    /**
+     * 删除鉴权缓存
+     *
+     * @param id
+     */
+    public void removeAuthInfoCache(Long id);
 }

+ 43 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/CommonCacheServiceImpl.java

@@ -1,7 +1,11 @@
 package com.qmth.teachcloud.common.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.boot.core.solar.model.AppInfo;
+import com.qmth.boot.core.solar.model.OrgInfo;
+import com.qmth.boot.core.solar.service.SolarService;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
+import com.qmth.teachcloud.common.bean.dto.AuthOrgInfoDto;
 import com.qmth.teachcloud.common.bean.result.MenuResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
@@ -16,7 +20,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 缓存操作serviceImpl 实现类
@@ -44,6 +50,9 @@ public class CommonCacheServiceImpl implements CommonCacheService {
     @Resource
     SysRoleService sysRoleService;
 
+    @Resource
+    SolarService solarService;
+
     /**
      * 添加角色缓存
      *
@@ -427,4 +436,38 @@ public class CommonCacheServiceImpl implements CommonCacheService {
     public void removeSurveyTeacherViewCache(Long schoolId, String semester, Long examId, String courseCode, Long collegeId) {
 
     }
+
+    @Override
+    @Cacheable(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", unless = "#result == null")
+    public AuthOrgInfoDto authInfoCache(Long id) {
+        AppInfo appInfo = solarService.getAppInfo();
+        AuthOrgInfoDto authOrgInfoDto = null;
+        if (Objects.nonNull(appInfo)) {
+            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> s.getId().longValue() == id.longValue()).collect(Collectors.toList());
+            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
+                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
+            }
+        }
+        return authOrgInfoDto;
+    }
+
+    @Override
+    @CachePut(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0", unless = "#result == null")
+    public AuthOrgInfoDto updateAuthInfoCache(Long id) {
+        AppInfo appInfo = solarService.getAppInfo();
+        AuthOrgInfoDto authOrgInfoDto = null;
+        if (Objects.nonNull(appInfo)) {
+            List<OrgInfo> orgInfoList = solarService.getOrgList().stream().filter(s -> s.getId().longValue() == id.longValue()).collect(Collectors.toList());
+            if (Objects.nonNull(orgInfoList) && orgInfoList.size() > 0) {
+                authOrgInfoDto = new AuthOrgInfoDto(orgInfoList.get(0), appInfo.getControl());
+            }
+        }
+        return authOrgInfoDto;
+    }
+
+    @Override
+    @CacheEvict(value = SystemConstant.AUTH_INFO_CACHE, key = "#p0")
+    public void removeAuthInfoCache(Long id) {
+
+    }
 }

+ 9 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileStoreUtil.java

@@ -126,7 +126,7 @@ public class FileStoreUtil {
             Boolean oss = dictionaryConfig.sysDomain().isOss();
             if (Objects.nonNull(oss) && oss) {
                 FileStore fileStore = fileService.getFileStore(type);
-                return fileStore.getTemporaryUrl(objectPath, Duration.ofMinutes(5L));
+                return fileStore.getPresignedUrl(objectPath, Duration.ofMinutes(5L));
             } else {
                 return dictionaryConfig.fssPrivateDomain().getServer() + "/" + objectPath;
             }
@@ -157,11 +157,11 @@ public class FileStoreUtil {
      */
     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 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);
+        File desFile = buildSingleFileName(parentPath, name, suffix, 0);
         if (!desFile.exists()) {
             desFile.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
             desFile.createNewFile();
@@ -181,13 +181,14 @@ public class FileStoreUtil {
 
     /**
      * 构建唯一的文件名称
-     * @param path 文件路径
+     *
+     * @param path     文件路径
      * @param fileName 文件名称
-     * @param suffix 文件后缀
-     * @param index 当前下标,初次为0
+     * @param suffix   文件后缀
+     * @param index    当前下标,初次为0
      * @return 唯一的文件名称
      */
-    public static File buildSingleFileName(String path, String fileName, String suffix, Integer index){
+    public static File buildSingleFileName(String path, String fileName, String suffix, Integer index) {
         File file;
         //下标不等于0开始拼后缀
         if (index != 0) {