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); + } }