From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 java110-core/src/main/java/com/java110/core/factory/WechatFactory.java |   26 +++++++++++++++++---------
 1 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/factory/WechatFactory.java b/java110-core/src/main/java/com/java110/core/factory/WechatFactory.java
old mode 100644
new mode 100755
index 65d5693..8f175b3
--- a/java110-core/src/main/java/com/java110/core/factory/WechatFactory.java
+++ b/java110-core/src/main/java/com/java110/core/factory/WechatFactory.java
@@ -1,15 +1,17 @@
 package com.java110.core.factory;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Synchronized;
 import com.java110.utils.cache.JWTCache;
+import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.WechatConstant;
 import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.util.StringUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.client.RestTemplate;
-import sun.misc.BASE64Decoder;
 
+import org.apache.commons.codec.binary.Base64;
+import org.slf4j.Logger;
+import com.java110.core.log.LoggerFactory;
+import org.springframework.web.client.RestTemplate;
 import javax.crypto.Cipher;
 import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
@@ -49,6 +51,7 @@
      * @param appSecure
      * @return
      */
+    @Java110Synchronized(value = "appId")
     public static String getAccessToken(String appId, String appSecure) {
         String accessToken = JWTCache.getValue(WECHAT + appId);
         if (StringUtil.isEmpty(accessToken)) {
@@ -65,7 +68,11 @@
      * @return
      */
     private static String refreshAccessToken(String appId, String appSecure) {
-        String url = WechatConstant.GET_ACCESS_TOKEN.replace("APPID", appId)
+        String getAccessToken = MappingCache.getRemark(WechatConstant.WECHAT_DOMAIN,WechatConstant.GET_ACCESS_TOKEN_URL);
+        if(StringUtil.isEmpty(getAccessToken)){
+            getAccessToken = WechatConstant.GET_ACCESS_TOKEN;
+        }
+        String url = getAccessToken.replace("APPID", appId)
                 .replace("SECRET", appSecure);
         RestTemplate outRestTemplate = ApplicationContextFactory.getBean("outRestTemplate", RestTemplate.class);
         String response = outRestTemplate.getForObject(url, String.class);
@@ -100,6 +107,7 @@
      * @return
      */
     public static String getAppId(String wId) {
+        wId = wId.replace(" ", "+");
         return AuthenticationFactory.decrypt(password, wId);
     }
 
@@ -114,13 +122,13 @@
 
     public static String decryptS5(String sSrc, String encodingFormat, String sKey, String ivParameter) {
         try {
-            BASE64Decoder decoder = new BASE64Decoder();
-            byte[] raw = decoder.decodeBuffer(sKey);
+        	Base64 base64 = new Base64();
+            byte[] raw = base64.decode(sKey);
             SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
-            IvParameterSpec iv = new IvParameterSpec(decoder.decodeBuffer(ivParameter));
+            IvParameterSpec iv = new IvParameterSpec(base64.decode(ivParameter));
             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
             cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
-            byte[] myendicod = decoder.decodeBuffer(sSrc);
+            byte[] myendicod = base64.decode(sSrc);
             byte[] original = cipher.doFinal(myendicod);
             String originalString = new String(original, encodingFormat);
             return originalString;

--
Gitblit v1.8.0