You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
17 KiB

using SDKAdapter.OperationPlatform.Models;
namespace SDKAdapter
{
public class ExpressCompanyNameConverter
{
private IDictionary<string, IList<LogisticsCompanyRelationship>> converterDictionary;
public ExpressCompanyNameConverter()
{
converterDictionary = new Dictionary<string, IList<LogisticsCompanyRelationship>>();
converterDictionary.Add($"{AdapterEnums.PlatformType.阿里巴巴}_{AdapterEnums.PlatformType.京东}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="中通快递(ZTO)",TargetName="中通速递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通快递"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递",SecondTargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="其他",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦物流",SecondTargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递",SecondTargetName="德邦快运"},
new LogisticsCompanyRelationship(){SourceName="其它",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
new LogisticsCompanyRelationship(){SourceName="龙邦速递",TargetName="龙邦快递"},
new LogisticsCompanyRelationship(){SourceName="安能物流",TargetName="安能物流"},
new LogisticsCompanyRelationship(){SourceName="德坤物流",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰快运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="壹米滴答",TargetName="壹米滴答"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
new LogisticsCompanyRelationship(){SourceName="京广速递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="丰网速运",TargetName="丰网速运"},
new LogisticsCompanyRelationship(){SourceName="顺心捷达",TargetName="顺心捷达"},
new LogisticsCompanyRelationship(){SourceName="快捷快递",TargetName="快捷速递"},
new LogisticsCompanyRelationship(){SourceName="极兔快递(原百世快递)",TargetName="京旗联盟-极兔",SecondTargetName ="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="极兔速递-原百世快递",TargetName="京旗联盟-极兔",SecondTargetName ="厂家自送"}
});
converterDictionary.Add($"{AdapterEnums.PlatformType.拳探}_{AdapterEnums.PlatformType.京东}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递",TargetName="圆通快递"},
new LogisticsCompanyRelationship(){SourceName="中通快递",TargetName="中通速递"},
new LogisticsCompanyRelationship(){SourceName="申通快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="京旗联盟-极兔"},
new LogisticsCompanyRelationship(){SourceName="邮政快递包裹",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="天天快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="邮政标准快递",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦物流"},
new LogisticsCompanyRelationship(){SourceName="众邮快递",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
new LogisticsCompanyRelationship(){SourceName="宅急送",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="苏宁物流",TargetName="厂家自送"}
});
converterDictionary.Add($"{AdapterEnums.PlatformType.阿里巴巴}_{AdapterEnums.PlatformType.拳探}", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="中通快递(ZTO)",TargetName="中通快递"},
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通速递"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰速运"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="百世快递"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="EMS"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="极兔速递"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运"},
//new LogisticsCompanyRelationship(){SourceName="龙邦速递",TargetName="龙邦快递"},
//new LogisticsCompanyRelationship(){SourceName="安能物流",TargetName="安能物流"},
//new LogisticsCompanyRelationship(){SourceName="德坤物流",TargetName="厂家自送"},
new LogisticsCompanyRelationship(){SourceName="顺丰快运",TargetName="顺丰速运"},
//new LogisticsCompanyRelationship(){SourceName="壹米滴答",TargetName="壹米滴答"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递"},
//new LogisticsCompanyRelationship(){SourceName="京广速递",TargetName="厂家自送"},
//new LogisticsCompanyRelationship(){SourceName="丰网速运",TargetName="丰网速运"},
//new LogisticsCompanyRelationship(){SourceName="顺心捷达",TargetName="顺心捷达"},
//new LogisticsCompanyRelationship(){SourceName="快捷快递",TargetName="快捷速递"},
new LogisticsCompanyRelationship(){SourceName="极兔快递(原百世快递)",TargetName="极兔速递"},
new LogisticsCompanyRelationship(){SourceName="极兔速递-原百世快递",TargetName="极兔速递"}
});
converterDictionary.Add("1688_kuaidi100", new List<LogisticsCompanyRelationship>()
{
new LogisticsCompanyRelationship(){SourceName="中通快递(ZTO)",TargetName="中通快递",TargetCode="zhongtong"},
new LogisticsCompanyRelationship(){SourceName="中通快运",TargetName="中通快运",TargetCode="zhongtongkuaiyun"},
new LogisticsCompanyRelationship(){SourceName="圆通速递(YTO)",TargetName="圆通速递",TargetCode="yuantong"},
new LogisticsCompanyRelationship(){SourceName="圆通速递",TargetName="圆通速递",TargetCode="yuantong"},
new LogisticsCompanyRelationship(){SourceName="圆通",TargetName="圆通速递",TargetCode="yuantong"},
new LogisticsCompanyRelationship(){SourceName="邮政国内小包",TargetName="邮政快递包裹",TargetCode="youzhengguonei"},
new LogisticsCompanyRelationship(){SourceName="韵达快递",TargetName="韵达快递",TargetCode="yunda"},
new LogisticsCompanyRelationship(){SourceName="韵达快运",TargetName="韵达快运",TargetCode="yundakuaiyun"},
new LogisticsCompanyRelationship(){SourceName="申通快递(STO)",TargetName="申通快递",TargetCode="shentong"},
new LogisticsCompanyRelationship(){SourceName="申通",TargetName="申通快递",TargetCode="shentong"},
new LogisticsCompanyRelationship(){SourceName="申通快递",TargetName="申通快递",TargetCode="shentong"},
new LogisticsCompanyRelationship(){SourceName="顺丰速运",TargetName="顺丰快递",TargetCode="shunfeng"},
new LogisticsCompanyRelationship(){SourceName="顺丰快运",TargetName="顺丰快运",TargetCode="shunfengkuaiyun"},
new LogisticsCompanyRelationship(){SourceName="百世快递",TargetName="百世快递",TargetCode="huitongkuaidi"},
new LogisticsCompanyRelationship(){SourceName="百世物流",TargetName="百世快运",TargetCode="baishiwuliu"},
new LogisticsCompanyRelationship(){SourceName="德邦",TargetName="德邦物流",TargetCode="debangwuliu"},
new LogisticsCompanyRelationship(){SourceName="德邦快递",TargetName="德邦快递",TargetCode="debangkuaidi"},
new LogisticsCompanyRelationship(){SourceName="EMS",TargetName="EMS",TargetCode="ems"},
new LogisticsCompanyRelationship(){SourceName="EMS经济快递",TargetName="EMS",TargetCode="ems"},
new LogisticsCompanyRelationship(){SourceName="极兔速递",TargetName="极兔速递",TargetCode="jtexpress"},
new LogisticsCompanyRelationship(){SourceName="极兔快递(原百世快递)",TargetName="极兔速递",TargetCode="jtexpress"},
new LogisticsCompanyRelationship(){SourceName="极兔速递-原百世快递",TargetName="极兔速递",TargetCode="jtexpress"},
new LogisticsCompanyRelationship(){SourceName="安能物流",TargetName="安能物流",TargetCode="annengwuliu"},
new LogisticsCompanyRelationship(){SourceName="德坤物流",TargetName="德坤物流",TargetCode="dekuncn"},
new LogisticsCompanyRelationship(){SourceName="壹米滴答",TargetName="壹米滴答",TargetCode="yimidida"},
new LogisticsCompanyRelationship(){SourceName="壹米滴答快运",TargetName="壹米滴答",TargetCode="yimidida"},
new LogisticsCompanyRelationship(){SourceName="优速快递",TargetName="优速快递",TargetCode="youshuwuliu"},
new LogisticsCompanyRelationship(){SourceName="京广速递",TargetName="京广速递",TargetCode="jinguangsudikuaijian"},
new LogisticsCompanyRelationship(){SourceName="丰网速运",TargetName="丰网速运",TargetCode="fengwang"},
new LogisticsCompanyRelationship(){SourceName="顺心捷达",TargetName="顺心捷达",TargetCode="sxjdfreight"},
new LogisticsCompanyRelationship(){SourceName="快捷快递",TargetName="快捷速递",TargetCode="kuaijiesudi"},
new LogisticsCompanyRelationship(){SourceName="优速",TargetName="优速物流",TargetCode="youshuwuliu"},
new LogisticsCompanyRelationship(){SourceName="优速物流",TargetName="优速物流",TargetCode="youshuwuliu"},
new LogisticsCompanyRelationship(){SourceName="加运美速递",TargetName="加运美",TargetCode="jiayunmeiwuliu"},
new LogisticsCompanyRelationship(){SourceName="加运美",TargetName="加运美",TargetCode="jiayunmeiwuliu"},
new LogisticsCompanyRelationship(){SourceName="信丰物流",TargetName="信丰物流",TargetCode="xinfengwuliu"},
new LogisticsCompanyRelationship(){SourceName="京东物流",TargetName="京东物流",TargetCode="jd"},
new LogisticsCompanyRelationship(){SourceName="速腾快递",TargetName="速腾快递",TargetCode="suteng"},
new LogisticsCompanyRelationship(){SourceName="运通快运",TargetName="运通快运",TargetCode="ytky168"},
new LogisticsCompanyRelationship(){SourceName="汇森速运",TargetName="汇森速运",TargetCode="huisenky"},
new LogisticsCompanyRelationship(){SourceName="丹鸟物流",TargetName="丹鸟物流",TargetCode="danniao"},
new LogisticsCompanyRelationship(){SourceName="丹鸟",TargetName="丹鸟物流",TargetCode="danniao"},
new LogisticsCompanyRelationship(){SourceName="跨越速运",TargetName="跨越速运",TargetCode="kuayue"}
});
}
/// <summary>
/// 翻译各平台之间的物流公司
/// </summary>00
/// <param name="sourceName"></param>
/// <param name="sourcePlatform"></param>
/// <param name="targetPlatform"></param>
/// <param name="opExpressCompanyList">运营平台物流公司</param>
/// <returns>目标平台的物流公司Id</returns>
public OP_QueryExpressCompanyResponse Converter(string sourceName,
AdapterEnums.PlatformType sourcePlatform,
AdapterEnums.PlatformType targetPlatform,
IList<OP_QueryExpressCompanyResponse> opExpressCompanyList)
{
var key = $"{sourcePlatform}_{targetPlatform}";
if (!converterDictionary.TryGetValue(key, out IList<LogisticsCompanyRelationship> companyRelationShips))
throw new Exception($"不支持{sourcePlatform}与{targetPlatform}的物流公司翻译");
var targetShip = companyRelationShips.FirstOrDefault(l => l.SourceName == sourceName);
if (targetShip == null)
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},未找到{sourcePlatform}的物流公司{sourceName}");
var expressCompany = opExpressCompanyList.FirstOrDefault(c => c.ExpressName.Equals(targetShip.TargetName));
if (expressCompany == null)
{
if (!string.IsNullOrEmpty(targetShip.SecondTargetName))
{
expressCompany = opExpressCompanyList.FirstOrDefault(c => c.ExpressName.Equals(targetShip.SecondTargetName));
if (expressCompany == null)
{
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},targetShip:{targetShip.SecondTargetName},在用户支持的物流公司中不存在");
}
}
else
{
throw new Exception($"sourcePlatform:{sourcePlatform},targetPlatform:{targetPlatform},targetShip:{targetShip.TargetName},在用户支持的物流公司中不存在");
}
}
return expressCompany;
}
public LogisticsCompanyRelationship ConverterToKuaiDi100Company(string sourceName)
{
var key = "1688_kuaidi100";
if (!converterDictionary.TryGetValue(key, out IList<LogisticsCompanyRelationship> companyRelationShips))
return null;
return companyRelationShips.FirstOrDefault(l => l.SourceName == sourceName);
}
}
public class LogisticsCompanyRelationship
{
public string SourceName { get; set; }
public string TargetName { get; set; }
public string TargetCode { get; set; }
public string SecondTargetName { get; set; }
public string SecondTargetCode { get; set; }
}
}