195 lines
8.2 KiB
C#
195 lines
8.2 KiB
C#
using AllBase;
|
|
using AllBase.Helper;
|
|
using AllBase.Model.Result;
|
|
using AllBase.Model.Result.PDDResult;
|
|
using NaiBa.Util;
|
|
using NaiBa.Util.Extension;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Work;
|
|
|
|
namespace TemuKJD.BLL.PddApi
|
|
{
|
|
public class PddApiHelper
|
|
{
|
|
public static AuthInfo RefreshOrderApi(AuthInfo _authInfo, bool isForceRefresh = false)
|
|
{
|
|
if (isForceRefresh || (_authInfo.UpdateTime <= DateTime.Now.AddDays(-1) && _authInfo.ExpiresTime <= DateTime.Now))
|
|
{
|
|
string errStr = "";
|
|
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == _authInfo.ShopId);
|
|
if (shop == null)
|
|
shop = new ShopLoginInfo() { ShopId = _authInfo.ShopId };
|
|
var authInfo = PddApiHelper.GetE57ShopPddToken(shop, out errStr);
|
|
return authInfo;
|
|
}
|
|
return _authInfo;
|
|
}
|
|
|
|
public static void RefreshApi(ShopLoginInfo shop, bool isForceRefresh = false)
|
|
{
|
|
if (isForceRefresh || (shop.AuthUpdateTime <= DateTime.Now.AddDays(-1) && shop.AuthExpiresTime <= DateTime.Now))
|
|
{
|
|
if (!GlobalConfig.PddClientInfoList.Any(c => c.client_id == PddApi.clientId_pi_xiu_guan_jia))
|
|
return;
|
|
|
|
string errStr = "";
|
|
var authInfo = PddApiHelper.GetE57ShopPddToken(shop, out errStr);
|
|
if (errStr.IsNullOrEmpty() || (shop.AuthUpdateTime <= DateTime.Now.AddDays(-1) && shop.AuthExpiresTime <= DateTime.Now))
|
|
{
|
|
shop.ApiAuthInfoList.RemoveAll(a => a.AppKey.IsNullOrEmpty() || a.AppKey == authInfo.AppKey);
|
|
shop.ApiAuthInfoList.Add(authInfo);
|
|
}
|
|
|
|
if (authInfo != null && !string.IsNullOrEmpty(authInfo.AccessToken))
|
|
PddApiHelper.SaveShopClientInfo(authInfo);
|
|
}
|
|
}
|
|
|
|
public static void RefreshApi(List<ShopLoginInfo> shops, bool isForceRefresh = false)
|
|
{
|
|
foreach (var shop in shops)
|
|
{
|
|
RefreshApi(shop, isForceRefresh);
|
|
}
|
|
}
|
|
|
|
public static AuthInfo GetE57ShopPddToken(ShopLoginInfo shop, out string errorStr)
|
|
{
|
|
errorStr = "";
|
|
|
|
var url = BaseClass.BuildPDDObjString("shop/e57_get_pdd_shop_token");
|
|
var data = UserLogin.GetSignaturex();
|
|
data += "&mall_id=" + shop.MallId;
|
|
var html = GetHtml.PostUtf8(url, data);
|
|
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":0"))
|
|
{
|
|
errorStr = BaseRegex.GetStringJson(ref html, "msg");
|
|
if (string.IsNullOrEmpty(errorStr))
|
|
errorStr = html;
|
|
}
|
|
else
|
|
{
|
|
var token = new AuthInfo()
|
|
{
|
|
ShopId = shop.ShopId,
|
|
UpdateTime = DateTime.Now,
|
|
AppKey = PddApi.clientId_pi_xiu_guan_jia,
|
|
AccessToken = BaseRegex.GetStringJson(ref html, "accessToken"),
|
|
ExpiresTime = BaseClass.StampToDateTime(BaseRegex.GetIntJson(ref html, "tokenExpiresTime")),
|
|
ApiAuthStatus = "授权成功",
|
|
};
|
|
return token;
|
|
}
|
|
return new AuthInfo()
|
|
{
|
|
ShopId = shop.ShopId,
|
|
UpdateTime = DateTime.Now,
|
|
AppKey = PddApi.clientId_pi_xiu_guan_jia,
|
|
AccessToken = "",
|
|
ExpiresTime = DateTime.Now,
|
|
ApiAuthStatus = "未授权",
|
|
};
|
|
}
|
|
|
|
public static void GetShopClientInfo(List<ShopLoginInfo> shops = null)
|
|
{
|
|
if (BaseClass.MainPath == "29pdd")
|
|
{
|
|
ConcurrentList<ShopLoginInfo> shopList = new ConcurrentList<ShopLoginInfo>();
|
|
if (shops == null)
|
|
shopList.AddRange(GlobalConfig.ShopLoginList);
|
|
else
|
|
shopList.AddRange(shops);
|
|
while (shopList.Count > 0)
|
|
{
|
|
var shopTemp = shopList.Take(50).ToList();
|
|
|
|
var url = BaseClass.BuildPDDObjString("shop/get_shop_client_info");
|
|
var data = UserLogin.GetSignaturex();
|
|
data += "&shop_ids=" + string.Join(",", shopTemp.Select(s => s.ShopId).Distinct());
|
|
var html = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
html = GetHtml.PostUtf8(url, data);
|
|
|
|
if (html.Contains("\"code\":200"))
|
|
{
|
|
try
|
|
{
|
|
var dataStr = JsonHelper.SerializeObject(JsonHelper.JObjectParse(html)["data"]);
|
|
var serverApiAuthList = JsonHelper.DeserializeJsonToList<AuthInfo>(dataStr);
|
|
serverApiAuthList = serverApiAuthList.Where(a => GlobalConfig.PddClientInfoList.Any(c => c.client_id == a.AppKey)).ToList();
|
|
foreach (var serverAuth in serverApiAuthList)
|
|
{
|
|
var shop = shopList.FirstOrDefault(s => s.ShopId == serverAuth.ShopId);
|
|
var auth = shop.ApiAuthInfoList.FirstOrDefault(a => a.AppKey == serverAuth.AppKey);
|
|
if (auth == null)
|
|
{
|
|
auth = new AuthInfo();
|
|
shop.ApiAuthInfoList.Add(auth);
|
|
}
|
|
auth.ShopId = serverAuth.ShopId;
|
|
auth.AccessToken = serverAuth.AccessToken;
|
|
auth.RefreshToken = serverAuth.RefreshToken;
|
|
auth.AppKey = serverAuth.AppKey;
|
|
auth.ExpiresTime = serverAuth.ExpiresTime;
|
|
auth.UpdateTime = serverAuth.UpdateTime;
|
|
auth.ApiAuthStatus = serverAuth.ApiAuthStatus;
|
|
auth.AppSecret = serverAuth.AppSecret;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
shopList.RemoveAll(s => shopTemp.Contains(s));
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string SaveShopClientInfo(AuthInfo auth)
|
|
{
|
|
var clientUrl = BaseClass.BuildObjString("shop/add_mdy_shop_client_info");
|
|
var data = UserLogin.GetSignaturex()
|
|
+ "&ShopId=" + auth.ShopId
|
|
+ "&AccessToken=" + auth.AccessToken
|
|
+ "&RefreshToken=" + auth.RefreshToken
|
|
+ "&AppKey=" + auth.AppKey
|
|
+ "&ExpiresTime=" + auth.ExpiresTime.ToString("yyyy-MM-dd HH:mm:ss")
|
|
+ "&UpdateTime=" + auth.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss")
|
|
+ "&ApiAuthStatus=" + auth.ApiAuthStatus
|
|
+ "&AppSecret=" + auth.AppSecret;
|
|
var result = GetHtml.PostUtf8(clientUrl, data);
|
|
return result;
|
|
}
|
|
|
|
public static void GetPddClientInfo()
|
|
{
|
|
if (BaseClass.MainPath == "29pdd")
|
|
{
|
|
var url = BaseClass.BuildPDDObjString("shop/get_pdd_client_info");
|
|
var data = UserLogin.GetSignaturex();
|
|
data += "&password=" + BaseClass.PassWord;
|
|
var html = GetHtml.PostUtf8(url, data);
|
|
if (!html.Contains("\"code\":200"))
|
|
html = GetHtml.PostUtf8(url, data);
|
|
|
|
if (html.Contains("\"code\":200"))
|
|
{
|
|
try
|
|
{
|
|
var clientDataStr = JsonHelper.SerializeObject(JsonHelper.JObjectParse(html)["data"]);
|
|
GlobalConfig.PddClientInfoList.Clear();
|
|
GlobalConfig.PddClientInfoList.AddRange(JsonHelper.DeserializeJsonToList<PddClientInfo>(clientDataStr));
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|