From f2c9356668676e8d7bfa99e7ab291d827939c1e0 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 7 Jan 2025 09:11:48 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E8=BD=A8=E8=BF=B9=E6=9F=A5=E8=AF=A2(Q?= =?UTF-8?q?ueryAsync,QueryAsyncV2)=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E8=AF=B7=E6=B1=82header=E4=B8=AD=E7=9A=84=E5=AD=90?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=A0=87=E8=AF=86(SubsystemId)=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E8=BD=A8=E8=BF=B9=E7=9A=84=E5=8F=AF=E8=A7=81=E5=BA=A6?= =?UTF-8?q?=EF=BC=8C=E5=86=85=E9=83=A8=E7=B3=BB=E7=BB=9F=E6=89=80=E6=9C=89?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E5=85=A8=E9=83=A8=E5=8F=AF=E8=A7=81=EF=BC=8C?= =?UTF-8?q?=E5=A4=96=E9=83=A8=E7=B3=BB=E7=BB=9F=E5=88=99=E8=A6=81=E6=B1=82?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=A4=96=E9=83=A8=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProvideServices/TrackService.Query.cs | 30 +++++++++++++++++-- .../Services/ProvideServices/TrackService.cs | 6 +++- src/SJZY.Track.Domain/Consts/GlobalConst.cs | 1 + .../Queries/IVSystemQueries.cs | 7 +++++ .../VEntities/VSystemEntity.cs | 2 +- .../Queries/VSystemQueries.cs | 8 +++++ 6 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/SJZY.Track.Domain/Queries/IVSystemQueries.cs create mode 100644 src/SJZY.Track.Repository/Queries/VSystemQueries.cs diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs index 1a56a04e..833a6e03 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs @@ -1,7 +1,9 @@ +using Microsoft.AspNetCore.Http; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.TrackTemplate; +using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.ProvideServices; @@ -12,6 +14,8 @@ public partial class TrackService { private readonly ITrackDetailsEsRepository _trackDetailsEsRepository; private readonly ITrackTemplateRepository _trackTemplateRepository; + private readonly IHttpContextAccessor _contextAccessor; + private readonly IVSystemQueries _vSystemQueries; /// /// 查询轨迹(时区补正) @@ -27,9 +31,12 @@ public partial class TrackService var details = await _trackDetailsEsRepository.GetListAsync(input.SubSystemId, input.OrderType, input.OrderNos); + //内部子系统不过滤外部轨迹 + var isFilterExternal = await HasFilterExternalTrack(); + // 是否对外 var trackCodes = details.Select(x => x.TrackCode) - .Where(x => x != GlobalConst.EmptyString) + .WhereIf(isFilterExternal, x => x != GlobalConst.EmptyString) .Distinct() .ToList(); @@ -109,9 +116,12 @@ public partial class TrackService var details = await _trackDetailsEsRepository.GetListAsync(input.SubSystemId, input.OrderType, input.OrderNos); + //内部子系统不过滤外部轨迹 + var isFilterExternal = await HasFilterExternalTrack(); + // 是否对外 var trackCodes = details.Select(x => x.TrackCode) - .Where(x => x != GlobalConst.EmptyString) + .WhereIf(isFilterExternal, x => x != GlobalConst.EmptyString) .Distinct() .ToList(); @@ -173,6 +183,22 @@ public partial class TrackService return new UnifyResultDto>(true, sortedList, "操作成功"); } + //内部系统展示所有轨迹,外部系统则要求过滤外部轨迹 + private async Task HasFilterExternalTrack() + { + var isFilter = true; + if (_contextAccessor.HttpContext!.Request.Headers.TryGetValue(GlobalConst.HTTP_HEADER_SUBSYSTEMID, out var subsystemIdStr)) + { + if (int.TryParse(subsystemIdStr, out var subsystemId)) + { + var systemEntity = await _vSystemQueries.GetFirstAsync(x => x.Id == subsystemId); + isFilter = systemEntity?.SystemProperty != 1; + } + } + + return isFilter; + } + private async Task> TracksOrdered(List list, OrderNosInfo orderNosInfo, SortMethod? sortMethod, string? trackTemplateCode = null) { diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index eca70b47..45656799 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -1,4 +1,5 @@ using DotNetCore.CAP; +using Microsoft.AspNetCore.Http; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Services.ProvideServices; @@ -7,6 +8,7 @@ using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Enums; +using SJZY.Track.Domain.Queries; using SJZY.UserCenter.HttpApi.Services; using SJZY.UserCenter.HttpApi.Services.User; using Volo.Abp.Http.Client.DynamicProxying; @@ -27,13 +29,15 @@ public partial class TrackService : ApplicationService, ITrackService public TrackService(IOrderRepository orderRepository, ICapPublisher capPublisher, ITrackDetailsEsRepository trackDetailsEsRepository, ITrackContentRepository trackContentRepository, - IHttpClientProxy requestCurrentUserService, ITrackTemplateRepository trackTemplateRepository) + IHttpClientProxy requestCurrentUserService, ITrackTemplateRepository trackTemplateRepository, IHttpContextAccessor contextAccessor, IVSystemQueries vSystemQueries) { _orderRepository = orderRepository; this._orderRepository = orderRepository; _capPublisher = capPublisher; _trackContentRepository = trackContentRepository; _requestCurrentUserService = requestCurrentUserService; + _vSystemQueries = vSystemQueries; + _contextAccessor = contextAccessor; _trackTemplateRepository = trackTemplateRepository; _trackDetailsEsRepository = trackDetailsEsRepository; } diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.cs index c6416b1d..f081cacc 100644 --- a/src/SJZY.Track.Domain/Consts/GlobalConst.cs +++ b/src/SJZY.Track.Domain/Consts/GlobalConst.cs @@ -4,6 +4,7 @@ public partial class GlobalConst { public const string MainDataKey_OrderType = "TrackOrderType"; public const string MainDataKey_TrackQuestionType = "TrackQuestionType"; + public const string HTTP_HEADER_SUBSYSTEMID = "Subsystemid"; public const string SystemUser = "系统"; public const string EmptyString = "--"; public const int ChunkSize = 100; diff --git a/src/SJZY.Track.Domain/Queries/IVSystemQueries.cs b/src/SJZY.Track.Domain/Queries/IVSystemQueries.cs new file mode 100644 index 00000000..0f1b201a --- /dev/null +++ b/src/SJZY.Track.Domain/Queries/IVSystemQueries.cs @@ -0,0 +1,7 @@ +using SJZY.Track.Domain.VEntities; + +namespace SJZY.Track.Domain.Queries; + +public interface IVSystemQueries : IBasicQuery +{ +} diff --git a/src/SJZY.Track.Domain/VEntities/VSystemEntity.cs b/src/SJZY.Track.Domain/VEntities/VSystemEntity.cs index 4639ca98..b5a84874 100644 --- a/src/SJZY.Track.Domain/VEntities/VSystemEntity.cs +++ b/src/SJZY.Track.Domain/VEntities/VSystemEntity.cs @@ -4,7 +4,7 @@ namespace SJZY.Track.Domain.VEntities; /// /// [SugarTable("v_system")] -public class VSystemEntity : IFullAuditedBasicEntitys +public class VSystemEntity : IFullAuditedBasicEntitys, IEntity { /// /// 子系统id diff --git a/src/SJZY.Track.Repository/Queries/VSystemQueries.cs b/src/SJZY.Track.Repository/Queries/VSystemQueries.cs new file mode 100644 index 00000000..872f9ea2 --- /dev/null +++ b/src/SJZY.Track.Repository/Queries/VSystemQueries.cs @@ -0,0 +1,8 @@ +using SJZY.Track.Domain.Queries; +using SJZY.Track.Domain.VEntities; + +namespace SJZY.Track.Repository.Queries; + +public class VSystemQueries : BasicQuery, IVSystemQueries, ITransientDependency +{ +} From 55f9fba62e36b1c9a47fd4042f4e40356c37ae4e Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 7 Jan 2025 10:49:27 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=E6=9F=A5=E8=AF=A2=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E6=8F=90=E4=BE=9B=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=BD=A8=E8=BF=B9=E6=A8=A1=E6=9D=BF=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/ProvideServices/GetTrackInput.cs | 5 ----- .../Services/ProvideServices/TrackService.Query.cs | 7 +++---- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs index e2249ae1..44df6107 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs @@ -17,11 +17,6 @@ public class GetTrackInput : OrderNosInfo /// 排序方式,默认按轨迹发生时间降序 /// public SortMethod? SortMethod { get; set; } - - /// - /// 轨迹模板代码 - /// - public string? TrackTemplateCode { get; set; } } /// diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs index 833a6e03..7e377a94 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs @@ -97,7 +97,7 @@ public partial class TrackService } // 排序 - var sortedList = await TracksOrdered(res, input, input.SortMethod, input.TrackTemplateCode); + var sortedList = await TracksOrdered(res, input, input.SortMethod); return new UnifyResultDto>(true, sortedList, "操作成功"); } @@ -200,7 +200,7 @@ public partial class TrackService } - private async Task> TracksOrdered(List list, OrderNosInfo orderNosInfo, SortMethod? sortMethod, string? trackTemplateCode = null) + private async Task> TracksOrdered(List list, OrderNosInfo orderNosInfo, SortMethod? sortMethod) { switch (sortMethod) { @@ -227,8 +227,7 @@ public partial class TrackService //查出订单模板 var templates = await _trackTemplateRepository.GetTrackTemplateListAsync(new GetTrackTemplateListInputVo { - SubSystemId = orderNosInfo.SubSystemId, - TemplateCode = trackTemplateCode + SubSystemId = orderNosInfo.SubSystemId }); if (templates.Count == 0) From 47ebc8b09b8044dcb70bad7f47b5ce5a14c5dea1 Mon Sep 17 00:00:00 2001 From: hardstylewyl <827778732@qq.com> Date: Tue, 7 Jan 2025 16:09:35 +0800 Subject: [PATCH 3/3] =?UTF-8?q?update:=E8=A1=A5=E5=85=85=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3=E9=80=9A?= =?UTF-8?q?=E5=87=BA=E9=94=99=E5=BC=82=E5=B8=B8=E4=BF=A1=E6=81=AF=EF=BC=88?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=8D=E5=8A=A1=E5=95=86code=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CAP/EventHandlers/TrackPushEventHandler.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 32987bb0..14d063bc 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -185,14 +185,15 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode))) { var asciiString = Base64Helper.SerializeObject(OptionType.新增.ToString()); + var serviceProviderCode = _pushConfigs.First().ServiceProviderCode; var r = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( _options.CurrentValue.PushTrackInterfaceCode, - _pushConfigs.First().ServiceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, + serviceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, attach: asciiString); if (r.Code != GlobalConst.SuccessCode) { - throw new BusinessException(message: $"requestId: {r.RequestId}; {r.Msg}"); + throw new BusinessException(message: $"requestId: {r.RequestId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); } } } @@ -235,14 +236,15 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe new Track2InterfaceRelaySubSystemContext(@event.SubSystemCode))) { var asciiString = Base64Helper.SerializeObject(OptionType.修改.ToString()); + var serviceProviderCode = _pushConfigs.First().ServiceProviderCode; var r = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( _options.CurrentValue.TrackUpdateInterfaceCode, - _pushConfigs.First().ServiceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, + serviceProviderCode, items.Cast().ToList(), GlobalConst.TrackPushCompletedSubscribe, attach: asciiString); if (r.Code != GlobalConst.SuccessCode) { - throw new BusinessException(message: $"requestId: {r.RequestId}; {r.Msg}"); + throw new BusinessException(message: $"requestId: {r.RequestId}; serviceProviderCode:{serviceProviderCode} Msg: {r.Msg}"); } } }