From 27fcd4192ae39c190e971a76b866aeadbbec409a Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Tue, 2 Dec 2025 17:15:52 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=AE=8C=E6=88=902025-12-1?= =?UTF-8?q?=E6=99=9A=E4=B8=8A=E8=AE=A8=E8=AE=BA=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/TrackPushEventHandler.cs | 12 ++++---- .../TrackPull/EditTrackPullPriorityInput.cs | 5 ++++ .../Hangfire/WarningTaskService.cs | 6 ++-- .../Services/TimerTaskss/TrackPullTask.cs | 5 ++++ .../Services/TrackPull/TrackPullService.cs | 28 ++++++++++++++++--- .../InterfaceForwardService.cs | 14 +++++----- .../InterfaceRelayUnifyResultDto.cs | 6 ++-- .../TrackPullPriorityEntity.cs | 6 ++++ src/TrackCenter.Domain/Consts/GlobalConst.cs | 2 ++ .../GetTrackPullPriorityDetailOutputVO.cs | 15 ++++++++++ .../GetTrackPullPriorityPageOutputVO.cs | 15 ++++++++++ .../Dtos/TrackPull/TrackPullConfigVo.cs | 5 ++++ .../Enums/TrackOrderNoType.cs | 8 ++++++ .../Repositories/TrackPullConfigRepository.cs | 2 ++ 14 files changed, 106 insertions(+), 23 deletions(-) create mode 100644 src/TrackCenter.Domain/Enums/TrackOrderNoType.cs diff --git a/src/TrackCenter.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/TrackCenter.Application/CAP/EventHandlers/TrackPushEventHandler.cs index c7a15ece..65245152 100644 --- a/src/TrackCenter.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/TrackCenter.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -136,14 +136,14 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe serviceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, - attach: asciiString); + other: asciiString); if (r.Code != GlobalConst.SuccessCode) { - TrackPushFailedPublicTopic($"轨迹中台调用接口通失败,RequestId: {r.RequestId}; Msg: {r.Msg}", @event, r.RequestId, + TrackPushFailedPublicTopic($"轨迹中台调用接口通失败,RequestId: {r.LogId}; Msg: {r.Msg}", @event, r.LogId, items.Cast().ToList()); throw new BusinessException( - message: $"requestId: {r.RequestId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); + message: $"requestId: {r.LogId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); } } } @@ -364,14 +364,14 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe serviceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, - attach: asciiString); + other: asciiString); if (r.Code != GlobalConst.SuccessCode) { - TrackPushFailedPublicTopic($"轨迹中台调用接口通失败,RequestId: {r.RequestId}; Msg: {r.Msg}", @event, r.RequestId, + TrackPushFailedPublicTopic($"轨迹中台调用接口通失败,RequestId: {r.LogId}; Msg: {r.Msg}", @event, r.LogId, items.Cast().ToList()); throw new BusinessException( - message: $"requestId: {r.RequestId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); + message: $"requestId: {r.LogId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); } } } diff --git a/src/TrackCenter.Application/Dtos/TrackPull/EditTrackPullPriorityInput.cs b/src/TrackCenter.Application/Dtos/TrackPull/EditTrackPullPriorityInput.cs index 0765744f..cba2a9bf 100644 --- a/src/TrackCenter.Application/Dtos/TrackPull/EditTrackPullPriorityInput.cs +++ b/src/TrackCenter.Application/Dtos/TrackPull/EditTrackPullPriorityInput.cs @@ -26,6 +26,11 @@ public class EditTrackPullPriorityInput /// public TrackOrderType OrderType { get; set; } + /// + /// 订单号类型 + /// + public TrackOrderNoType OrderNoType { get; set; } + /// /// 优先级 /// diff --git a/src/TrackCenter.Application/Hangfire/WarningTaskService.cs b/src/TrackCenter.Application/Hangfire/WarningTaskService.cs index 58b6b781..d096bea5 100644 --- a/src/TrackCenter.Application/Hangfire/WarningTaskService.cs +++ b/src/TrackCenter.Application/Hangfire/WarningTaskService.cs @@ -86,13 +86,13 @@ public class WarningTaskService( upStreamCode: upStreamCode, serviceProviderCode: task.ServiceProviderCode, data: items, - resSubscribeName: GlobalConst.TrackPushCompletedSubscribe, - attach: Base64Helper.SerializeObject(task.OptionType)); + followName: GlobalConst.TrackPushCompletedSubscribe, + other: Base64Helper.SerializeObject(task.OptionType)); if (r.Code != GlobalConst.SuccessCode) { var msg = $"接口通调用失败:BatchForwardThenPushToQueueAsync" + - $"RequestId: {r.RequestId};AppCode:{task.AppCode};" + + $"RequestId: {r.LogId};AppCode:{task.AppCode};" + $" serviceProviderCode:{task.ServiceProviderCode} Msg: {r.Msg}"; // 处理调用接口通失败,直接处于完结状态 diff --git a/src/TrackCenter.Application/Services/TimerTaskss/TrackPullTask.cs b/src/TrackCenter.Application/Services/TimerTaskss/TrackPullTask.cs index 34bd76e3..250ca2b5 100644 --- a/src/TrackCenter.Application/Services/TimerTaskss/TrackPullTask.cs +++ b/src/TrackCenter.Application/Services/TimerTaskss/TrackPullTask.cs @@ -36,6 +36,11 @@ public class TrackPullTask : ApplicationServiceBase, ISingletonDependency using var serviceScope = _serviceScopeFactory.CreateScope(); var trackPullConfigRepository = serviceScope.ServiceProvider.GetRequiredService(); + // var configs = await trackPullConfigRepository.AsQueryable() + // .LeftJoin((a, b) => a.Id == b.TrackPullConfigId) + // .Where() + + var configs = await trackPullConfigRepository.GetListAsync(x => true, x => new TrackPullConfigVo { // todo:去读priority表,按照客户、订单类型、优先级拉 diff --git a/src/TrackCenter.Application/Services/TrackPull/TrackPullService.cs b/src/TrackCenter.Application/Services/TrackPull/TrackPullService.cs index 0757e49a..a195f3cd 100644 --- a/src/TrackCenter.Application/Services/TrackPull/TrackPullService.cs +++ b/src/TrackCenter.Application/Services/TrackPull/TrackPullService.cs @@ -121,9 +121,24 @@ public class TrackPullService( trackPullEntity.TrackTimeZoneName = paramsConfig.TrackTimeZoneName; } - var id = await trackPullConfigRepository.InsertReturnIdentityAsync(trackPullEntity); + using (var ts = TransacationHelper.GetReadCommitted()) + { + var id = await trackPullConfigRepository.InsertReturnIdentityAsync(trackPullEntity); - await trackPullCacheService.SetPullConfigAsync(id); + // 新增拉取配置的时候默认加一条所有客户的拉取优先级,兜底,该记录无法被删除 + await trackPullConfigRepository.InsertPriorityAsync(new TrackPullPriorityEntity + { + TrackPullConfigId = id, + Customer = GlobalConst.All, + OrderType = TrackOrderType.小包, + OrderNoType = TrackOrderNoType.跟踪单号, + Priority = 999, + PullInterval = 12 * 60 // 12小时 + }); + await trackPullCacheService.SetPullConfigAsync(id); + + ts.Complete(); + } } break; @@ -166,6 +181,8 @@ public class TrackPullService( await trackPullConfigRepository.SoftDeleteContentAsync(x => x.TrackPullConfigId == input.Id); + await trackPullConfigRepository.SoftDeletePriorityAsync(x => x.TrackPullConfigId == input.Id); + await trackPullCacheService.SetPullConfigAsync(input.Id!.Value); ts.Complete(); } @@ -307,7 +324,8 @@ public class TrackPullService( Expression> isPriorityAnyExp = x => x.TrackPullConfigId == input.TrackPullConfigId && x.Customer == input.Customer && - x.OrderType == input.OrderType; + x.OrderType == input.OrderType && + x.OrderNoType == input.OrderNoType; if (input.Options == OptionTypeNoNull.修改) { @@ -346,9 +364,11 @@ public class TrackPullService( case OptionTypeNoNull.删除: { - _ = await trackPullConfigRepository.GetPriorityByIdAsync(input.Id!.Value) ?? + var priority = await trackPullConfigRepository.GetPriorityByIdAsync(input.Id!.Value) ?? throw new BusinessException(message: "找不到数据"); + if (priority.Customer == GlobalConst.All) throw new BusinessException(message: "兜底配置禁止被删除"); + await trackPullConfigRepository.SoftDeletePriorityAsync(x => x.Id == input.Id); break; diff --git a/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceForwardService.cs b/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceForwardService.cs index d60f2728..19fb57af 100644 --- a/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceForwardService.cs +++ b/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceForwardService.cs @@ -20,9 +20,9 @@ public class InterfaceForwardService : ITransientDependency string upStreamCode, string serviceProviderCode, List data, - string resSubscribeName, - string? attach = null, - bool isReturnMessage = false) + string followName, + string? other = null, + bool sourceData = false) { var client = _httpClientFactory.CreateClient("itfx"); @@ -46,11 +46,11 @@ public class InterfaceForwardService : ITransientDependency content.Headers.Add(nameof(InterfaceForwardOptions.AppKey), key); content.Headers.Add(nameof(InterfaceForwardOptions.AppSecret), secret); - content.Headers.Add(nameof(resSubscribeName), resSubscribeName); - content.Headers.Add(nameof(attach), attach); - content.Headers.Add(nameof(isReturnMessage), isReturnMessage.ToString()); + content.Headers.Add(nameof(followName), followName); + content.Headers.Add(nameof(other), other); + content.Headers.Add(nameof(sourceData), sourceData.ToString()); - using var response = await client.PostAsync($"InterfaceForward/BatchForwardThenPushToQueue?upStreamCode={upStreamCode}&serviceProvidercode={serviceProviderCode}", content); + using var response = await client.PostAsync($"Itfx/ForwardWithSubscribe?standardCode={upStreamCode}&supplierCode={serviceProviderCode}", content); var res = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) diff --git a/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceRelayUnifyResultDto.cs b/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceRelayUnifyResultDto.cs index af29abb0..d7641760 100644 --- a/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceRelayUnifyResultDto.cs +++ b/src/TrackCenter.Application/Track2InterfaceRelay/InterfaceRelayUnifyResultDto.cs @@ -22,15 +22,15 @@ public class InterfaceRelayUnifyResultDto /// /// 请求Id /// - public Guid RequestId { get; set; } + public Guid LogId { get; set; } /// /// 原报文 /// - public string? OriginalMessage { get; set; } + public string? SourceData { get; set; } /// /// 附加数据 /// - public string? Attach { get; set; } + public string? Other { get; set; } } diff --git a/src/TrackCenter.Domain/Aggregates/TrackPullAggregate/TrackPullPriorityEntity.cs b/src/TrackCenter.Domain/Aggregates/TrackPullAggregate/TrackPullPriorityEntity.cs index 55589ef2..2a386feb 100644 --- a/src/TrackCenter.Domain/Aggregates/TrackPullAggregate/TrackPullPriorityEntity.cs +++ b/src/TrackCenter.Domain/Aggregates/TrackPullAggregate/TrackPullPriorityEntity.cs @@ -26,6 +26,12 @@ public class TrackPullPriorityEntity: FullAuditedEntity [SugarColumn(ColumnName = "OrderType")] public TrackOrderType OrderType { get; set; } + /// + /// 订单号类型 + /// + [SugarColumn(ColumnName = "OrderNoType")] + public TrackOrderNoType OrderNoType { get; set; } + /// /// 优先级 /// diff --git a/src/TrackCenter.Domain/Consts/GlobalConst.cs b/src/TrackCenter.Domain/Consts/GlobalConst.cs index 19fa6d53..c9f3e6ae 100644 --- a/src/TrackCenter.Domain/Consts/GlobalConst.cs +++ b/src/TrackCenter.Domain/Consts/GlobalConst.cs @@ -19,4 +19,6 @@ public partial class GlobalConst public static readonly DateTime MinDateTime = new DateTime(1900, 1, 1, 0, 0, 0); public static readonly DateTime MaxDateTime = new DateTime(2999, 1, 1, 0, 0, 0); + + public const string All = "*"; } diff --git a/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityDetailOutputVO.cs b/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityDetailOutputVO.cs index 053759fb..bbddfbca 100644 --- a/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityDetailOutputVO.cs +++ b/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityDetailOutputVO.cs @@ -21,6 +21,21 @@ public class GetTrackPullPriorityDetailOutputVO /// public TrackOrderType OrderType { get; set; } + /// + /// 订单类型 + /// + public string OrderTypeName => OrderType.ToString(); + + /// + /// 订单号类型 + /// + public TrackOrderNoType OrderNoType { get; set; } + + /// + /// 订单号类型 + /// + public string OrderNoTypeName => OrderNoType.ToString(); + /// /// 优先级 /// diff --git a/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityPageOutputVO.cs b/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityPageOutputVO.cs index 7616fcd8..e88a2f38 100644 --- a/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityPageOutputVO.cs +++ b/src/TrackCenter.Domain/Dtos/TrackPull/GetTrackPullPriorityPageOutputVO.cs @@ -16,6 +16,21 @@ public class GetTrackPullPriorityPageOutputVO /// public TrackOrderType OrderType { get; set; } + /// + /// 订单类型 + /// + public string OrderTypeName => OrderType.ToString(); + + /// + /// 订单号类型 + /// + public TrackOrderNoType OrderNoType { get; set; } + + /// + /// 订单号类型 + /// + public string OrderNoTypeName => OrderNoType.ToString(); + /// /// 优先级 /// diff --git a/src/TrackCenter.Domain/Dtos/TrackPull/TrackPullConfigVo.cs b/src/TrackCenter.Domain/Dtos/TrackPull/TrackPullConfigVo.cs index afa359ee..aba078ca 100644 --- a/src/TrackCenter.Domain/Dtos/TrackPull/TrackPullConfigVo.cs +++ b/src/TrackCenter.Domain/Dtos/TrackPull/TrackPullConfigVo.cs @@ -16,4 +16,9 @@ public class TrackPullConfigVo /// 应用 /// public string AppKey { get; set; } + + /// + /// 客户 + /// + public string Customer { get; set; } } diff --git a/src/TrackCenter.Domain/Enums/TrackOrderNoType.cs b/src/TrackCenter.Domain/Enums/TrackOrderNoType.cs new file mode 100644 index 00000000..60bc99b5 --- /dev/null +++ b/src/TrackCenter.Domain/Enums/TrackOrderNoType.cs @@ -0,0 +1,8 @@ +namespace TrackCenter.Domain.Enums; + +public enum TrackOrderNoType +{ + 客户单号 = 1, + 跟踪单号 = 2, + 其他单号 = 4 +} diff --git a/src/TrackCenter.Repository/Repositories/TrackPullConfigRepository.cs b/src/TrackCenter.Repository/Repositories/TrackPullConfigRepository.cs index 47a1cf6c..20304d93 100644 --- a/src/TrackCenter.Repository/Repositories/TrackPullConfigRepository.cs +++ b/src/TrackCenter.Repository/Repositories/TrackPullConfigRepository.cs @@ -149,6 +149,7 @@ public class TrackPullConfigRepository : BasicRepository, Id = x.Id, Customer = x.Customer, OrderType = x.OrderType, + OrderNoType = x.OrderNoType, Priority = x.Priority, PullInterval = x.PullInterval, CreateTime = x.CreateTime, @@ -169,6 +170,7 @@ public class TrackPullConfigRepository : BasicRepository, TrackPullConfigId = x.TrackPullConfigId, Customer = x.Customer, OrderType = x.OrderType, + OrderNoType = x.OrderNoType, Priority = x.Priority, PullInterval = x.PullInterval })