zoukankan      html  css  js  c++  java
  • ABP 使用cache缓存

    using Abp.Application.Services.Dto;
    using Abp.Runtime.Caching;
    using Microsoft.Extensions.Configuration;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Newtonsoft.Json.Schema;
    using Senparc.CO2NET.HttpUtility;
    using Senparc.Weixin.CommonAPIs.ApiHandlerWapper;
    using Senparc.Weixin.MP.Containers;
    using Senparc.Weixin.MP.Entities;
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace AbpProject.WeiXinMPCache
    {
        public class MPCacheAppService : AbpProjectAppServiceBase, IMPCacheAppService
        {
            /// <summary>
            /// appid
            /// </summary>
            private readonly string AppIdSAddress = "WeiXinMP:AppID";
            /// <summary>
            /// appsecret
            /// </summary>
            private readonly string AppSecretAddress = "WeiXinMP:AppSecret";
            /// <summary>
            /// 获取token的路径
            /// </summary>
            private readonly string AccTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
    
    
            private readonly ICacheManager _cacheManager;
            private readonly IConfiguration _appConfiguration;
    
            public MPCacheAppService(IConfiguration appConfiguration, ICacheManager cacheManager)
            {
                _appConfiguration = appConfiguration;
                _cacheManager = cacheManager;
            }
    
    
            /// <summary>
            /// 获取公众微信号的token
            /// </summary>
            /// <returns></returns>
            public async Task<string> GetAccessToken()
            {
                var acctoken = await _cacheManager.GetCache("WeiXinMP").GetOrDefaultAsync("AccessToken");
                if (acctoken == null || string.IsNullOrEmpty(acctoken.ToString()))
                {
                    var appId = _appConfiguration[AppIdSAddress];
                    var appSecret = _appConfiguration[AppSecretAddress];
                    var url = string.Format(AccTokenUrl, appId, appSecret);
                    var result = HttpClientHelper<AccessTokenResult>.Get(url,new AccessTokenResult());
                    if (result != null)
                    {
                        await _cacheManager.GetCache("WeiXinMP").SetAsync("AccessToken", result.access_token, TimeSpan.FromHours(2));
                        return result.access_token;
                    }
                }
                return acctoken.ToString();
            }
    
        }
    }
  • 相关阅读:
    poj 3744 题解
    hdu 1850 题解
    New World
    CSP2019游记
    LOJ6052 DIV
    CF809E Surprise me!
    Luogu4548 歌唱王国
    Luogu4581 想法
    Note 5.26-5.28
    LOJ6519 魔力环
  • 原文地址:https://www.cnblogs.com/LmuQuan/p/11233639.html
Copyright © 2011-2022 走看看