|
|
|
@ -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<ShopifyUsedSaleOrderDto>(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<TradeUsedSale.Repositories.Models.DT_ShopifyUsedSaleOrderItem>();
|
|
|
|
|
|
|
|
|
|
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<decimal?>()
|
|
|
|
|
{
|
|
|
|
|
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<List<string>>(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<decimal?>()
|
|
|
|
|
{
|
|
|
|
|
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<List<string>>(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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|