Browse Source

激活BUG修复

wangliang 2 năm trước cách đây
mục cha
commit
460a87eefb

+ 4 - 3
teachcloud-common-api/src/main/java/com/qmth/teachcloud/common/api/api/TSAuthController.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.common.api.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.core.solar.config.SolarProperties;
 import com.qmth.boot.core.solar.crypto.AppLicenseUtil;
+import com.qmth.boot.core.solar.model.AppInfo;
 import com.qmth.boot.core.solar.service.SolarService;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.AuthInfoService;
@@ -87,9 +88,9 @@ public class TSAuthController {
     @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Boolean.class)})
     @RequestMapping(value = "/online/activation", method = RequestMethod.POST)
     public Result onlineActivation(@ApiParam(value = "accessKey", required = true) @RequestParam(required = true) String accessKey,
-                                   @ApiParam(value = "accessSecret", required = true) @RequestParam(required = true) String accessSecret) {
-        solarService.update(accessKey, accessSecret);
-        authInfoService.appInfoInit();
+                                   @ApiParam(value = "accessSecret", required = true) @RequestParam(required = true) String accessSecret) throws Exception {
+        AppInfo appInfo = solarService.update(accessSecret, accessKey);
+        authInfoService.appInfoInit(appInfo, accessSecret, accessKey);
         return ResultUtil.ok(true);
     }
 

+ 74 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/AppInfoResult.java

@@ -0,0 +1,74 @@
+package com.qmth.teachcloud.common.bean.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.enums.AuthEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: appinfo result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2023/2/17
+ */
+public class AppInfoResult implements Serializable {
+
+    @ApiModelProperty(value = "过期时间")
+    @JsonSerialize(using = ToStringSerializer.class)
+    Long expireTime;
+
+    @ApiModelProperty(value = "accessKey")
+    String accessKey;
+
+    @ApiModelProperty(value = "accessSecret")
+    String accessSecret;
+
+    @ApiModelProperty(value = "激活模式")
+    AuthEnum authMode;
+
+    public AppInfoResult() {
+
+    }
+
+    public AppInfoResult(Long expireTime, String accessKey, String accessSecret, AuthEnum authMode) {
+        this.expireTime = expireTime;
+        this.accessKey = accessKey;
+        this.accessSecret = accessSecret;
+        this.authMode = authMode;
+    }
+
+    public Long getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(Long expireTime) {
+        this.expireTime = expireTime;
+    }
+
+    public String getAccessKey() {
+        return accessKey;
+    }
+
+    public void setAccessKey(String accessKey) {
+        this.accessKey = accessKey;
+    }
+
+    public String getAccessSecret() {
+        return accessSecret;
+    }
+
+    public void setAccessSecret(String accessSecret) {
+        this.accessSecret = accessSecret;
+    }
+
+    public AuthEnum getAuthMode() {
+        return authMode;
+    }
+
+    public void setAuthMode(AuthEnum authMode) {
+        this.authMode = authMode;
+    }
+}

+ 13 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/AuthInfoService.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.common.service;
 
 import com.qmth.boot.core.solar.model.AppInfo;
+import com.qmth.teachcloud.common.bean.result.AppInfoResult;
 import com.qmth.teachcloud.common.enums.AuthEnum;
 
 import java.util.Map;
@@ -21,6 +22,17 @@ public interface AuthInfoService {
      */
     AppInfo appInfoInit();
 
+    /**
+     * 授权信息初始化
+     *
+     * @param appInfo
+     * @param accessKey
+     * @param accessSecret
+     * @return
+     * @throws Exception
+     */
+    AppInfo appInfoInit(AppInfo appInfo, String accessKey, String accessSecret) throws Exception;
+
     /**
      * app是否过期
      *
@@ -40,7 +52,7 @@ public interface AuthInfoService {
      *
      * @return
      */
-    Long selectAuthInfo();
+    AppInfoResult selectAuthInfo();
 
     /**
      * 保存授权信息

+ 40 - 7
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/AuthInfoServiceImpl.java

@@ -5,6 +5,7 @@ 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.teachcloud.common.bean.result.AppInfoResult;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -86,15 +87,15 @@ public class AuthInfoServiceImpl implements AuthInfoService {
                         && !Objects.equals(solarProperties.getAccessSecret().trim(), "")) {//在线激活
 //                    this.authError("不支持在线激活,请联系系统管理员!");
                     log.error("不支持在线激活,请联系系统管理员!");
-                    licenseForDb();
+                    licenseForDb(AuthEnum.OFF_LINE);
                 } else if (Objects.nonNull(solarProperties.getLicense())
                         && !Objects.equals(solarProperties.getLicense().trim(), "")) {//离线激活
 //                    this.authError("不支持离线激活,请联系系统管理员!");
                     log.error("不支持离线激活,请联系系统管理员!");
-                    licenseForDb();
+                    licenseForDb(AuthEnum.OFF_LINE);
                 }
             } else {
-                licenseForDb();
+                licenseForDb(AuthEnum.OFF_LINE);
             }
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
@@ -102,6 +103,21 @@ public class AuthInfoServiceImpl implements AuthInfoService {
         return appInfo;
     }
 
+    /**
+     * 授权信息初始化
+     *
+     * @param appInfo
+     * @param accessKey
+     * @param accessSecret
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public AppInfo appInfoInit(AppInfo appInfo, String accessKey, String accessSecret) throws Exception {
+        authInfoService.saveAuthInfo(appInfo, AuthEnum.ON_LINE, null);
+        return appInfo;
+    }
+
     /**
      * app是否过期
      *
@@ -138,13 +154,19 @@ public class AuthInfoServiceImpl implements AuthInfoService {
      * @return
      */
     @Override
-    public Long selectAuthInfo() {
+    public AppInfoResult selectAuthInfo() {
         Long expireTime = null;
         AppInfo appInfo = solarService.getAppInfo();
         if (Objects.nonNull(appInfo) && Objects.nonNull(appInfo.getControl())) {
             expireTime = Objects.nonNull(appInfo.getControl().getExpireTime()) ? appInfo.getControl().getExpireTime() : -1;
         }
-        return expireTime;
+        String accessKey = solarProperties.getAccessKey();
+        String accessSecret = solarProperties.getAccessSecret();
+        AuthEnum authEnum = AuthEnum.OFF_LINE;
+        if (Objects.nonNull(accessKey) && Objects.nonNull(accessSecret)) {
+            authEnum = AuthEnum.ON_LINE;
+        }
+        return new AppInfoResult(expireTime, accessKey, accessSecret, authEnum);
     }
 
     /**
@@ -294,16 +316,27 @@ public class AuthInfoServiceImpl implements AuthInfoService {
     /**
      * 强制从db更新激活信息
      *
+     * @param authEnum
      * @throws Exception
      */
-    public void licenseForDb() throws Exception {
+    public void licenseForDb(AuthEnum authEnum) throws Exception {
         QueryWrapper<TSAuth> tsAuthQueryWrapper = new QueryWrapper<>();
         tsAuthQueryWrapper.lambda().isNotNull(TSAuth::getFile);
         List<TSAuth> tsAuthList = tsAuthService.list(tsAuthQueryWrapper);
         if (!CollectionUtils.isEmpty(tsAuthList)) {
             for (TSAuth t : tsAuthList) {
                 AppInfo appInfo = solarService.update(t.getFile());
-                authInfoService.saveAuthInfo(appInfo, AuthEnum.OFF_LINE, t.getFile());
+                authInfoService.saveAuthInfo(appInfo, authEnum, t.getFile());
+            }
+        } else {
+            tsAuthQueryWrapper = new QueryWrapper<>();
+            tsAuthQueryWrapper.lambda().isNotNull(TSAuth::getAccessKey).isNotNull(TSAuth::getAccessSecret);
+            tsAuthList = tsAuthService.list(tsAuthQueryWrapper);
+            if (!CollectionUtils.isEmpty(tsAuthList)) {
+                for (TSAuth t : tsAuthList) {
+                    AppInfo appInfo = solarService.update(t.getAccessKey(), t.getAccessSecret());
+                    authInfoService.saveAuthInfo(appInfo, AuthEnum.ON_LINE, null);
+                }
             }
         }
     }