From 52b9a461478b375daa40ba0d9cd1cce169f59748 Mon Sep 17 00:00:00 2001
From: hardstylewyl <827778732@qq.com>
Date: Mon, 17 Feb 2025 10:21:57 +0800
Subject: [PATCH] =?UTF-8?q?add-interface:=20=E6=9F=A5=E8=AF=A2=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E6=98=A0=E5=B0=84=E8=AE=A2=E5=8D=95=E7=B1=BB=E5=9E=8B?=
=?UTF-8?q?=E9=80=89=E9=A1=B9=E5=8D=A1=20/Track/PushConfig/GetConfigTags?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
add-interface: 查询订单类型名称字典
/Track/Order/GetOrderTypeDict
---
.../Dtos/TrackPush/TrackPushConfigTagDto.cs | 14 ++++++++++
.../Services/TrackOrders/TrackOrderService.cs | 9 +++++++
.../Services/TrackPush/TrackPushService.cs | 26 ++++++++++++++++++-
.../OrderAggregate/IOrderRepository.cs | 9 ++++++-
.../ITrackPushConfigRepository.cs | 1 +
.../Consts/GlobalConst.Redis.cs | 5 ++++
.../Dtos/TrackPush/GetConfigTagsInputVO.cs | 9 +++++++
.../Repositories/OrderRepository.cs | 23 ++++++++++++++++
.../Repositories/TrackPushConfigRepository.cs | 10 +++++++
9 files changed, 104 insertions(+), 2 deletions(-)
create mode 100644 src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigTagDto.cs
create mode 100644 src/SJZY.Track.Domain/Dtos/TrackPush/GetConfigTagsInputVO.cs
diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigTagDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigTagDto.cs
new file mode 100644
index 00000000..964a71bd
--- /dev/null
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigTagDto.cs
@@ -0,0 +1,14 @@
+namespace SJZY.Track.Application.Contract.Dtos.TrackPush;
+
+public class TrackPushConfigTagDto
+{
+ ///
+ /// 订单类型值
+ ///
+ public int Type { get; set; }
+
+ ///
+ /// 订单类型名称
+ ///
+ public string Name { get; set; }
+}
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index 71487d75..89041d1f 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -60,6 +60,15 @@ public class TrackOrderService : ApplicationService
#endregion
+ ///
+ /// 获取订单类型字典
+ ///
+ ///
+ [HttpGet("GetOrderTypeDict")]
+ public async Task> GetOrderTypeDict()
+ {
+ return await _orderRepository.GetTrackOrderTypeDict();
+ }
///
/// 更新订单状态
diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs
index 1c535b13..fcf66ef8 100644
--- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs
@@ -5,6 +5,7 @@ using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Application.Localization;
+using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Dtos.Common;
using SJZY.Track.Domain.Dtos.TrackPush;
@@ -22,15 +23,18 @@ public class TrackPushService : ApplicationService, ISingletonDependency
private readonly IStringLocalizer _stringLocalizer;
private readonly ITrackPushCacheService _trackPushCacheService;
private readonly ITrackPushConfigRepository _trackPushConfigRepository;
+ private readonly IOrderRepository _orderRepository;
public TrackPushService(
IStringLocalizer stringLocalizer,
ITrackPushConfigRepository trackPushConfigRepository,
- ITrackPushCacheService trackPushCacheService)
+ ITrackPushCacheService trackPushCacheService,
+ IOrderRepository orderRepository)
{
_stringLocalizer = stringLocalizer;
_trackPushConfigRepository = trackPushConfigRepository;
_trackPushCacheService = trackPushCacheService;
+ _orderRepository = orderRepository;
}
///
@@ -44,6 +48,26 @@ public class TrackPushService : ApplicationService, ISingletonDependency
return await _trackPushConfigRepository.GetPageAsync(input);
}
+ ///
+ /// 获取推送配置类型标签卡列表
+ ///
+ ///
+ [HttpPost("GetConfigTags")]
+ public async Task> GetConfigTags([FromBody] GetConfigTagsInputVO inputVo)
+ {
+ var orderTypes = await _trackPushConfigRepository.GetConfigTags(inputVo);
+ if (orderTypes.Count == 0) return new List();
+ var trackOrderTypes = await _orderRepository.GetTrackOrderTypeDict();
+
+ return orderTypes.Select(x => new TrackPushConfigTagDto
+ {
+ Type = x,
+ Name = trackOrderTypes[x.ToString()]
+ })
+ .OrderBy(x => x.Type)
+ .ToList();
+ }
+
///
/// 轨迹推送配置内容列表
///
diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
index 183b02dd..7548d8d8 100644
--- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
@@ -5,6 +5,13 @@ namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
public interface IOrderRepository : IBasicRepository
{
+ ///
+ /// 获取订单类型字典
+ /// key:OrderType value:TypeName
+ ///
+ ///
+ Task> GetTrackOrderTypeDict();
+
///
/// 获取分页的轨迹订单
///
@@ -78,7 +85,7 @@ public interface IOrderRepository : IBasicRepository
///
///
///
- Task> GetOrderTemplateAsync(int subSystemId,int orderType,List orderNos);
+ Task> GetOrderTemplateAsync(int subSystemId, int orderType, List orderNos);
#endregion
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
index 7784d57f..7ad686ec 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
@@ -39,4 +39,5 @@ public interface ITrackPushConfigRepository : IBasicRepository> QueryTrackPullMappingsAsync(QueryTrackPullMappingsInputVO input);
Task> GetTrackPushContentListAsync(int subSystemId, int customerId);
Task GetServiceCodeByCustomerIdAsync(int customerId);
+ Task> GetConfigTags(GetConfigTagsInputVO inputVo);
}
diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.Redis.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.Redis.cs
index 918762fe..718a09ee 100644
--- a/src/SJZY.Track.Domain/Consts/GlobalConst.Redis.cs
+++ b/src/SJZY.Track.Domain/Consts/GlobalConst.Redis.cs
@@ -71,4 +71,9 @@ public partial class GlobalConst
/// 轨迹推送预警redis key前缀
///
public const string TrackPushWaringKeyPrefix = "TrackPushWaring";
+
+ ///
+ /// 轨迹订单类型redis key前缀(hash类型)
+ ///
+ public const string TrackOrderTypeKey = "TrackOrderType";
}
diff --git a/src/SJZY.Track.Domain/Dtos/TrackPush/GetConfigTagsInputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPush/GetConfigTagsInputVO.cs
new file mode 100644
index 00000000..95c4745b
--- /dev/null
+++ b/src/SJZY.Track.Domain/Dtos/TrackPush/GetConfigTagsInputVO.cs
@@ -0,0 +1,9 @@
+namespace SJZY.Track.Domain.Dtos.TrackPush;
+
+public class GetConfigTagsInputVO
+{
+ ///
+ /// 轨迹推送配置id
+ ///
+ public int TrackPushConfigId { get; set; }
+}
diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
index 3e5bc514..946ebde2 100644
--- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
@@ -18,6 +18,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I
private static readonly Dictionary> _empty2 = new();
private static readonly TimeSpan _thirdPartyOrderNumberCacheTimeSpan = TimeSpan.FromMinutes(3);
private static readonly TimeSpan _mainDataEnumCacheTimeSpan = TimeSpan.FromMinutes(5);
+ private static readonly TimeSpan _orderTypeCacheTimeSpan = TimeSpan.FromMinutes(1);
private async Task> GetThirdPartyOrderNumberForCacheAsync(int[] orderIds)
{
@@ -99,6 +100,28 @@ public class OrderRepository : BasicRepository, IOrderRepository, I
return dict;
}
+ public async Task> GetTrackOrderTypeDict()
+ {
+ const string key = "TrackOrderType";
+ var orderTypes = await _memoryCache.GetOrCreateAsync(key, async (entry) =>
+ {
+ // 固定时间周期后强制更新
+ entry.AbsoluteExpirationRelativeToNow = _orderTypeCacheTimeSpan;
+ // 查询主数据
+ return await Context.Queryable()
+ .Where(x => x.Property == GlobalConst.MainDataKey_OrderType)
+ .ToDictionaryAsync(x => x.Enumkey, x => x.Disp);
+ });
+
+ // 更新redis缓存
+ await RedisHelper.Client.HMSetAsync(GlobalConst.TrackOrderTypeKey, orderTypes);
+
+ // redis内数据只更新不清理
+ var dict = RedisHelper.Client.HGetAll(GlobalConst.TrackOrderTypeKey);
+
+ return dict;
+ }
+
public async Task> GetTrackOrderPagedList(GetPageTrackOrderInputVO input)
{
//查询完去重
diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
index 98654c32..a23d744e 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
@@ -228,4 +228,14 @@ public class TrackPushConfigRepository : BasicRepository,
.Select(x => x.ApiServiceCode)
.FirstAsync();
}
+
+ public async Task> GetConfigTags(GetConfigTagsInputVO input)
+ {
+ var orderTypes = await Context.Queryable()
+ .Where(x => x.TrackPushConfigId == input.TrackPushConfigId)
+ .Select(x => x.OrderNoType)
+ .ToListAsync();
+
+ return new HashSet(orderTypes);
+ }
}