diff --git a/TradeManageNew/DD_OrderServiceNew.asmx.cs b/TradeManageNew/DD_OrderServiceNew.asmx.cs index 4e74fb0..a69a946 100644 --- a/TradeManageNew/DD_OrderServiceNew.asmx.cs +++ b/TradeManageNew/DD_OrderServiceNew.asmx.cs @@ -29004,6 +29004,7 @@ namespace TradeManageNew [WebMethod(EnableSession = true)] public APIReturnModel PlaceShopifyUsedSaleOrderCallback(string originJson) { + PagesNew.SaveLog(0, "Shopify二手商品下单", $"原始Json:{originJson}", 0); if (string.IsNullOrWhiteSpace(originJson)) { return new APIReturnModel @@ -29013,11 +29014,14 @@ namespace TradeManageNew Datas = null }; } - var originJsonData = JsonConvert.DeserializeObject(originJson); using (var db = new TradeUsedSale.Repositories.ErpDbContext()) { + var includeUsedSale = false; + var errorMessage = string.Empty; + + //Shopify二手订单 var newDtShopifyUsedSaleOrder = new TradeUsedSale.Repositories.Models.DT_ShopifyUsedSaleOrder { OrderId = originJsonData.Order.OrderId, @@ -29050,46 +29054,36 @@ namespace TradeManageNew IsPlaceOrderSuccess = false }; - var dtShopifyUsedSaleOrderId = db.InsertWithInt32Identity(newDtShopifyUsedSaleOrder); + //Shopify二手订单明细 + var newDtShopifyUsedSaleOrderItems = + new List(); - db.BeginTransaction(); - try { foreach (var item in originJsonData.Items) { //ERP二手商品信息 - var orderUsedSalePlatform = db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == item.ProductCode); + var orderUsedSalePlatform = + db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == item.ProductCode); + if (orderUsedSalePlatform is null) { - throw new Exception($"未获取到编码[{item.ProductCode}]的二手商品信息"); + PagesNew.SaveLog(0, "Shopify二手商品下单", $"未获取到编码[{item.ProductCode}]的二手商品信息", 0); + continue; } - + + includeUsedSale = true; + //Shopify商品映射 - var shopifyProductGoodsMap = db.DT_ShopifyProductGoodsMap.FirstOrDefault(x => x.SkuId == orderUsedSalePlatform.SkuId); + var shopifyProductGoodsMap = + db.DT_ShopifyProductGoodsMap.FirstOrDefault(x => + x.SkuId == orderUsedSalePlatform.SkuId); if (shopifyProductGoodsMap is null) { throw new Exception($"未获取到SKU[{orderUsedSalePlatform.SkuCode}]对应的Shopify产品信息"); } - //下单后修改二手商品信息 - var statement = db.DT_OrderUsedSalePlatform.Where(x => x.BarCode == item.ProductCode) - .Set(x => x.Status, TradeUsedSale.Enums.UsedSalePlatformStatus.PendingPickup); - if (item.ShippingMethod == "SP") - { - statement = statement.Set(x => x.ShippingMethod, - TradeUsedSale.Enums.ShippingMethod.SelfPickup); - } - - if (item.ShippingMethod == "DL") - { - statement = statement.Set(x => x.ShippingMethod, - TradeUsedSale.Enums.ShippingMethod.ExpressDelivery); - } - statement.Update(); - - // Shopify客户端 - // 删除产品变体 + // Shopify客户端 删除产品变体 var shopifyApiClient = new ShopifyAPIClient(); var productVariantRes = shopifyApiClient.DeleteProductVariantAsync(new Body3 { @@ -29101,19 +29095,14 @@ namespace TradeManageNew if (productVariantRes.Success != true) { - throw new Exception(productVariantRes.Message); + throw new Exception($"删除Shopify条码[{item.ProductCode}]变体失败,{productVariantRes.Message}"); } - db.DT_ShopifyUsedSaleOrder.Where(x => x.Id == dtShopifyUsedSaleOrderId) - .Set(x => x.IsPlaceOrderSuccess, true) - .Set(x => x.PlaceOrderMessage, "更新二手订单信息成功") - .Update(); - //添加Shopify订单明细 var newDtShopifyUsedSaleOrderItem = new TradeUsedSale.Repositories.Models.DT_ShopifyUsedSaleOrderItem { - DtShopifyUsedSaleOrderId = dtShopifyUsedSaleOrderId, + DtShopifyUsedSaleOrderId = 0, OriginSku = item.OriginSku, Sku = item.Sku, ProductCode = item.ProductCode, @@ -29126,22 +29115,82 @@ namespace TradeManageNew Image = item.Image, ShippingMethod = item.ShippingMethod }; - - db.InsertWithInt32Identity(newDtShopifyUsedSaleOrderItem); + + newDtShopifyUsedSaleOrderItems.Add(newDtShopifyUsedSaleOrderItem); } - - db.CommitTransaction(); } catch (Exception ex) { - db.RollbackTransaction(); + errorMessage = ex.Message; + } - db.DT_ShopifyUsedSaleOrder.Where(x => x.Id == dtShopifyUsedSaleOrderId) - .Set(x => x.PlaceOrderMessage, $"更新二手订单信息失败,原因:{ex.Message}") - .Update(); + if (includeUsedSale) + { + if (!string.IsNullOrEmpty(errorMessage)) + { + newDtShopifyUsedSaleOrder.IsPlaceOrderSuccess = false; + newDtShopifyUsedSaleOrder.PlaceOrderMessage = $"更新二手订单信息失败,原因:{errorMessage}"; + db.InsertWithInt32Identity(newDtShopifyUsedSaleOrder); + + PagesNew.SaveLog(0, "Shopify二手商品下单", "部分执行成功", 0); + } + else + { + newDtShopifyUsedSaleOrder.IsPlaceOrderSuccess = true; + newDtShopifyUsedSaleOrder.PlaceOrderMessage = "更新二手订单信息成功"; + var dtShopifyUsedSaleOrderId = db.InsertWithInt32Identity(newDtShopifyUsedSaleOrder); + + try + { + db.BeginTransaction(); + + foreach (var newDtShopifyUsedSaleOrderItem in newDtShopifyUsedSaleOrderItems) + { + newDtShopifyUsedSaleOrderItem.DtShopifyUsedSaleOrderId = dtShopifyUsedSaleOrderId; + + db.InsertWithInt32Identity(newDtShopifyUsedSaleOrderItem); + + //下单后修改二手商品信息 + var statement = db.DT_OrderUsedSalePlatform.Where(x => + x.BarCode == newDtShopifyUsedSaleOrderItem.ProductCode) + .Set(x => x.Status, TradeUsedSale.Enums.UsedSalePlatformStatus.PendingPickup); + if (newDtShopifyUsedSaleOrderItem.ShippingMethod == "SP") + { + statement = statement.Set(x => x.ShippingMethod, + TradeUsedSale.Enums.ShippingMethod.SelfPickup); + } + + if (newDtShopifyUsedSaleOrderItem.ShippingMethod == "DL") + { + statement = statement.Set(x => x.ShippingMethod, + TradeUsedSale.Enums.ShippingMethod.ExpressDelivery); + } + + statement.Update(); + } + + PagesNew.SaveLog(0, "Shopify二手商品下单", "执行成功", 0); + + db.CommitTransaction(); + } + catch (Exception ex) + { + db.RollbackTransaction(); + + db.DT_ShopifyUsedSaleOrder.Where(x => x.Id == dtShopifyUsedSaleOrderId) + .Set(x => x.PlaceOrderMessage, $"更新二手订单信息失败,原因:{ex.Message}") + .Update(); + + PagesNew.SaveLog(0, "Shopify二手商品下单", "部分执行成功", 0); + } + } + } + else + { + PagesNew.SaveLog(0, "Shopify二手商品下单", "该订单未包含任何上传的二手商品", 0); } } - + return new APIReturnModel { Code = 1, @@ -29153,6 +29202,7 @@ namespace TradeManageNew [WebMethod(EnableSession = true)] public APIReturnModel CancelShopifyUsedSaleOrderCallback(string originJson) { + PagesNew.SaveLog(0, "Shopify二手商品取消", $"原始Json:{originJson}", 0); if (string.IsNullOrWhiteSpace(originJson)) { return new APIReturnModel @@ -29167,154 +29217,168 @@ namespace TradeManageNew using (var db = new TradeUsedSale.Repositories.ErpDbContext()) { - var shopifyUsedSaleOrder = db.DT_ShopifyUsedSaleOrder.FirstOrDefault(x => x.OrderId == originJsonData.OrderId); + var shopifyUsedSaleOrder = + db.DT_ShopifyUsedSaleOrder.FirstOrDefault(x => x.OrderId == originJsonData.OrderId); if (shopifyUsedSaleOrder is null) { - PagesNew.SaveLog(0, "Shopify二手商品取消", $"未找到ShopifyOrderId为{originJsonData.OrderId}Shopify二手订单,原始Json为:{originJson}", 0); + PagesNew.SaveLog(0, "Shopify二手商品取消", $"跳过执行,未找到ShopifyOrderId为{originJsonData.OrderId}Shopify二手订单", 0); } - - try + else { - db.BeginTransaction(); - - db.DT_ShopifyUsedSaleOrder.Where(x => x.OrderId == originJsonData.OrderId) - .Set(x => x.IsCancelled, true) - .Set(x => x.CancelReason, originJsonData.CancelReason) - .Set(x => x.CancelDate, originJsonData.CancelDate.DateTime) - .Update(); - - var shopifyUsedSaleOrderItems = db.DT_ShopifyUsedSaleOrderItem - .Where(x => x.DtShopifyUsedSaleOrderId == shopifyUsedSaleOrder.Id) - .ToList(); - - foreach (var saleOrderItem in shopifyUsedSaleOrderItems) + try { - //ERP二手商品 - var orderUsedSalePlatform = db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == saleOrderItem.ProductCode); - if (orderUsedSalePlatform is null) - { - throw new Exception($"不存在打印条码为[{saleOrderItem.ProductCode}]的二手商品"); - } + db.BeginTransaction(); - #region 重新上传Shopify变体 + db.DT_ShopifyUsedSaleOrder.Where(x => x.OrderId == originJsonData.OrderId) + .Set(x => x.IsCancelled, true) + .Set(x => x.CancelReason, originJsonData.CancelReason) + .Set(x => x.CancelDate, originJsonData.CancelDate.DateTime) + .Update(); - //系统产品信息 - var product = db.HW_GoodsInfo.FirstOrDefault(x => x.GoodsId == orderUsedSalePlatform.ProductId); - if (product is null) - { - var message = $"系统中不存在编码为[{orderUsedSalePlatform.ProductCode}]的产品信息,无法推送至Shopify"; - throw new Exception(message); - } - - //毛重 - if (product.Weight is null || product.Weight <= 0) - { - var message = $"产品[{product.GoodsCode}]无毛重信息,无法推送至Shopify"; - throw new Exception(message); - } + var shopifyUsedSaleOrderItems = db.DT_ShopifyUsedSaleOrderItem + .Where(x => x.DtShopifyUsedSaleOrderId == shopifyUsedSaleOrder.Id) + .ToList(); - //建议售价 - if (product.JYPrice is null || product.JYPrice <= 0) + foreach (var saleOrderItem in shopifyUsedSaleOrderItems) { - var message = $"产品[{product.GoodsCode}]无建议售价,无法推送至Shopify"; - throw new Exception(message); - } - - //预估运费 - var postFee = db.HW_PostFee.FirstOrDefault(x => x.GoodsId == orderUsedSalePlatform.ProductId); - if (postFee is null) - { - throw new Exception( $"产品[{product.GoodsCode}]无预估运费,无法推送至Shopify"); - } - var fees = new List() - { - postFee.Fee1, - //postFee.Fee2, - postFee.Fee3, - postFee.Fee4, - postFee.Fee5, - //postFee.Fee6, - postFee.Fee7, - postFee.Fee8, - }.Where(x => x != null).ToList(); - var feeCost = fees.Any() ? fees.Min() : 0; + //ERP二手商品 + var orderUsedSalePlatform = + db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == saleOrderItem.ProductCode); + if (orderUsedSalePlatform is null) + { + throw new Exception($"不存在打印条码为[{saleOrderItem.ProductCode}]的二手商品"); + } - if (feeCost <= 0) - { - throw new Exception( $"产品[{product.GoodsCode}]预估运费小于0,无法推送至Shopify"); - } - - //Shopify商品映射 - var shopifyProductGoodsMap = db.DT_ShopifyProductGoodsMap.FirstOrDefault(x => x.SkuId == orderUsedSalePlatform.SkuId); - if (shopifyProductGoodsMap is null) - { - throw new Exception($"未获取到SKU[{orderUsedSalePlatform.SkuCode}]对应的Shopify产品信息"); - } - - //获取SKU的资料信息 - var shopifyProductProfile = - db.DT_ShopifyUsedSaleProduct.FirstOrDefault(x => x.Sku == orderUsedSalePlatform.SkuCode); - - //Shopify客户端 - var shopifyApiClient = new ShopifyAPIClient(); - - var imageUrls = JsonConvert.DeserializeObject>(orderUsedSalePlatform.ImageUrls); - //在Shopify创建产品变体信息 - var createShopifyVariantParameter = new AddVariantRequest - { - ProductBaseData = new ProductBaseData2 - { - ShoifyGoodsId = shopifyProductGoodsMap.ShopifyProductId, - SKU = shopifyProductProfile?.Sku ?? orderUsedSalePlatform.SkuCode, - Title = shopifyProductProfile?.Title ?? product.GoodsEnglisgName, - ImagePath = shopifyProductProfile?.ImagePath ?? product.FirstImgUrl, - ProductType = shopifyProductProfile?.Category, - Tags = shopifyProductProfile?.Tags, - Weight = product.Weight.Value, - JYPrice = product.JYPrice.Value, - ShippingFee = feeCost.Value - }, - Variants = new Variants - { - Return_quantity = 1, - ImgUrl = imageUrls.Count > 0 ? imageUrls[0] : null, - ImgUrl2 = imageUrls.Count > 1 ? imageUrls[1] : null, - ImgUrl3 = imageUrls.Count > 2 ? imageUrls[2] : null, - ImgUrl4 = imageUrls.Count > 3 ? imageUrls[3] : null, - ImgUrl5 = imageUrls.Count > 4 ? imageUrls[4] : null, - StoreName = orderUsedSalePlatform.WarehouseLocation == - TradeUsedSale.Enums.WarehouseLocation.East - ? "E" - : "W", - Code = orderUsedSalePlatform.BarCode, - }, - }; - - var productVariantRes = shopifyApiClient.AddProductVariantAsync(createShopifyVariantParameter).ConfigureAwait(false) - .GetAwaiter() - .GetResult(); + #region 重新上传Shopify变体 - if (productVariantRes.Success != true) - { - var message = $"产品[{product.GoodsCode}]推送Shopify变体失败,原因:{productVariantRes.Message}"; - throw new Exception(message); - } + //系统产品信息 + var product = + db.HW_GoodsInfo.FirstOrDefault(x => x.GoodsId == orderUsedSalePlatform.ProductId); + if (product is null) + { + var message = $"系统中不存在编码为[{orderUsedSalePlatform.ProductCode}]的产品信息,无法推送至Shopify"; + throw new Exception(message); + } - db.DT_OrderUsedSalePlatform.Where(x => x.Id == orderUsedSalePlatform.Id) - .Set(x => x.Status, TradeUsedSale.Enums.UsedSalePlatformStatus.Listed) - .Set(x => x.ShippingMethod, value: null) - .Update(); + //毛重 + if (product.Weight is null || product.Weight <= 0) + { + var message = $"产品[{product.GoodsCode}]无毛重信息,无法推送至Shopify"; + throw new Exception(message); + } - #endregion + //建议售价 + if (product.JYPrice is null || product.JYPrice <= 0) + { + var message = $"产品[{product.GoodsCode}]无建议售价,无法推送至Shopify"; + throw new Exception(message); + } + + //预估运费 + var postFee = + db.HW_PostFee.FirstOrDefault(x => x.GoodsId == orderUsedSalePlatform.ProductId); + if (postFee is null) + { + throw new Exception($"产品[{product.GoodsCode}]无预估运费,无法推送至Shopify"); + } + + var fees = new List() + { + postFee.Fee1, + //postFee.Fee2, + postFee.Fee3, + postFee.Fee4, + postFee.Fee5, + //postFee.Fee6, + postFee.Fee7, + postFee.Fee8, + }.Where(x => x != null).ToList(); + var feeCost = fees.Any() ? fees.Min() : 0; + + if (feeCost <= 0) + { + throw new Exception($"产品[{product.GoodsCode}]预估运费小于0,无法推送至Shopify"); + } + + //Shopify商品映射 + var shopifyProductGoodsMap = + db.DT_ShopifyProductGoodsMap.FirstOrDefault(x => + x.SkuId == orderUsedSalePlatform.SkuId); + if (shopifyProductGoodsMap is null) + { + throw new Exception($"未获取到SKU[{orderUsedSalePlatform.SkuCode}]对应的Shopify产品信息"); + } + + //获取SKU的资料信息 + var shopifyProductProfile = + db.DT_ShopifyUsedSaleProduct.FirstOrDefault(x => + x.Sku == orderUsedSalePlatform.SkuCode); + + //Shopify客户端 + var shopifyApiClient = new ShopifyAPIClient(); + + var imageUrls = + JsonConvert.DeserializeObject>(orderUsedSalePlatform.ImageUrls); + //在Shopify创建产品变体信息 + var createShopifyVariantParameter = new AddVariantRequest + { + ProductBaseData = new ProductBaseData2 + { + ShoifyGoodsId = shopifyProductGoodsMap.ShopifyProductId, + SKU = shopifyProductProfile?.Sku ?? orderUsedSalePlatform.SkuCode, + Title = shopifyProductProfile?.Title ?? product.GoodsEnglisgName, + ImagePath = shopifyProductProfile?.ImagePath ?? product.FirstImgUrl, + ProductType = shopifyProductProfile?.Category, + Tags = shopifyProductProfile?.Tags, + Weight = product.Weight.Value, + JYPrice = product.JYPrice.Value, + ShippingFee = feeCost.Value + }, + Variants = new Variants + { + Return_quantity = 1, + ImgUrl = imageUrls.Count > 0 ? imageUrls[0] : null, + ImgUrl2 = imageUrls.Count > 1 ? imageUrls[1] : null, + ImgUrl3 = imageUrls.Count > 2 ? imageUrls[2] : null, + ImgUrl4 = imageUrls.Count > 3 ? imageUrls[3] : null, + ImgUrl5 = imageUrls.Count > 4 ? imageUrls[4] : null, + StoreName = orderUsedSalePlatform.WarehouseLocation == + TradeUsedSale.Enums.WarehouseLocation.East + ? "E" + : "W", + Code = orderUsedSalePlatform.BarCode, + }, + }; + + var productVariantRes = shopifyApiClient + .AddProductVariantAsync(createShopifyVariantParameter).ConfigureAwait(false) + .GetAwaiter() + .GetResult(); + + if (productVariantRes.Success != true) + { + var message = $"产品[{product.GoodsCode}]推送Shopify变体失败,原因:{productVariantRes.Message}"; + throw new Exception(message); + } + + db.DT_OrderUsedSalePlatform.Where(x => x.Id == orderUsedSalePlatform.Id) + .Set(x => x.Status, TradeUsedSale.Enums.UsedSalePlatformStatus.Listed) + .Set(x => x.ShippingMethod, value: null) + .Update(); + + #endregion + } + + PagesNew.SaveLog(0, "Shopify二手商品取消", "执行成功", 0); + + db.CommitTransaction(); } - - db.CommitTransaction(); - } - catch (Exception ex) - { - db.RollbackTransaction(); + catch (Exception ex) + { + db.RollbackTransaction(); - PagesNew.SaveLog(0, "Shopify二手商品取消", $"执行失败,原始Json为:{originJson},原因:{ex.Message}", 0); + PagesNew.SaveLog(0, "Shopify二手商品取消", $"执行失败,{ex.Message}", 0); + } } }