From 472d0526319edd312f7e25bcc205c3ac62bd2ad6 Mon Sep 17 00:00:00 2001 From: chfei Date: Wed, 23 Sep 2026 18:41:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=BC=A0=E5=8F=96?= =?UTF-8?q?=E4=BB=B6=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Apis/VirtualLogisticsApi.cs | 24 +++-------- .../Controllers/LogisticsController.cs | 8 ++-- Store.SyncLogistics/Dtos/PickupRequest.cs | 17 ++++++++ ...cLogistics.cs => YhSyncLogisticsEntity.cs} | 7 ++++ Store.SyncLogistics/Models/PickupModels.cs | 3 ++ .../Services/VirtualLogisticsService.cs | 41 ++++++++++++++++++- test/WebServiceTest/GiftLogisticsTest.cs | 10 ++--- 7 files changed, 80 insertions(+), 30 deletions(-) create mode 100644 Store.SyncLogistics/Dtos/PickupRequest.cs rename Store.SyncLogistics/Entitys/{YhSyncLogistics.cs => YhSyncLogisticsEntity.cs} (81%) diff --git a/Store.SyncLogistics/Apis/VirtualLogisticsApi.cs b/Store.SyncLogistics/Apis/VirtualLogisticsApi.cs index 174270e..b7c8c8f 100644 --- a/Store.SyncLogistics/Apis/VirtualLogisticsApi.cs +++ b/Store.SyncLogistics/Apis/VirtualLogisticsApi.cs @@ -136,30 +136,18 @@ public class VirtualLogisticsApi : ISingletonDependency /// public Result> UploadPickup(List data) { - string postdata = $"username={UserName}&data={WebUtility.UrlEncode(Serialize(data))}"; return ServerRequest>(new HttpItem { URL = "/api/lipin/uploadPickup", - Postdata = postdata, + Postdata = JsonConvert.SerializeObject(new + { + data = data + }), Method = MethodType.Post }); } - /// - /// 使用蛇形命名序列化对象,忽略空值,用于拼接表单参数 - /// - private static string Serialize(object obj) - { - var settings = new JsonSerializerSettings - { - ContractResolver = new DefaultContractResolver - { - NamingStrategy = new SnakeCaseNamingStrategy() - }, - NullValueHandling = NullValueHandling.Ignore - }; - return JsonConvert.SerializeObject(obj, settings); - } + /// @@ -177,7 +165,7 @@ public class VirtualLogisticsApi : ISingletonDependency } item.Encoding = Encoding.UTF8; - //item.ProxyIp = "127.0.0.1:8080"; + item.ProxyIp = "127.0.0.1:8080"; long unix = DateHelper.GetCurrentUnixTimestampInSeconds(); diff --git a/Store.SyncLogistics/Controllers/LogisticsController.cs b/Store.SyncLogistics/Controllers/LogisticsController.cs index 3f3d324..3ad5178 100644 --- a/Store.SyncLogistics/Controllers/LogisticsController.cs +++ b/Store.SyncLogistics/Controllers/LogisticsController.cs @@ -119,14 +119,12 @@ public class LogisticsController : ApiControllerBase /// 上传取件码 /// [HttpPost] - public IHttpActionResult UploadPickup(List data) + public IHttpActionResult UploadPickup(PickupRequest request) { try { - var result = _logisticsService.UploadPickup(data); - return Ok(result.Success - ? ApiResult>.Success(result.Data, result.Msg) - : ApiResult>.Fail(result.Msg, ResultCode.BusinessError, result.Data)); + var result = _logisticsService.UploadPickup(request.UserName, request.OrderId, request.PickupCode); + return Ok(ApiResult.Success(result)); } catch (Exception ex) { diff --git a/Store.SyncLogistics/Dtos/PickupRequest.cs b/Store.SyncLogistics/Dtos/PickupRequest.cs new file mode 100644 index 0000000..18d4bc3 --- /dev/null +++ b/Store.SyncLogistics/Dtos/PickupRequest.cs @@ -0,0 +1,17 @@ +using Store.Framework.Dtos; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Store.SyncLogistics.Dtos; + +public class PickupRequest:SignRequestBase +{ + public string OrderId { get; set; } + /// + /// 取件码 + /// + public string PickupCode { get; set; } +} diff --git a/Store.SyncLogistics/Entitys/YhSyncLogistics.cs b/Store.SyncLogistics/Entitys/YhSyncLogisticsEntity.cs similarity index 81% rename from Store.SyncLogistics/Entitys/YhSyncLogistics.cs rename to Store.SyncLogistics/Entitys/YhSyncLogisticsEntity.cs index 517a365..3ab26df 100644 --- a/Store.SyncLogistics/Entitys/YhSyncLogistics.cs +++ b/Store.SyncLogistics/Entitys/YhSyncLogisticsEntity.cs @@ -38,4 +38,11 @@ public class YhSyncLogisticsEntity /// [Column(Name = "source_tracking_number")] public string SourceTrackingNumber { get; set; } + + + public string pickup_code { get; set; } + public bool? upload_pickup_status { get; set; } + public DateTime? upload_pickup_Time { get; set; } + [Column(Name = "remark")] + public string Remark { get; set; } } \ No newline at end of file diff --git a/Store.SyncLogistics/Models/PickupModels.cs b/Store.SyncLogistics/Models/PickupModels.cs index 469731a..dac13c2 100644 --- a/Store.SyncLogistics/Models/PickupModels.cs +++ b/Store.SyncLogistics/Models/PickupModels.cs @@ -12,16 +12,19 @@ public class PickupItem /// /// 上家快递单号 /// + [JsonProperty("bufa_sn")] public string BufaSn { get; set; } /// /// 取件码 /// + [JsonProperty("pickup_code")] public string PickupCode { get; set; } /// /// 驿站地址 /// + [JsonProperty("address")] public string Address { get; set; } } diff --git a/Store.SyncLogistics/Services/VirtualLogisticsService.cs b/Store.SyncLogistics/Services/VirtualLogisticsService.cs index a14e644..bccf593 100644 --- a/Store.SyncLogistics/Services/VirtualLogisticsService.cs +++ b/Store.SyncLogistics/Services/VirtualLogisticsService.cs @@ -181,9 +181,46 @@ public class VirtualLogisticsService : ITransientDependency /// /// 上传取件码 /// - public Result> UploadPickup(List data) + public bool UploadPickup(string userName, string orderId, string pickupCode) { - return _api.UploadPickup(data); + var user = _userService.GetUserByUserName(userName); + if (user == null) throw new Exception("错误的账号"); + var syncLogistics = _freeSql.Select() + .Where(a => a.OrderId == orderId) + .First(); + if (syncLogistics == null) throw new Exception("错误的订单号"); + + var ret = _api.UploadPickup(new List + { + new PickupItem + { + BufaSn = syncLogistics.SourceTrackingNumber, + PickupCode = pickupCode + } + }); + syncLogistics.pickup_code = pickupCode; + syncLogistics.upload_pickup_Time = DateTime.Now; + syncLogistics.upload_pickup_status = ret.Success; + if (ret.Success == false) + { + string msg = $"推送取件码失败:{ret.Msg}"; + syncLogistics.Remark = msg; + _logger.Error(msg); + throw new Exception("推送取件码失败"); + } + var affrows = _freeSql.Update() + .Set(a => a.pickup_code, syncLogistics.pickup_code) + .Set(a => a.upload_pickup_Time, syncLogistics.upload_pickup_Time) + .Set(a => a.upload_pickup_status, syncLogistics.upload_pickup_status) + .Set(a => a.Remark, syncLogistics.Remark) + .Where(a => a.Id == syncLogistics.Id) + .ExecuteAffrows(); + if (affrows != 1) + { + _logger.Error("取件码保存错误"); + throw new Exception("取件码保存错误"); + } + return true; } public YhSyncLogisticsEntity GetSyncLogistics(string orderId) diff --git a/test/WebServiceTest/GiftLogisticsTest.cs b/test/WebServiceTest/GiftLogisticsTest.cs index 741f72f..b40ca99 100644 --- a/test/WebServiceTest/GiftLogisticsTest.cs +++ b/test/WebServiceTest/GiftLogisticsTest.cs @@ -111,16 +111,16 @@ internal class GiftLogisticsTest { new PickupItem { - BufaSn = "SF1234567890", + BufaSn = "YT0709726946568", PickupCode = "1-2-3", Address = "菜鸟驿站" } }; - var ret = logisticsApi.UploadPickup(data); - Console.WriteLine($"{ret.Code} {ret.Msg}"); - if (ret.Data != null) + var logisticsService = _container.Resolve(); + var ret = logisticsService.UploadPickup("15222220006","260923-573109716621688","1-2-3"); + + if (ret) { - Console.WriteLine(string.Join(" ", ret.Data.Select(a => $"{a.BufaSn}:{a.Success}"))); } } }