Pārlūkot izejas kodu

!1131 update Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatService.cs.
Merge pull request !1131 from P了个F/N/A

zuohuaijun 1 gadu atpakaļ
vecāks
revīzija
7d2182798e

+ 17 - 5
Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatService.cs

@@ -198,10 +198,22 @@ public class SysWechatService : IDynamicApiController, ITransient
     /// </summary>
     private async Task<string> GetCgibinToken()
     {
-        var reqCgibinToken = new CgibinTokenRequest();
-        var resCgibinToken = await _wechatApiClient.ExecuteCgibinTokenAsync(reqCgibinToken);
-        if (resCgibinToken.ErrorCode != (int)WechatReturnCodeEnum.请求成功)
-            throw Oops.Oh(resCgibinToken.ErrorMessage + " " + resCgibinToken.ErrorCode);
-        return resCgibinToken.AccessToken;
+        //先从缓存中取AccessToken
+        var WXMP_AccessToken = _sysCacheService.Get<string>("WXMP_AccessToken");
+        if (!string.IsNullOrEmpty(WXMP_AccessToken))
+        {
+            return WXMP_AccessToken;
+        }
+        //没有取到,就从微信公众号获取AccessToken
+        else
+        {
+            var reqCgibinToken = new CgibinTokenRequest();
+            var resCgibinToken = await _wechatApiClient.ExecuteCgibinTokenAsync(reqCgibinToken);
+            if (resCgibinToken.ErrorCode != (int)WechatReturnCodeEnum.请求成功)
+                throw Oops.Oh(resCgibinToken.ErrorMessage + " " + resCgibinToken.ErrorCode);
+            //缓存AccessToken
+            _sysCacheService.Set("WXMP_AccessToken", resCgibinToken.AccessToken, TimeSpan.FromSeconds(resCgibinToken.ExpiresIn));
+            return resCgibinToken.AccessToken;
+        }
     }
 }