From 1b3a804b3e38174779508d98a9e25b5e91524f02 Mon Sep 17 00:00:00 2001 From: wufan Date: Fri, 17 Jan 2025 16:28:25 +0800 Subject: [PATCH] :memo: --- TradeManageNew/DD_OrderServiceNew.asmx.cs | 113 +++++++++++++++++- .../ShopifyUsedSale/OrderUsedSaleApplyDto.cs | 32 +++++ TradeManageNew/TradeManageNew.csproj | 1 + TradeUsedSale/Repositories/ErpDbContext.cs | 3 +- .../Models/DT_OrderUsedSaleApply.cs | 50 ++++++++ ...pplyLog.cs => DT_OrderUsedSaleApplyLog.cs} | 3 +- TradeUsedSale/TradeUsedSale.csproj | 3 +- 7 files changed, 196 insertions(+), 9 deletions(-) create mode 100644 TradeManageNew/Models/ShopifyUsedSale/OrderUsedSaleApplyDto.cs create mode 100644 TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApply.cs rename TradeUsedSale/Repositories/Models/{DT_TrackCodeApplyLog.cs => DT_OrderUsedSaleApplyLog.cs} (89%) diff --git a/TradeManageNew/DD_OrderServiceNew.asmx.cs b/TradeManageNew/DD_OrderServiceNew.asmx.cs index b87495b..1d82f76 100644 --- a/TradeManageNew/DD_OrderServiceNew.asmx.cs +++ b/TradeManageNew/DD_OrderServiceNew.asmx.cs @@ -29488,9 +29488,46 @@ namespace TradeManageNew Datas = null }; } - + + /// + /// 获取渠道运费信息 + /// + /// + /// [WebMethod(EnableSession = true)] public APIReturnModel GetOrderUsedSalePlatformLabel(int Id) + { + using (var db = new TradeUsedSale.Repositories.ErpDbContext()) + { + var orderUsedSaleApplyDtos = db.DT_OrderUsedSaleApply.Where(x => x.UsedSaleId == Id) + .Select(o => new OrderUsedSaleApplyDto + { + UsedSaleBarCode = o.UsedSaleBarCode, + ServiceType = o.ServiceType, + TrackingCode = o.TrackingCode, + TotalNetCharge = o.TotalNetCharge, + CreationTime = o.CreationTime + }) + .OrderBy(x => x.TotalNetCharge) + .ToList(); + + return new APIReturnModel + { + Code = 1, + Message = "Success", + Datas = JsonConvert.SerializeObject(orderUsedSaleApplyDtos) + }; + } + } + + /// + /// 重新获取渠道运费信息 + /// + /// + /// + /// + [WebMethod(EnableSession = true)] + public APIReturnModel RetrieveOrderUsedSalePlatformLabel(int Id) { // PagesNew.Login(base.Session); using (var db = new TradeUsedSale.Repositories.ErpDbContext()) @@ -29748,6 +29785,9 @@ namespace TradeManageNew #endregion + //运费信息 + var newOrderUsedSaleApplyList = new List(); + foreach (var serviceType in serviceTypes) { var apiRequestInfo = new StringBuilder(); @@ -29801,12 +29841,46 @@ namespace TradeManageNew .GetAwaiter() .GetResult(); + var fedexData = response.Output.TransactionShipments.First(); + + var base64Image = fedexData.PieceResponses + .FirstOrDefault() + ?.PackageDocuments + ?.FirstOrDefault() + ?.EncodedLabel; + + if (string.IsNullOrWhiteSpace(base64Image)) + { + throw new Exception("未返回面单文件"); + } + + //将 Base64 转为字节数组 + byte[] imageBytes = Convert.FromBase64String(base64Image); + //保存为 PNG 文件 fedexCache + string labelPath = AppDomain.CurrentDomain.BaseDirectory + "attached/fedexCache/"; + var imagePath = labelPath + fedexData.MasterTrackingNumber + ".png"; + File.WriteAllBytes(imagePath, imageBytes); + + //渠道运费信息 + var rateDetail = fedexData.CompletedShipmentDetail.ShipmentRating.ShipmentRateDetails.First(); + newOrderUsedSaleApplyList.Add(new TradeUsedSale.Repositories.Models.DT_OrderUsedSaleApply + { + UsedSaleId = orderUsedSalePlatform.Id, + UsedSaleBarCode = orderUsedSalePlatform.BarCode, + ServiceType = serviceType.ToString(), + TrackingCode = fedexData.MasterTrackingNumber, + TotalNetCharge = rateDetail.TotalNetCharge?? 0m, + OriginJson = JsonConvert.SerializeObject(response), + CreationTime = DateTime.Now, + IsDeleted = false + }); + //记录返回结果 apiRequestInfo.AppendLine($"返回结果:{JsonConvert.SerializeObject(response)}"); } catch (Exception ex) { - db.InsertWithInt32Identity(new TradeUsedSale.Repositories.Models.DT_TrackCodeApplyLog + db.InsertWithInt32Identity(new TradeUsedSale.Repositories.Models.DT_OrderUsedSaleApplyLog { UsedSaleBarCode = orderUsedSalePlatform.BarCode, ServiceType = serviceType.ToString(), @@ -29818,7 +29892,7 @@ namespace TradeManageNew var apiRequestStr = apiRequestInfo.ToString(); if (!string.IsNullOrWhiteSpace(apiRequestStr)) { - db.InsertWithInt32Identity(new TradeUsedSale.Repositories.Models.DT_TrackCodeApplyLog + db.InsertWithInt32Identity(new TradeUsedSale.Repositories.Models.DT_OrderUsedSaleApplyLog { UsedSaleBarCode = orderUsedSalePlatform.BarCode, ServiceType = serviceType.ToString(), @@ -29827,9 +29901,38 @@ namespace TradeManageNew }); } } - } - return null; + if (newOrderUsedSaleApplyList.Any()) + { + db.DT_OrderUsedSaleApply.Where(x => x.UsedSaleId == orderUsedSalePlatform.Id) + .Set(x => x.IsDeleted, true) + .Update(); + + foreach (var newOrderUsedSaleApply in newOrderUsedSaleApplyList) + { + db.InsertWithInt32Identity(newOrderUsedSaleApply); + } + } + + var orderUsedSaleApplyDtos = newOrderUsedSaleApplyList + .Select(o => new OrderUsedSaleApplyDto + { + UsedSaleBarCode = o.UsedSaleBarCode, + ServiceType = o.ServiceType, + TrackingCode = o.TrackingCode, + TotalNetCharge = o.TotalNetCharge, + CreationTime = o.CreationTime + }) + .OrderBy(x => x.TotalNetCharge) + .ToList(); + + return new APIReturnModel + { + Code = 1, + Message = "Success", + Datas = JsonConvert.SerializeObject(orderUsedSaleApplyDtos) + }; + } } static string[] SplitAddress(string address, int maxLength) diff --git a/TradeManageNew/Models/ShopifyUsedSale/OrderUsedSaleApplyDto.cs b/TradeManageNew/Models/ShopifyUsedSale/OrderUsedSaleApplyDto.cs new file mode 100644 index 0000000..bd7a5d1 --- /dev/null +++ b/TradeManageNew/Models/ShopifyUsedSale/OrderUsedSaleApplyDto.cs @@ -0,0 +1,32 @@ +using System; + +namespace TradeManageNew.Models.ShopifyUsedSale +{ + public class OrderUsedSaleApplyDto + { + /// + /// 二手售卖商品打印条码 + /// + public string UsedSaleBarCode { get; set; } + + /// + /// 服务类型 + /// + public string ServiceType { get; set; } + + /// + /// 跟踪号 + /// + public string TrackingCode { get; set; } + + /// + /// 运费 + /// + public decimal TotalNetCharge { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreationTime { get; set; } + } +} \ No newline at end of file diff --git a/TradeManageNew/TradeManageNew.csproj b/TradeManageNew/TradeManageNew.csproj index 9de2119..43c114b 100644 --- a/TradeManageNew/TradeManageNew.csproj +++ b/TradeManageNew/TradeManageNew.csproj @@ -2925,6 +2925,7 @@ + diff --git a/TradeUsedSale/Repositories/ErpDbContext.cs b/TradeUsedSale/Repositories/ErpDbContext.cs index c1274ad..ee4dbd7 100644 --- a/TradeUsedSale/Repositories/ErpDbContext.cs +++ b/TradeUsedSale/Repositories/ErpDbContext.cs @@ -32,6 +32,7 @@ namespace TradeUsedSale.Repositories public ITable HW_PostFee => this.GetTable(); public ITable DT_ShopifyUsedSaleOrder => this.GetTable(); public ITable DT_ShopifyUsedSaleOrderItem => this.GetTable(); - public ITable DT_TrackCodeApplyLog => this.GetTable(); + public ITable DT_OrderUsedSaleApplyLog => this.GetTable(); + public ITable DT_OrderUsedSaleApply => this.GetTable(); } } diff --git a/TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApply.cs b/TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApply.cs new file mode 100644 index 0000000..469dd2f --- /dev/null +++ b/TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApply.cs @@ -0,0 +1,50 @@ +using System; +using LinqToDB.Mapping; + +namespace TradeUsedSale.Repositories.Models +{ + public class DT_OrderUsedSaleApply + { + [PrimaryKey, Identity] public int Id { get; set; } + + /// + /// 二手售卖商品Id + /// + public int UsedSaleId { get; set; } + + /// + /// 二手售卖商品打印条码 + /// + public string UsedSaleBarCode { get; set; } + + /// + /// 服务类型 + /// + public string ServiceType { get; set; } + + /// + /// 跟踪号 + /// + public string TrackingCode { get; set; } + + /// + /// 运费 + /// + public decimal TotalNetCharge { get; set; } + + /// + /// 原始Json + /// + public string OriginJson { get; set; } + + /// + /// 创建时间 + /// + public DateTime CreationTime { get; set; } + + /// + /// 是否已删除 + /// + public bool IsDeleted { get; set; } + } +} \ No newline at end of file diff --git a/TradeUsedSale/Repositories/Models/DT_TrackCodeApplyLog.cs b/TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApplyLog.cs similarity index 89% rename from TradeUsedSale/Repositories/Models/DT_TrackCodeApplyLog.cs rename to TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApplyLog.cs index 9498fb1..fdb8358 100644 --- a/TradeUsedSale/Repositories/Models/DT_TrackCodeApplyLog.cs +++ b/TradeUsedSale/Repositories/Models/DT_OrderUsedSaleApplyLog.cs @@ -3,10 +3,9 @@ using LinqToDB.Mapping; namespace TradeUsedSale.Repositories.Models { - public class DT_TrackCodeApplyLog + public class DT_OrderUsedSaleApplyLog { [PrimaryKey, Identity] public int Id { get; set; } - public string UsedSaleBarCode { get; set; } public string ServiceType { get; set; } public string Remark { get; set; } diff --git a/TradeUsedSale/TradeUsedSale.csproj b/TradeUsedSale/TradeUsedSale.csproj index 6108269..3c4a731 100644 --- a/TradeUsedSale/TradeUsedSale.csproj +++ b/TradeUsedSale/TradeUsedSale.csproj @@ -54,13 +54,14 @@ + - +