Files
KJD_WebService/TEMUKJD/BLL/WxApiBLL.cs
T
2026-01-31 21:15:42 +08:00

66 lines
2.7 KiB
C#

using AllBase;
using AllBase.Helper;
using AllBase.Model.Result;
using AllBase.Model.Result.WXResult;
using NaiBa.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TemuKJD.BaseForms;
using Work;
namespace TemuKJD.BLL
{
public class WxApiBLL
{
public WXShopTokenInfo GetRandomWxToken()
{
if (GlobalConfig.WxTokenList.Count == 0 || GlobalConfig.WxTokenList.All(t => t.isExpire == true))
{
var url = BaseClass.BuildPDDObjString("product/get_wx_tokens");
var data = UserLogin.GetSignaturex();
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("获取授权失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg"));
return new WXShopTokenInfo();
}
var tokenStr = JsonHelper.SerializeObject(JsonHelper.JObjectParse(html)["tokens"].FirstOrDefault());
GlobalConfig.WxTokenList = new ConcurrentList<WXShopTokenInfo>();
GlobalConfig.WxTokenList.AddRange(JsonHelper.DeserializeJsonToList<WXShopTokenInfo>(tokenStr));
foreach (var token in GlobalConfig.WxTokenList)
{
token.mdyTime = Convert.ToDateTime(BaseRegex.GetStringJson(ref html, "mdy_time"));
}
}
var tokenCount = GlobalConfig.WxTokenList.Where(t => t.isExpire != true).Count();
return GlobalConfig.WxTokenList.Where(t => t.isExpire != true).OrderBy(x => Guid.NewGuid()).FirstOrDefault();
}
public string GetShopWxToken(ShopLoginInfo shop)
{
if (string.IsNullOrEmpty(shop.WxToken) || DateTime.Now.AddMinutes(115) > shop.WxTokenExpire)
{
var url = BaseClass.BuildPDDObjString("product/get_shop_wx_token");
var data = UserLogin.GetSignaturex();
data += "&shop_id=" + shop.ShopId;
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("获取授权失败,请重试!" + BaseRegex.GetStringJson(ref html, "msg"));
return "";
}
var tokenStr = BaseRegex.GetStringJson(ref html, "token");
var ExpireStr = BaseRegex.GetStringJson(ref html, "expire");
shop.WxToken = tokenStr;
shop.WxTokenExpire = Convert.ToDateTime(ExpireStr);
}
return shop.WxToken;
}
}
}