Browse Source

1688发货通知补齐TargetExpress信息

yijia
shanji 2 years ago
parent
commit
7a9d8720b6
  1. 24
      BBWYB.Server.Business/KuaiDi100Manager.cs
  2. 12
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  3. 6
      SDKAdapter/ExpressCompanyNameConverter.cs

24
BBWYB.Server.Business/KuaiDi100Manager.cs

@ -9,42 +9,32 @@ namespace BBWYB.Server.Business
public class KuaiDi100Manager : IDenpendency public class KuaiDi100Manager : IDenpendency
{ {
private RestApiService restApiService; private RestApiService restApiService;
private ExpressCompanyNameConverter expressCompanyNameConverter;
public IList<int> KuaiDi100PushStateList_ZaiTu = new List<int>() { 0, 1001, 1002, 1003 }; 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_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_QianShou = new List<int>() { 3, 301, 302, 303, 304 };
public IList<int> KuaiDi100PushStateList_PaiJian = new List<int>() { 5, 501 }; public IList<int> KuaiDi100PushStateList_PaiJian = new List<int>() { 5, 501 };
public KuaiDi100Manager(RestApiService restApiService, ExpressCompanyNameConverter expressCompanyNameConverter) public KuaiDi100Manager(RestApiService restApiService)
{ {
this.restApiService = restApiService; this.restApiService = restApiService;
this.expressCompanyNameConverter = expressCompanyNameConverter;
} }
private void ThrowSubscribeError(string waybillno, string sourceExpressName, string kuaidi100CompanyCode, string error) private void ThrowSubscribeError(string waybillno, string kuaidi100CompanyCode, string error)
{ {
throw new Exception($"订阅快递100失败 waybillno:{waybillno} sourceExpressName:{sourceExpressName} kuaidi100CompanyCode:{kuaidi100CompanyCode} error:{error}"); throw new Exception($"订阅快递100失败 waybillno:{waybillno} kuaidi100CompanyCode:{kuaidi100CompanyCode} error:{error}");
} }
/// <summary> /// <summary>
/// 订阅快递100 /// 订阅快递100
/// </summary> /// </summary>
/// <param name="waybillno"></param> /// <param name="waybillno"></param>
/// <param name="sourceExpressName"></param>
/// <param name="kuaidi100CompanyCode"></param> /// <param name="kuaidi100CompanyCode"></param>
/// <param name="callbackUrl"></param> /// <param name="callbackUrl"></param>
public void SubscribeKuaiDi100(string waybillno, string sourceExpressName, string kuaidi100CompanyCode, string callbackUrl) public void SubscribeKuaiDi100(string waybillno, string kuaidi100CompanyCode, string callbackUrl)
{ {
if (string.IsNullOrEmpty(sourceExpressName) && string.IsNullOrEmpty(kuaidi100CompanyCode))
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, "原始快递公司名称和快递100公司编码必须任意一个有值");
if (string.IsNullOrEmpty(kuaidi100CompanyCode)) if (string.IsNullOrEmpty(kuaidi100CompanyCode))
{ ThrowSubscribeError(waybillno, kuaidi100CompanyCode, "缺少快递100公司编码");
kuaidi100CompanyCode = expressCompanyNameConverter.ConverterToKuaiDi100CompanyCode(sourceExpressName);
if (string.IsNullOrEmpty(kuaidi100CompanyCode))
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, "无翻译结果");
}
var paramStr = JsonConvert.SerializeObject(new var paramStr = JsonConvert.SerializeObject(new
{ {
@ -60,10 +50,10 @@ namespace BBWYB.Server.Business
}); });
var subscribeResult = restApiService.SendRequest("https://poll.kuaidi100.com", "poll", $"schema=json&param={paramStr}", null, HttpMethod.Post, RestApiService.ContentType_Form); var subscribeResult = restApiService.SendRequest("https://poll.kuaidi100.com", "poll", $"schema=json&param={paramStr}", null, HttpMethod.Post, RestApiService.ContentType_Form);
if (subscribeResult.StatusCode != System.Net.HttpStatusCode.OK) if (subscribeResult.StatusCode != System.Net.HttpStatusCode.OK)
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, subscribeResult.Content); ThrowSubscribeError(waybillno, kuaidi100CompanyCode, subscribeResult.Content);
var subscribeResponse = JsonConvert.DeserializeObject<KuaiDi100SubscribeResponse>(subscribeResult.Content); var subscribeResponse = JsonConvert.DeserializeObject<KuaiDi100SubscribeResponse>(subscribeResult.Content);
if (!subscribeResponse.result) if (!subscribeResponse.result)
ThrowSubscribeError(waybillno, sourceExpressName, kuaidi100CompanyCode, subscribeResponse.message); ThrowSubscribeError(waybillno, kuaidi100CompanyCode, subscribeResponse.message);
} }
/// <summary> /// <summary>

12
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -923,7 +923,7 @@ namespace BBWYB.Server.Business
#region 订阅快递100 #region 订阅快递100
if (!isExists) if (!isExists)
kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, string.Empty, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); kuaiDi100Manager.SubscribeKuaiDi100(request.WaybillNo, request.ExpressId, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
#endregion #endregion
#region 创建快递单 #region 创建快递单
@ -1226,9 +1226,15 @@ namespace BBWYB.Server.Business
if (purchaseExpressOrderList.Any(po => po.WaybillNo == logisticsInfo.WayBillNo)) if (purchaseExpressOrderList.Any(po => po.WaybillNo == logisticsInfo.WayBillNo))
continue; continue;
#region 快递1688物流公司为快递100物流公司
var kuaidi100Company = expressCompanyNameConverter.ConverterToKuaiDi100Company(logisticsInfo.ExpressName);
if (kuaidi100Company == null)
throw new Exception($"快递100公司翻译失败 SourceExpressName:{logisticsInfo.ExpressName}");
#endregion
#region 订阅快递100 #region 订阅快递100
currentProgress = "订阅快递100"; currentProgress = "订阅快递100";
kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, logisticsInfo.ExpressName, string.Empty, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); kuaiDi100Manager.SubscribeKuaiDi100(logisticsInfo.WayBillNo, kuaidi100Company.TargetCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
#endregion #endregion
#region 创建快递单 #region 创建快递单
@ -1241,6 +1247,8 @@ namespace BBWYB.Server.Business
SourceExpressId = logisticsInfo.ExpressId, SourceExpressId = logisticsInfo.ExpressId,
SourceExpressName = logisticsInfo.ExpressName, SourceExpressName = logisticsInfo.ExpressName,
WaybillNo = logisticsInfo.WayBillNo, WaybillNo = logisticsInfo.WayBillNo,
TargetExpressId = kuaidi100Company.TargetCode,
TargetExpressName = kuaidi100Company.TargetName,
ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收 ExpressState = kuaiDi100Manager.GetExpressState(1) //快递100发货状态值 默认揽收
}; };
insertPurchaseExpressOrderList.Add(purchaseExpressOrder); insertPurchaseExpressOrderList.Add(purchaseExpressOrder);

6
SDKAdapter/ExpressCompanyNameConverter.cs

@ -155,12 +155,12 @@ namespace SDKAdapter
return expressCompany; return expressCompany;
} }
public string ConverterToKuaiDi100CompanyCode(string sourceName) public LogisticsCompanyRelationship ConverterToKuaiDi100Company(string sourceName)
{ {
var key = "1688_kuaidi100"; var key = "1688_kuaidi100";
if (!converterDictionary.TryGetValue(key, out IList<LogisticsCompanyRelationship> companyRelationShips)) if (!converterDictionary.TryGetValue(key, out IList<LogisticsCompanyRelationship> companyRelationShips))
return string.Empty; return null;
return companyRelationShips.FirstOrDefault(l => l.SourceName == sourceName)?.TargetCode; return companyRelationShips.FirstOrDefault(l => l.SourceName == sourceName);
} }
} }

Loading…
Cancel
Save