Explorar o código

木易华康 安全问题修复

xgb hai 1 semana
pai
achega
f8c03b8366
Modificáronse 28 ficheiros con 281 adicións e 35 borrados
  1. 5 2
      fs-admin/src/main/java/com/fs/course/task/VideoTask.java
  2. 5 2
      fs-admin/src/main/java/com/fs/third/controller/FeiyuCustomerController.java
  3. 2 1
      fs-admin/src/main/resources/application.yml
  4. 2 2
      fs-company/src/main/java/com/fs/company/controller/pay/bean/WxPayBean.java
  5. 5 0
      fs-qw-api/src/main/java/com/fs/app/controller/QwController.java
  6. 20 0
      fs-service/src/main/java/com/fs/company/util/CryptoConfig.java
  7. 4 7
      fs-service/src/main/java/com/fs/company/util/CryptoUtil.java
  8. 18 0
      fs-service/src/main/java/com/fs/company/util/DetectionPhoneConfig.java
  9. 2 1
      fs-service/src/main/java/com/fs/company/util/DetectionPhoneModelVerifyUtil.java
  10. 6 6
      fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java
  11. 17 0
      fs-service/src/main/java/com/fs/feishu/util/SecureTokenConfig.java
  12. 3 1
      fs-service/src/main/java/com/fs/feishu/util/SecureTokenUtil.java
  13. 2 2
      fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java
  14. 26 0
      fs-service/src/main/java/com/fs/nuonuo/NuonuoConfig.java
  15. 7 3
      fs-service/src/main/java/com/fs/nuonuo/NuonuoUtils.java
  16. 2 1
      fs-service/src/main/java/com/fs/qw/utils/HMACAuth.java
  17. 18 0
      fs-service/src/main/java/com/fs/qw/utils/HMACAuthConfig.java
  18. 1 1
      fs-service/src/main/java/com/fs/qwApi/service/impl/QwApiServiceImpl.java
  19. 5 0
      fs-service/src/main/java/com/fs/qwApi/util/XMLParse.java
  20. 18 0
      fs-service/src/main/java/com/fs/tulin/utils/SyncStudentInfoConfig.java
  21. 2 1
      fs-service/src/main/java/com/fs/tulin/utils/SyncStudentInfoService.java
  22. 2 2
      fs-service/src/main/java/com/fs/voice/constant/Constant.java
  23. 18 0
      fs-service/src/main/java/com/fs/watch/utils/GeocodingConfig.java
  24. 2 1
      fs-service/src/main/java/com/fs/watch/utils/GeocodingUtils.java
  25. 22 0
      fs-service/src/main/java/com/fs/xiaoshouyi/XiaoShouYiConfig.java
  26. 5 2
      fs-service/src/main/java/com/fs/xiaoshouyi/XiaoShouYiOAuthUtils.java
  27. 29 0
      fs-service/src/main/resources/application-config-myhk.yml
  28. 33 0
      fs-service/src/main/resources/application-dev-test.yml

+ 5 - 2
fs-admin/src/main/java/com/fs/course/task/VideoTask.java

@@ -18,6 +18,7 @@ import com.qcloud.cos.region.Region;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -29,8 +30,10 @@ import java.util.*;
 @Component("videoTask")
 public class VideoTask {
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
-    private static final String YL_SECRET_ID = "AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT";
-    private static final String YL_SECRET_KEY = "u5SuS80342xzx8FRBukza9lVNHKNMSaB";
+    @Value("${tencent_cloud_config.secret_id:AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT}")
+    private String YL_SECRET_ID;
+    @Value("${tencent_cloud_config.secret_key:u5SuS80342xzx8FRBukza9lVNHKNMSaB}")
+    private String YL_SECRET_KEY;
     private static final String LIKE_KEY_PREFIX = "like:video:";
     private static final String UNLIKE_KEY_PREFIX = "unlike:video:";
     private static final String FAVORITE_KEY_PREFIX = "favorite:video:";

+ 5 - 2
fs-admin/src/main/java/com/fs/third/controller/FeiyuCustomerController.java

@@ -28,6 +28,7 @@ import com.fs.third.http.HttpUtils;
 import com.fs.third.param.FeiyuCluesParam;
 import com.fs.third.param.FeiyuImportCluesParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
@@ -41,8 +42,10 @@ import java.util.concurrent.TimeUnit;
 @RequestMapping("/third/feiyu")
 public class FeiyuCustomerController extends BaseController {
 
-    public static String  appId="1770748979316843";
-    public static String  appSecret="106c17623dd0eaba37dab935b9839c698c0876d1";
+    @Value("${feiyu.app-id:1770748979316843}")
+    private String appId;
+    @Value("${feiyu.app-secret:106c17623dd0eaba37dab935b9839c698c0876d1}")
+    private String appSecret;
 
     public static String open_api_url_prefix = "https://ad.oceanengine.com/open_api/";
     public static String uri = "oauth2/access_token/";

+ 2 - 1
fs-admin/src/main/resources/application.yml

@@ -10,5 +10,6 @@ spring:
 #    active: druid-sxjz-test
 #    active: druid-sft
 #    active: druid-fby
-    active: dev
+#    active: dev
+    active: druid-myhk-test
 

+ 2 - 2
fs-company/src/main/java/com/fs/company/controller/pay/bean/WxPayBean.java

@@ -65,7 +65,7 @@ public class WxPayBean {
 
     @Override
     public String toString() {
-        return "WxPayBean [appId=" + appId + ", appSecret=" + appSecret + ", mchId=" + mchId + ", partnerKey="
-                + partnerKey + ", certPath=" + certPath + ", domain=" + domain + "]";
+        return "WxPayBean [appId=" + appId + ", appSecret=***, mchId=" + mchId + ", partnerKey=***"
+                + ", certPath=" + certPath + ", domain=" + domain + "]";
     }
 }

+ 5 - 0
fs-qw-api/src/main/java/com/fs/app/controller/QwController.java

@@ -103,6 +103,11 @@ public class QwController {
             // TODO: 解析出明文xml标签的内容进行处理
             // For example:
             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+            dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
+            dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+            dbf.setXIncludeAware(false);
+            dbf.setExpandEntityReferences(false);
             DocumentBuilder db = dbf.newDocumentBuilder();
             StringReader sr = new StringReader(sMsg);
             InputSource is = new InputSource(sr);

+ 20 - 0
fs-service/src/main/java/com/fs/company/util/CryptoConfig.java

@@ -0,0 +1,20 @@
+package com.fs.company.util;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class CryptoConfig {
+    @Value("${company.crypto.aes-key:FsCmp@nyK3y!2026}")
+    private String aesSecretKey;
+    @Value("${company.crypto.backup-key:BkFC0mp@nyK3y!26}")
+    private String aesBackupKey;
+
+    @PostConstruct
+    public void init() {
+        CryptoUtil.setAesSecretKey(aesSecretKey);
+        CryptoUtil.setAesBackupKey(aesBackupKey);
+    }
+}

+ 4 - 7
fs-service/src/main/java/com/fs/company/util/CryptoUtil.java

@@ -38,13 +38,10 @@ public class CryptoUtil {
      * 秘钥长度必须为16位(AES-128)、24位(AES-192)或32位(AES-256)
      * 当前使用AES-128,秘钥长度为16位
      */
-    private static final String AES_SECRET_KEY = "FsCmp@nyK3y!2026";
-
-    /**
-     * 备用秘钥(用于秘钥轮换场景)
-     * 【重要】生产环境请修改为不同的秘钥
-     */
-    private static final String AES_BACKUP_KEY = "BkFC0mp@nyK3y!26";
+    static String AES_SECRET_KEY = "FsCmp@nyK3y!2026";
+    static String AES_BACKUP_KEY = "BkFC0mp@nyK3y!26";
+    public static void setAesSecretKey(String key) { AES_SECRET_KEY = key; }
+    public static void setAesBackupKey(String key) { AES_BACKUP_KEY = key; }
 
     /**
      * AES加密算法/模式/填充方式

+ 18 - 0
fs-service/src/main/java/com/fs/company/util/DetectionPhoneConfig.java

@@ -0,0 +1,18 @@
+package com.fs.company.util;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class DetectionPhoneConfig {
+
+    @Value("${detection-phone.secret-key:faGf4dQNG3Tg}")
+    private String secretKey;
+
+    @PostConstruct
+    public void init() {
+        DetectionPhoneModelVerifyUtil.setSecretKey(secretKey);
+    }
+}

+ 2 - 1
fs-service/src/main/java/com/fs/company/util/DetectionPhoneModelVerifyUtil.java

@@ -17,7 +17,8 @@ public class DetectionPhoneModelVerifyUtil {
     //appid
     public static final long VERIFY_APPID = 100712;
     //secretkey
-    public static final String SECRET_KEY = "faGf4dQNG3Tg";
+    static String SECRET_KEY = "faGf4dQNG3Tg";
+    public static void setSecretKey(String key) { SECRET_KEY = key; }
     //机型校验地址
     public static final String VERIFY_URL = "http://zhijian.h12321.com:8086/mobile/model/check";
     //苹果链接

+ 6 - 6
fs-service/src/main/java/com/fs/course/service/impl/FsCourseLinkServiceImpl.java

@@ -917,7 +917,7 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                 //获取微信token
                 final WxMaService wxService = WxMaConfiguration.getMaService(appId);
                 String token = wxService.getAccessToken();
-                log.info("小程序TOKEN值-------->刷新前TOKEN:{}", token);
+                log.info("小程序TOKEN值-------->刷新前TOKEN:***");
                 HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + token);
                 JSONObject bodyObj = new JSONObject();
                 bodyObj.put("path", pageUrl);
@@ -936,10 +936,10 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                     Integer curVersion =  Integer.valueOf(version);
                     synchronized (TOKEN_VALID_CODE){
                         if(curVersion.equals(version)){
-                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新前TOKEN:{}", token);
+                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新前TOKEN:***");
                             wxService.getAccessToken(true);
                             version = version.equals(Integer.MAX_VALUE) ? 0 : curVersion + 1;
-                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新后TOKEN:{}", wxService.getAccessToken());
+                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新后TOKEN:***");
                         }
                         return getGotoWxAppLink(linkStr,appId);
                     }
@@ -1124,7 +1124,7 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                 //获取微信token
                 final WxMaService wxService = WxMaConfiguration.getMaService(appId);
                 String token = wxService.getAccessToken();
-                log.info("小程序TOKEN值-------->刷新前TOKEN:{}", token);
+                log.info("小程序TOKEN值-------->刷新前TOKEN:***");
                 HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + token);
                 JSONObject bodyObj = new JSONObject();
                 bodyObj.put("path", pageUrl);
@@ -1143,10 +1143,10 @@ public class FsCourseLinkServiceImpl implements IFsCourseLinkService
                     Integer curVersion =  Integer.valueOf(version);
                     synchronized (TOKEN_VALID_CODE){
                         if(curVersion.equals(version)){
-                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新前TOKEN:{}", token);
+                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新前TOKEN:***");
                             wxService.getAccessToken(true);
                             version = version.equals(Integer.MAX_VALUE) ? 0 : curVersion + 1;
-                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新后TOKEN:{}", wxService.getAccessToken());
+                            log.info("小程序TOKEN:40001进入强制刷新-------->刷新后TOKEN:***");
                         }
                         return getLiveWxaCodeGenerateScheme(linkStr,appId);
                     }

+ 17 - 0
fs-service/src/main/java/com/fs/feishu/util/SecureTokenConfig.java

@@ -0,0 +1,17 @@
+package com.fs.feishu.util;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class SecureTokenConfig {
+    @Value("${feishu.secure-token-key:9f3a7c21b8e4d6a5c2f1097e3b4a6d8f}")
+    private String secretKey;
+
+    @PostConstruct
+    public void init() {
+        SecureTokenUtil.setSecretKey(secretKey);
+    }
+}

+ 3 - 1
fs-service/src/main/java/com/fs/feishu/util/SecureTokenUtil.java

@@ -13,7 +13,9 @@ public class SecureTokenUtil {
 
     private static final String ALGORITHM = "AES";
     private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
-    private static final String SECRET_KEY = "9f3a7c21b8e4d6a5c2f1097e3b4a6d8f"; // 16字节密钥
+    static String SECRET_KEY = "9f3a7c21b8e4d6a5c2f1097e3b4a6d8f";
+
+    public static void setSecretKey(String key) { SECRET_KEY = key; }
 
     /**
      * 生成安全令牌

+ 2 - 2
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -507,7 +507,7 @@ public class OpenIMServiceImpl implements OpenIMService {
         log.info("发送消息的请求体:\n{}", jsonObject.toString());
         long time = new Date().getTime();
 
-        log.info("请求header: token={},operationID={}",adminToken,time);
+        log.info("请求header: token=***, operationID={}", time);
         String result = HttpRequest.post(url)
                 .header("operationID", time + "")
                 .header("token",adminToken)
@@ -1071,7 +1071,7 @@ public class OpenIMServiceImpl implements OpenIMService {
         String url = IMConfig.URL+"/msg/batch_send_msg";
         log.info("请求url: {},\n请求参数:{}", url, jsonObject);
         long timestamp = System.currentTimeMillis();
-        log.info("请求header,operationID:{},token:{}", timestamp, adminToken);
+        log.info("请求header,operationID:{},token:***", timestamp);
 
         String result = HttpRequest.post(url)
                 .header("operationID", timestamp + "")

+ 26 - 0
fs-service/src/main/java/com/fs/nuonuo/NuonuoConfig.java

@@ -0,0 +1,26 @@
+package com.fs.nuonuo;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class NuonuoConfig {
+
+    @Value("${nuonuo.key:10924508}")
+    private String key;
+
+    @Value("${nuonuo.secret:A2EB20764D304D16}")
+    private String secret;
+
+    @Value("${nuonuo.token:7c5d284cc10f344b8198bb02zvijkmcs}")
+    private String token;
+
+    @PostConstruct
+    public void init() {
+        NuonuoUtils.setKey(key);
+        NuonuoUtils.setSecret(secret);
+        NuonuoUtils.setToken(token);
+    }
+}

+ 7 - 3
fs-service/src/main/java/com/fs/nuonuo/NuonuoUtils.java

@@ -19,10 +19,14 @@ import java.util.UUID;
 public class NuonuoUtils {
 
     private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-    private final static String KEY = "10924508";
-    private final static String SECRET = "A2EB20764D304D16";
+    static String KEY = "10924508";
+    static String SECRET = "A2EB20764D304D16";
     private final static String BASE_URL = "https://sdk.nuonuo.com/open/v1/services";
-    private final static String TOKEN = "7c5d284cc10f344b8198bb02zvijkmcs";
+    static String TOKEN = "7c5d284cc10f344b8198bb02zvijkmcs";
+
+    public static void setKey(String v) { KEY = v; }
+    public static void setSecret(String v) { SECRET = v; }
+    public static void setToken(String v) { TOKEN = v; }
 
     private static JSONObject sendApi(String senid, String method, String content){
         NNOpenSDK sdk = NNOpenSDK.getIntance();

+ 2 - 1
fs-service/src/main/java/com/fs/qw/utils/HMACAuth.java

@@ -5,7 +5,8 @@ import javax.crypto.spec.SecretKeySpec;
 import java.util.Base64;
 
 public class HMACAuth {
-    private static final String SECRET_KEY = "ipad-secret-key-!#$";
+    static String SECRET_KEY = "ipad-secret-key-!#$";
+    public static void setSecretKey(String key) { SECRET_KEY = key; }
     private static final String ALGORITHM = "HmacSHA256";
     // 设置token过期时间为5分钟(单位:毫秒)
     private static final long TOKEN_EXPIRATION_TIME = 1 * 60 * 1000;

+ 18 - 0
fs-service/src/main/java/com/fs/qw/utils/HMACAuthConfig.java

@@ -0,0 +1,18 @@
+package com.fs.qw.utils;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class HMACAuthConfig {
+
+    @Value("${ipad.hmac-secret-key:ipad-secret-key-!#$}")
+    private String secretKey;
+
+    @PostConstruct
+    public void init() {
+        HMACAuth.setSecretKey(secretKey);
+    }
+}

+ 1 - 1
fs-service/src/main/java/com/fs/qwApi/service/impl/QwApiServiceImpl.java

@@ -937,7 +937,7 @@ public class QwApiServiceImpl implements QwApiService {
             HttpResponse response = httpClient.execute(httpGet);
 
             String tokenJson = EntityUtils.toString(response.getEntity());
-            log.info("获取token:{}", tokenJson);
+            log.info("获取token成功");
             JSONObject jsonObject = JSON.parseObject(tokenJson);
             token = jsonObject.getString("access_token");
             redisCache.setCacheObject("qwServer:corpId:"+corpId+":"+corpSecret,token,1,TimeUnit.HOURS);

+ 5 - 0
fs-service/src/main/java/com/fs/qwApi/util/XMLParse.java

@@ -34,6 +34,11 @@ public  class XMLParse {
 		Object[] result = new Object[3];
 		try {
 			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+			dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
+			dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
+			dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+			dbf.setXIncludeAware(false);
+			dbf.setExpandEntityReferences(false);
 			DocumentBuilder db = dbf.newDocumentBuilder();
 			StringReader sr = new StringReader(xmltext);
 			InputSource is = new InputSource(sr);

+ 18 - 0
fs-service/src/main/java/com/fs/tulin/utils/SyncStudentInfoConfig.java

@@ -0,0 +1,18 @@
+package com.fs.tulin.utils;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class SyncStudentInfoConfig {
+
+    @Value("${tulin.secret-key:xysync_dLsSaheCzK7RU9gd}")
+    private String secretKey;
+
+    @PostConstruct
+    public void init() {
+        SyncStudentInfoService.setSecretKey(secretKey);
+    }
+}

+ 2 - 1
fs-service/src/main/java/com/fs/tulin/utils/SyncStudentInfoService.java

@@ -27,7 +27,8 @@ public class SyncStudentInfoService {
     /**
      * 密钥
      */
-    private static final String SECRET_KEY = "xysync_dLsSaheCzK7RU9gd";
+    static String SECRET_KEY = "xysync_dLsSaheCzK7RU9gd";
+    public static void setSecretKey(String key) { SECRET_KEY = key; }
 
     /**
      * 测试药店ID

+ 2 - 2
fs-service/src/main/java/com/fs/voice/constant/Constant.java

@@ -9,8 +9,8 @@ public class Constant {
     public static final String BASE_URL = "https://rtccall.cn-north-1.myhuaweicloud.cn:443";
 
     // please replace the appId and secret, when you use the demo.
-    public static final String CLICK2CALL_APPID = "OwBoDktT2SxQ1fFZubl549ryir01";
-    public static final String CLICK2CALL_SECRET = "33HKupSlrPbaxzh4bw0eJNiVPa0S";
+    public static final String CLICK2CALL_APPID = "*****";
+    public static final String CLICK2CALL_SECRET = "*****";
     public static final String CALLNOTIFY_APPID = "*****";
     public static final String CALLNOTIFY_SECRET = "*****";
     public static final String CALLVERIFY_APPID = "*****";

+ 18 - 0
fs-service/src/main/java/com/fs/watch/utils/GeocodingConfig.java

@@ -0,0 +1,18 @@
+package com.fs.watch.utils;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class GeocodingConfig {
+
+    @Value("${geocoding.api-key:c52e38a111a39d507591958b4ba86bbe}")
+    private String apiKey;
+
+    @PostConstruct
+    public void init() {
+        GeocodingUtils.setApiKey(apiKey);
+    }
+}

+ 2 - 1
fs-service/src/main/java/com/fs/watch/utils/GeocodingUtils.java

@@ -8,7 +8,8 @@ import java.util.Map;
 
 public class GeocodingUtils {
     private static final MyHttpUtils httpUtils = new MyHttpUtils();
-    private static final String API_KEY = "c52e38a111a39d507591958b4ba86bbe";  // 替换为你的高德地图API密钥
+    static String API_KEY = "c52e38a111a39d507591958b4ba86bbe";
+    public static void setApiKey(String key) { API_KEY = key; }
     private static final String GEOCODE_API_URL = "https://restapi.amap.com/v3/geocode/regeo";
 
     /**

+ 22 - 0
fs-service/src/main/java/com/fs/xiaoshouyi/XiaoShouYiConfig.java

@@ -0,0 +1,22 @@
+package com.fs.xiaoshouyi;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+public class XiaoShouYiConfig {
+
+    @Value("${xiaoshouyi.client-id:3d03b17acc06116f274b0f61797fd3b3}")
+    private String clientId;
+
+    @Value("${xiaoshouyi.client-secret:68a5ee9a9544054b691e24186d158bb5}")
+    private String clientSecret;
+
+    @PostConstruct
+    public void init() {
+        XiaoShouYiOAuthUtils.setClientId(clientId);
+        XiaoShouYiOAuthUtils.setClientSecret(clientSecret);
+    }
+}

+ 5 - 2
fs-service/src/main/java/com/fs/xiaoshouyi/XiaoShouYiOAuthUtils.java

@@ -22,10 +22,13 @@ public class XiaoShouYiOAuthUtils {
     // 业务API基础地址
     private static String apiBaseUrl = "https://api.xiaoshouyi.com";
 
-    private static final String CLIENT_ID = "3d03b17acc06116f274b0f61797fd3b3";
-    private static final String CLIENT_SECRET = "68a5ee9a9544054b691e24186d158bb5";
+    static String CLIENT_ID = "3d03b17acc06116f274b0f61797fd3b3";
+    static String CLIENT_SECRET = "68a5ee9a9544054b691e24186d158bb5";
     private static final String REDIRECT_URI = "http://n9d2e4bc.natappfree.cc/xiaoShouYi/auth/callback";
 
+    public static void setClientId(String v) { CLIENT_ID = v; }
+    public static void setClientSecret(String v) { CLIENT_SECRET = v; }
+
     // Token缓存
     private static volatile String accessToken;
     private static volatile String tokenType;

+ 29 - 0
fs-service/src/main/resources/application-config-myhk.yml

@@ -74,6 +74,7 @@ fs :
 nuonuo:
   key: 10924508
   secret: A2EB20764D304D16
+  token: 7c5d284cc10f344b8198bb02zvijkmcs
 
 
   # 存储捅配置
@@ -125,6 +126,34 @@ obs:
   secret-access-key: sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
   server: https://obs.cn-north-4.myhuaweicloud.com
   bucket: myhk-hw079058881
+# 飞鱼客户配置
+feiyu:
+  app-id: "1770748979316843"
+  app-secret: 106c17623dd0eaba37dab935b9839c698c0876d1
+# 公司加密配置
+company:
+  crypto:
+    aes-key: FsCmp@nyK3y!2026
+    backup-key: BkFC0mp@nyK3y!26
+# 飞书安全令牌配置
+feishu:
+  secure-token-key: 9f3a7c21b8e4d6a5c2f1097e3b4a6d8f
+# 高德地图配置
+geocoding:
+  api-key: c52e38a111a39d507591958b4ba86bbe
+# 销售易配置
+xiaoshouyi:
+  client-id: 3d03b17acc06116f274b0f61797fd3b3
+  client-secret: 68a5ee9a9544054b691e24186d158bb5
+# iPad HMAC认证配置
+ipad:
+  hmac-secret-key: ipad-secret-key-!#$
+# 机型检测配置
+detection-phone:
+  secret-key: faGf4dQNG3Tg
+# 途临同步配置
+tulin:
+  secret-key: xysync_dLsSaheCzK7RU9gd
 
 
 

+ 33 - 0
fs-service/src/main/resources/application-dev-test.yml

@@ -207,4 +207,37 @@ obs:
   secret-access-key: sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
   server: https://obs.cn-north-4.myhuaweicloud.com
   bucket: myhk-hw079058881
+# 飞鱼客户配置
+feiyu:
+  app-id: "1770748979316843"
+  app-secret: 106c17623dd0eaba37dab935b9839c698c0876d1
+# 公司加密配置
+company:
+  crypto:
+    aes-key: FsCmp@nyK3y!2026
+    backup-key: BkFC0mp@nyK3y!26
+# 飞书安全令牌配置
+feishu:
+  secure-token-key: 9f3a7c21b8e4d6a5c2f1097e3b4a6d8f
+# 诺诺发票配置
+nuonuo:
+  key: 10924508
+  secret: A2EB20764D304D16
+  token: 7c5d284cc10f344b8198bb02zvijkmcs
+# 高德地图配置
+geocoding:
+  api-key: c52e38a111a39d507591958b4ba86bbe
+# 销售易配置
+xiaoshouyi:
+  client-id: 3d03b17acc06116f274b0f61797fd3b3
+  client-secret: 68a5ee9a9544054b691e24186d158bb5
+# iPad HMAC认证配置
+ipad:
+  hmac-secret-key: ipad-secret-key-!#$
+# 机型检测配置
+detection-phone:
+  secret-key: faGf4dQNG3Tg
+# 途临同步配置
+tulin:
+  secret-key: xysync_dLsSaheCzK7RU9gd