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] =?UTF-8?q?feat:=E8=BD=A8=E8=BF=B9=E6=9F=A5=E8=AF=A2(Query?=
=?UTF-8?q?Async,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
+{
+}