public void SplitWithExpTest_2() { var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "735282490033", Quantity = 10, ProName = "MUNCHKIN碗", ProPrice = 1, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "CNP Express", GradeName = "标准型" }; var result = this._splitAppService.SplitWithOrganization(request); Assert.Equal(string.Empty, result.Item1); Assert.Single(result.Item2.OrderList); Assert.Equal("CNP Express", result.Item2.OrderList[0].LogisticsName); Assert.Equal("中邮杂货专线", result.Item2.OrderList[0].SubBusinessName); }
public Tuple <string, SplitedOrder> SplitWithOrganization(SplitWithExpRequest request) { var validResult = this.ValidRequire(request); if (!validResult.Item1) { return(Tuple.Create <string, SplitedOrder>(validResult.Item2, null)); } return(Tuple.Create(string.Empty, this.spliter.SplitWithOrganization(request.OrderId, request.ProList, request.TotalQuantity, request.LogisticsName, request.GradeName))); }
public void AllLogisticTest() { var files = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SplitRuleXml/AstraeaAssistant", "Rules")); Tuple <string, SplitedOrder> result = null; foreach (var item in files) { SplitPackageConfig rule = XmlHelper.LoadXmlFile <SplitPackageConfig>(item); var isSpecial = item.Contains("Rule_EWEExpress Standard new.xml"); var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = isSpecial ? "10000264" : "10000027", Quantity = 1, ProName = isSpecial ? "Refresh Eye Drops 0.04眼药水" : "S26 Stage 3新版 1.1", ProPrice = 10, Weight = 10 } }, TotalQuantity = 1, LogisticsName = rule.OrganizationName, GradeName = "标准型" }; result = this._splitAppService.SplitWithOrganization(request); Assert.True(result.Item2.OrderList.Count > 0); var request1 = new SplitWithExpRequest1() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", Quantity = 1, ProName = isSpecial ? "Refresh Eye Drops 0.04眼药水" : "S26 Stage 3新版 1.1", ProPrice = 10, Weight = 10, PTId = isSpecial ? "1010703" : "1019904" } }, TotalQuantity = 1, logistics = new List <string> { rule.OrganizationName } }; result = this._splitAppService.SplitWithOrganization1(request1); Assert.True(result.Item2.OrderList.Count > 0); } }
public void SplitWithExpTest_1() { var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "391709501015", Quantity = 1, ProName = "NOZOHAEM止鼻血凝胶4粒", ProPrice = 1, Weight = 100 }, new Product() { ProNo = "", SkuNo = "735282370007", Quantity = 1, ProName = "Munchkin草饲牧牛婴儿配方奶粉1段", ProPrice = 1, Weight = 100 }, new Product() { ProNo = "", SkuNo = "768990017414", Quantity = 1, ProName = "孕妇DHA", ProPrice = 1, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "CNP Express", GradeName = "标准型" }; var result = this._splitAppService.SplitWithOrganization(request); Assert.Equal(string.Empty, result.Item1); Assert.Single(result.Item2.OrderList); Assert.Equal("CNP Express", result.Item2.OrderList[0].LogisticsName); Assert.Equal("中邮混装线", result.Item2.OrderList[0].SubBusinessName); }
public void SplitWithExpTest_4() { var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "70000137", Quantity = 10, ProName = "蜡笔细长0.15", ProPrice = 1, Weight = 100 }, new Product() { ProNo = "", SkuNo = "93262170", Quantity = 5, ProName = "BONJELA口腔凝胶15G", ProPrice = 1, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "AOLAU EXPRESS", GradeName = "标准型" }; var result = this._splitAppService.SplitWithOrganization(request); Assert.Equal(string.Empty, result.Item1); Assert.Equal(2, result.Item2.OrderList.Count); Assert.Equal("AOLAU EXPRESS", result.Item2.OrderList[0].LogisticsName); Assert.Equal("澳通速递杂货混装线", result.Item2.OrderList[0].SubBusinessName); Assert.Equal("AOLAU EXPRESS", result.Item2.OrderList[1].LogisticsName); Assert.Equal("澳通速递杂货混装线", result.Item2.OrderList[1].SubBusinessName); }
public void SplitWithExpTest_3() { var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "852696000204", Quantity = 15, ProName = "COBRAMESTATE橄榄油750ML", ProPrice = 1, Weight = 100 }, new Product() { ProNo = "", SkuNo = "857052004445", Quantity = 10, ProName = "SKIPHOP围兜", ProPrice = 1, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "CNP Express", GradeName = "标准型" }; var result = this._splitAppService.SplitWithOrganization(request); Assert.Equal(string.Empty, result.Item1); Assert.Equal(2, result.Item2.OrderList.Count); Assert.Equal("CNP Express", result.Item2.OrderList[0].LogisticsName); Assert.Equal("中邮杂货专线", result.Item2.OrderList[0].SubBusinessName); Assert.Equal("CNP Express", result.Item2.OrderList[1].LogisticsName); Assert.Equal("中邮杂货专线", result.Item2.OrderList[1].SubBusinessName); }
public void SplitWithExpTest() { var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "26098951", Quantity = 1, ProName = "MAMIA婴幼儿奶粉二段900G二段", ProPrice = 100, Weight = 100 }, new Product() { ProNo = "", SkuNo = "26113807", Quantity = 2, ProName = "MAMIA婴幼儿奶粉三段900G三段", ProPrice = 100, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "AOLAU EXPRESS", GradeName = "标准型" }; var result = this._splitAppService.SplitWithOrganization(request); Assert.Equal(string.Empty, result.Item1); Assert.Single(result.Item2.OrderList); Assert.Equal("4PX Express", result.Item2.OrderList[0].LogisticsName); Assert.Equal("转运四方现代物流3罐婴儿奶粉专线", result.Item2.OrderList[0].SubBusinessName); }
protected Tuple <bool, string> ValidRequire <T>(T request) where T : BaseRequest { //非空验证 if (request == null) { LogHelper.Logger.Info("Request model is null", new ArgumentException("SRequest model is null")); return(Tuple.Create(false, "Request model is null")); } // 待拆分商品清单有效性验证 if ((request.ProList == null) || (request.ProList.Count <= 0)) { LogHelper.Logger.Info("Product list is null", new ArgumentException("Product list is null")); return(Tuple.Create(false, "Product list is null")); } //商品价格 if (request.ProList.Any(o => o.ProPrice <= 0)) { return(Tuple.Create(false, "商品价格必须大于0")); } //商品重量 if (request.ProList.Any(o => o.Weight <= 0)) { return(Tuple.Create(false, "商品重量必须大于0")); } //商品数量 if (request.ProList.Any(o => o.Quantity <= 0)) { return(Tuple.Create(false, "商品数量必须大于0")); } //sku或ptid if (request is SplitWithExpRequest1) { if (request.ProList.Any(o => string.IsNullOrEmpty(o.PTId))) { return(Tuple.Create(false, "缺少PTId")); } var unDeployPTIds = request.ProList.Where(o => !this.spliter.GetProductConfig().Products.Any(oi => oi.PTId.Equals(o.PTId))).Select(o => o.PTId).ToList(); if (unDeployPTIds.Count > 0) { return(Tuple.Create(false, string.Format("不存在PTId:{0}", string.Join(",", unDeployPTIds.Distinct())))); } } else { if (request.ProList.Any(o => string.IsNullOrEmpty(o.SkuNo))) { return(Tuple.Create(false, "缺少SkuNo")); } var unDeploySkuNoes = request.ProList.Where(o => !this.spliter.GetProductConfig().Products.Any(oi => oi.SKUNo.Trim().Equals(o.SkuNo))).Select(o => o.SkuNo).ToList(); if (unDeploySkuNoes.Count > 0) { return(Tuple.Create(false, string.Format("不存在SkuNo:{0}", string.Join(",", unDeploySkuNoes.Distinct())))); } } //指定物流判断 if (request is SplitWithExpRequest) { SplitWithExpRequest swr = (request as SplitWithExpRequest); string key = Logistic.GetLogisticName(swr.LogisticsName, swr.GradeName); if (key.Equals(Logistic.GetLogisticName(string.Empty, string.Empty))) { return(Tuple.Create(false, "请提供指定物流商")); } if (!this.spliter.GetLogisticcDic().ContainsKey(key)) { return(Tuple.Create(false, string.Format("不存在{0}的规则", key))); } } else if (request is SplitWithExpRequest1) { List <string> requestLogistics = (request as SplitWithExpRequest1).logistics; if (requestLogistics == null || requestLogistics.Count == 0) { return(Tuple.Create(false, "请提供指定物流商")); } var logisticsIds = requestLogistics.Distinct(); var unDeploylogisticsIds = logisticsIds.Where(o => !this.spliter.GetLogisticsList().Any(oi => oi.Name.Trim().Equals(o))).ToList(); if (unDeploylogisticsIds.Count > 0) { return(Tuple.Create(false, string.Format("指定物流商:{0}不存在", string.Join(",", unDeploylogisticsIds)))); } } return(Tuple.Create(true, string.Empty)); }
public void SplitWithExpInputValidTest() { Tuple <string, SplitedOrder> result = null; var request = new SplitWithExpRequest() { OrderId = "18040300110001", ProList = new List <Product>() { new Product() { ProNo = "", SkuNo = "26098951", Quantity = 1, ProName = "MAMIA婴幼儿奶粉二段900G二段", ProPrice = 100, Weight = 100 }, new Product() { ProNo = "", SkuNo = "26113807", Quantity = 2, ProName = "MAMIA婴幼儿奶粉三段900G三段", ProPrice = 100, Weight = 100 } }, TotalQuantity = 1, LogisticsName = "AOLAU EXPRESS", GradeName = "标准型" }; //商品重量不能为0 request.ProList.ForEach(o => o.Weight = 0); result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("商品重量必须大于0", result.Item1); //商品价格不能为0 request.ProList.ForEach(o => { o.ProPrice = 0; o.Weight = 100; }); result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("商品价格必须大于0", result.Item1); //商品数量不能为0 request.ProList.ForEach(o => { o.Quantity = 0; o.ProPrice = 100; }); result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("商品数量必须大于0", result.Item1); //指定物流商不存在 request.ProList.ForEach(o => { o.Quantity = 1; }); request.LogisticsName = "123"; result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("不存在123(标准型)的规则", result.Item1); request.LogisticsName = "AOLAU EXPRESS"; request.GradeName = "标准型123"; result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("不存在AOLAU EXPRESS(标准型123)的规则", result.Item1); request.LogisticsName = ""; request.GradeName = ""; result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("请提供指定物流商", result.Item1); //该商品sku商品库不存在 request.LogisticsName = "AOLAU EXPRESS"; request.GradeName = "标准型"; request.ProList.ForEach(o => { o.SkuNo = "$$$$"; }); result = this._splitAppService.SplitWithOrganization(request); Assert.Equal("不存在SkuNo:$$$$", result.Item1); }