using DSWeb.Areas.Dispatch.Helper; using DSWeb.Areas.MvcShipping.DB; using log4net; using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Runtime.Caching; using System.Web; namespace DSWeb.Areas.MvcShipping.Job { public class WechatWorkTokenJob : IJob { public static string WorkWeixinAccessTokenStoreKey = "WorkWeixinAccessToken"; ILog logger = LogManager.GetLogger("WechatWorkTokenJob"); public void Execute(IJobExecutionContext context) { if (MemoryCache.Default.Contains(WorkWeixinAccessTokenStoreKey)) { return; } RunBillContext runBillContext = new RunBillContext(); var pCorpid = runBillContext.ParamSets.FirstOrDefault(p => p.PARAMNAME == "WorkWeixinCorpid"); var pCorpsecret = runBillContext.ParamSets.FirstOrDefault(p => p.PARAMNAME == "WorkWeixinCorpsecret"); if (pCorpid == null || pCorpsecret == null) { logger.Error("业务参数中不存在微信企业号配置参数,请升级系统数据库"); return; } if (string.IsNullOrWhiteSpace(pCorpid.PARAMVALUE) || string.IsNullOrWhiteSpace(pCorpsecret.PARAMVALUE)) { logger.Error("业务参数中关于的微信企业号配置参数有误,请正确配置后再试"); return; } string resp = WebRequestHelper.DoGet($"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={pCorpid.PARAMVALUE}&corpsecret={pCorpsecret.PARAMVALUE}"); logger.Debug(resp); var jsonObj = JsonConvert.DeserializeAnonymousType(resp, new { errcode = 0, errmsg = "", access_token = "", expires_in = 0 }); if (jsonObj.errcode == 0) { MemoryCache.Default.Add(new CacheItem(WorkWeixinAccessTokenStoreKey, jsonObj.access_token), new CacheItemPolicy() { AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddSeconds(jsonObj.expires_in).AddMinutes(-5)) }); } } } }