master
wufan 2 months ago
parent da9b5baeda
commit 6590fb4d84

@ -28994,7 +28994,7 @@ namespace TradeManageNew
};
}
var originJsonData = ShopifyUsedSaleOrderDto.FromJson(originJson);
var originJsonData = JsonConvert.DeserializeObject<ShopifyUsedSaleOrderDto>(originJson);
using (var db = new TradeUsedSale.Repositories.ErpDbContext())
{
@ -29038,25 +29038,6 @@ namespace TradeManageNew
{
foreach (var item in originJsonData.Items)
{
var newDtShopifyUsedSaleOrderItem =
new TradeUsedSale.Repositories.Models.DT_ShopifyUsedSaleOrderItem
{
DtShopifyUsedSaleOrderId = dtShopifyUsedSaleOrderId,
OriginSku = item.OriginSku,
Sku = item.Sku,
ProductCode = item.ProductCode,
Quantity = item.Quantity,
Price = item.Price,
Title = item.Title,
VariantTitle = item.VariantTitle,
ProductId = item.ProductId,
VariantId = item.VariantId,
Image = item.Image,
ShippingMethod = item.ShippingMethod
};
db.InsertWithInt32Identity(newDtShopifyUsedSaleOrderItem);
//ERP二手商品信息
var orderUsedSalePlatform = db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == item.ProductCode);
if (orderUsedSalePlatform is null)
@ -29107,6 +29088,26 @@ namespace TradeManageNew
.Set(x => x.IsPlaceOrderSuccess, true)
.Set(x => x.PlaceOrderMessage, "更新二手订单信息成功")
.Update();
//添加Shopify订单明细
var newDtShopifyUsedSaleOrderItem =
new TradeUsedSale.Repositories.Models.DT_ShopifyUsedSaleOrderItem
{
DtShopifyUsedSaleOrderId = dtShopifyUsedSaleOrderId,
OriginSku = item.OriginSku,
Sku = item.Sku,
ProductCode = item.ProductCode,
Quantity = item.Quantity,
Price = item.Price,
Title = item.Title,
VariantTitle = item.VariantTitle,
ProductId = item.ProductId,
VariantId = item.VariantId,
Image = item.Image,
ShippingMethod = item.ShippingMethod
};
db.InsertWithInt32Identity(newDtShopifyUsedSaleOrderItem);
}
db.CommitTransaction();
@ -29129,6 +29130,182 @@ namespace TradeManageNew
};
}
[WebMethod(EnableSession = true)]
public APIReturnModel CancelShopifyUsedSaleOrderCallback(string originJson)
{
if (string.IsNullOrWhiteSpace(originJson))
{
return new APIReturnModel
{
Code = 0,
Message = "下单Json数据为空请检查",
Datas = null
};
}
var originJsonData = JsonConvert.DeserializeObject<CancelShopifyUsedSaleOrderDto>(originJson);
using (var db = new TradeUsedSale.Repositories.ErpDbContext())
{
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);
}
try
{
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)
{
//ERP二手商品
var orderUsedSalePlatform = db.DT_OrderUsedSalePlatform.FirstOrDefault(x => x.BarCode == saleOrderItem.ProductCode);
if (orderUsedSalePlatform is null)
{
throw new Exception($"不存在打印条码为[{saleOrderItem.ProductCode}]的二手商品");
}
#region 重新上传Shopify变体
//系统产品信息
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);
}
//建议售价
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
}
db.CommitTransaction();
}
catch (Exception ex)
{
db.RollbackTransaction();
PagesNew.SaveLog(0, "Shopify二手商品取消", $"执行失败原始Json为:{originJson},原因:{ex.Message}", 0);
}
}
return new APIReturnModel
{
Code = 1,
Message = "Success",
Datas = null
};
}
#endregion

@ -0,0 +1,16 @@
using System;
using Newtonsoft.Json;
namespace TradeManageNew.Models.ShopifyUsedSale
{
public partial class CancelShopifyUsedSaleOrderDto
{
[JsonProperty("orderId")] public string OrderId { get; set; }
[JsonProperty("orderNumber")] public string OrderNumber { get; set; }
[JsonProperty("cancelDate")] public DateTimeOffset CancelDate { get; set; }
[JsonProperty("cancelReason")] public string CancelReason { get; set; }
}
}

@ -1,8 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace TradeManageNew.Models.ShopifyUsedSale
{
@ -133,30 +131,4 @@ namespace TradeManageNew.Models.ShopifyUsedSale
[JsonProperty("tags")] public string Tags { get; set; }
}
public partial class ShopifyUsedSaleOrderDto
{
public static ShopifyUsedSaleOrderDto FromJson(string json) =>
JsonConvert.DeserializeObject<ShopifyUsedSaleOrderDto>(json,
TradeManageNew.Models.ShopifyUsedSale.Converter.Settings);
}
public static class Serialize
{
public static string ToJson(this ShopifyUsedSaleOrderDto self) =>
JsonConvert.SerializeObject(self, TradeManageNew.Models.ShopifyUsedSale.Converter.Settings);
}
internal static class Converter
{
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
DateParseHandling = DateParseHandling.None,
Converters =
{
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
},
};
}
}

@ -2920,6 +2920,7 @@
<Compile Include="Models\Shage\GetOrderUsedSalePlatformDto.cs" />
<Compile Include="Models\Shage\GetOrderUsedSalePlatformInput.cs" />
<Compile Include="Models\Shage\OrderUsedSalePlatformInput.cs" />
<Compile Include="Models\ShopifyUsedSale\CancelShopifyUsedSaleOrderDto.cs" />
<Compile Include="Models\ShopifyUsedSale\ShopifyUsedSaleOrderDto.cs" />
<Compile Include="OrderAPI.ashx.cs">
<DependentUpon>OrderAPI.ashx</DependentUpon>

@ -99,7 +99,7 @@ namespace TradeUsedSale.Repositories.Models
/// 原始Json
/// </summary>
public string OriginJson { get; set; }
/// <summary>
/// 是否同步下单信息成功
/// </summary>
@ -109,5 +109,20 @@ namespace TradeUsedSale.Repositories.Models
/// 下单同步信息
/// </summary>
public string PlaceOrderMessage { get; set; }
/// <summary>
/// 是否已取消
/// </summary>
public bool? IsCancelled { get; set; }
/// <summary>
/// 取消原因
/// </summary>
public string CancelReason { get; set; }
/// <summary>
/// 取消时间
/// </summary>
public DateTime? CancelDate { get; set; }
}
}
Loading…
Cancel
Save