using BBWYB.Common.Http; using BBWYB.Common.Models; using Newtonsoft.Json; using SDKAdapter; using System.Collections.Generic; using System.Reflection; namespace BBWYB.Server.Business { public class KuaiDi100Manager : IDenpendency { private RestApiService restApiService; public IList KuaiDi100PushStateList_ZaiTu = new List() { 0, 1001, 1002, 1003 }; public IList KuaiDi100PushStateList_LanShou = new List() { 1, 101, 102, 103 }; public IList KuaiDi100PushStateList_QianShou = new List() { 3, 301, 302, 303, 304 }; public IList KuaiDi100PushStateList_PaiJian = new List() { 5, 501 }; private IList kuaiDi100ExpressCompanyList; public KuaiDi100Manager(RestApiService restApiService) { this.restApiService = restApiService; kuaiDi100ExpressCompanyList = new List(); var lines = File.ReadAllLines(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "KuaiDi100ExpressCompany.txt"), System.Text.Encoding.UTF8); foreach (var line in lines) { var array = line.Split(',', StringSplitOptions.RemoveEmptyEntries); if (!array[2].Contains("国内")) continue; kuaiDi100ExpressCompanyList.Add(new KuaiDi100ExpressCompany() { ExpressId = array[1], ExpressName = array[0], Type = array[2] }); } } /// /// 订阅快递100 /// /// /// /// public void SubscribeKuaiDi100(string waybillno, string kuaidi100CompanyCode, string callbackUrl) { if (string.IsNullOrEmpty(kuaidi100CompanyCode)) throw new Exception("缺少快递100公司编码"); 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) throw new Exception(subscribeResult.Content); var subscribeResponse = JsonConvert.DeserializeObject(subscribeResult.Content); if (!subscribeResponse.result) throw new Exception(subscribeResponse.message); } /// /// 获取物流状态 ZaiTu LanShou QianShou PaiJian Unknow /// /// /// 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 IList GetKuaiDi100ExpressCompanyList(KuaiDi100ExpressSearchRequest request) { if (string.IsNullOrEmpty(request.ExpressName)) return kuaiDi100ExpressCompanyList; else return kuaiDi100ExpressCompanyList.Where(x => x.ExpressName.Contains(request.ExpressName)).ToList(); } } public class KuaiDi100SubscribeResponse { public bool result { get; set; } public int returnCode { get; set; } public string message { get; set; } } public class KuaiDi100ExpressCompany { public string ExpressId { get; set; } public string ExpressName { get; set; } public string Type { get; set; } } public class KuaiDi100ExpressSearchRequest { public string ExpressName { get; set; } } }