8 changed files with 257 additions and 11 deletions
@ -0,0 +1,12 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace BBWYB.Server.Business.Extensions |
|||
{ |
|||
internal class PurchaseOrderStateExtension |
|||
{ |
|||
} |
|||
} |
@ -0,0 +1,93 @@ |
|||
using BBWYB.Common.Http; |
|||
using BBWYB.Common.Models; |
|||
using Newtonsoft.Json; |
|||
using SDKAdapter; |
|||
|
|||
namespace BBWYB.Server.Business |
|||
{ |
|||
public class KuaiDi100Manager : IDenpendency |
|||
{ |
|||
private RestApiService restApiService; |
|||
private ExpressCompanyNameConverter expressCompanyNameConverter; |
|||
|
|||
public IList<int> KuaiDi100PushStateList_ZaiTu = new List<int>() { 0, 1001, 1002, 1003 }; |
|||
public IList<int> KuaiDi100PushStateList_LanShou = new List<int>() { 1, 101, 102, 103 }; |
|||
public IList<int> KuaiDi100PushStateList_QianShou = new List<int>() { 3, 301, 302, 303, 304 }; |
|||
public IList<int> KuaiDi100PushStateList_PaiJian = new List<int>() { 5, 501 }; |
|||
|
|||
public KuaiDi100Manager(RestApiService restApiService, ExpressCompanyNameConverter expressCompanyNameConverter) |
|||
{ |
|||
this.restApiService = restApiService; |
|||
this.expressCompanyNameConverter = expressCompanyNameConverter; |
|||
} |
|||
|
|||
private void ThrowSubscribeError(string waybillno, string sourceExpressName, string kuaidi100CompanyCode, string error) |
|||
{ |
|||
throw new Exception($"订阅快递100失败 waybillno:{waybillno} sourceExpressName:{sourceExpressName} kuaidi100CompanyCode:{kuaidi100CompanyCode} error:{error}"); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 订阅快递100
|
|||
/// </summary>
|
|||
/// <param name="waybillno"></param>
|
|||
/// <param name="sourceExpressName"></param>
|
|||
/// <param name="kuaidi100CompanyCode"></param>
|
|||
/// <param name="callbackUrl"></param>
|
|||
public void SubscribeKuaiDi100(string waybillno, string sourceExpressName, string kuaidi100CompanyCode,string callbackUrl) |
|||
{ |
|||
if (string.IsNullOrEmpty(sourceExpressName) && string.IsNullOrEmpty(kuaidi100CompanyCode)) |
|||
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, "原始快递公司名称和快递100公司编码必须任意一个有值"); |
|||
|
|||
if (string.IsNullOrEmpty(kuaidi100CompanyCode)) |
|||
kuaidi100CompanyCode = expressCompanyNameConverter.ConverterToKuaiDi100CompanyCode(sourceExpressName); |
|||
if (string.IsNullOrEmpty(kuaidi100CompanyCode)) |
|||
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, "无翻译结果"); |
|||
|
|||
var paramStr = JsonConvert.SerializeObject(new |
|||
{ |
|||
company = kuaidi100CompanyCode, |
|||
number = waybillno, |
|||
key = "SdcRPzxo8802", |
|||
parameters = new |
|||
{ |
|||
callbackurl = callbackUrl, |
|||
salt = Guid.NewGuid(), |
|||
resultv2 = "4" |
|||
} |
|||
}); |
|||
var subscribeResult = restApiService.SendRequest("https://poll.kuaidi100.com", "poll", $"schema=json¶m={paramStr}", null, HttpMethod.Post, RestApiService.ContentType_Form); |
|||
if (subscribeResult.StatusCode != System.Net.HttpStatusCode.OK) |
|||
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, subscribeResult.Content); |
|||
var subscribeResponse = JsonConvert.DeserializeObject<KuaiDi100Response>(subscribeResult.Content); |
|||
if (!subscribeResponse.result) |
|||
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, subscribeResponse.message); |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 获取物流状态 ZaiTu LanShou QianShou PaiJian Unknow
|
|||
/// </summary>
|
|||
/// <param name="kuaidi100State"></param>
|
|||
/// <returns></returns>
|
|||
public string GetExpressState(int kuaidi100State) |
|||
{ |
|||
if (KuaiDi100PushStateList_ZaiTu.Contains(kuaidi100State)) |
|||
return "ZaiTu"; |
|||
if (KuaiDi100PushStateList_LanShou.Contains(kuaidi100State)) |
|||
return "LanShou"; |
|||
if (KuaiDi100PushStateList_QianShou.Contains(kuaidi100State)) |
|||
return "QianShou"; |
|||
if (KuaiDi100PushStateList_PaiJian.Contains(kuaidi100State)) |
|||
return "PaiJian"; |
|||
return "Unknow"; |
|||
} |
|||
} |
|||
|
|||
public class KuaiDi100Response |
|||
{ |
|||
public bool result { get; set; } |
|||
|
|||
public int returnCode { get; set; } |
|||
|
|||
public string message { get; set; } |
|||
} |
|||
} |
Loading…
Reference in new issue