From 676cdad78c1d95c15ad6b2232c3dab8f8376fe2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Wed, 27 Mar 2024 16:50:40 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix=20=E6=89=8B=E5=8A=A8=E6=9B=B4=E6=96=B0b?= =?UTF-8?q?ug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/TrackPull/TrackRefreshAttach.cs | 8 ++++---- .../Services/ProvideServices/TrackPullService.cs | 14 +++++++++----- .../Dtos/Order/OrderWithServiceProviderVO.cs | 5 +++++ .../Queries/ProvideQueries.cs | 2 ++ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackRefreshAttach.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackRefreshAttach.cs index ae47f35a..a527dd47 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackRefreshAttach.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPull/TrackRefreshAttach.cs @@ -2,10 +2,10 @@ public class TrackRefreshAttach { - public TrackRefreshAttach(int serviceProviderId, string serviceProviderCode, int subSystemId, int orderType) + public TrackRefreshAttach(int serviceProviderId, string serviceProviderName, int subSystemId, int orderType) { ServiceProviderId = serviceProviderId; - ServiceProviderCode = serviceProviderCode; + ServiceProviderName = serviceProviderName; SubSystemId = subSystemId; OrderType = orderType; } @@ -16,9 +16,9 @@ public class TrackRefreshAttach public int ServiceProviderId { get; set; } /// - /// 服务商code + /// 服务商name /// - public string ServiceProviderCode { get; set; } + public string ServiceProviderName { get; set; } /// /// 订单类型(主数据枚举TrackOrderType) diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs index f5856f91..71245edf 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs @@ -51,18 +51,21 @@ public class TrackPullService : ApplicationService throw new BusinessException(message: "一个能更新的都没有"); } - foreach (var group in orders.GroupBy(x => - new TrackRefreshAttach(x.ServiceProviderId, x.ServiceProviderCode, x.SubSystemId, x.OrderType))) + + foreach (var group in orders.GroupBy(x => new + { x.ServiceProviderId, x.ServiceProviderName, x.SubSystemId, x.OrderType })) { var data = group.Select(x => new { x.OrderNo }).ToList(); + var serviceProviderCode = group.FirstOrDefault()!.ServiceProviderCode; // 批量获取轨迹 await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( - "A012", group.Key.ServiceProviderCode, data, - GlobalConst.TrackRefreshSubscribe, JsonConvert.SerializeObject(group.Key)); + "A012", serviceProviderCode, data, GlobalConst.TrackRefreshSubscribe, + JsonConvert.SerializeObject(new TrackRefreshAttach(group.Key.ServiceProviderId, + group.Key.ServiceProviderName, group.Key.SubSystemId, group.Key.OrderType))); } return true; @@ -87,6 +90,7 @@ public class TrackPullService : ApplicationService var orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId); var serviceProviderCode = orders.FirstOrDefault()?.ServiceProviderCode; + var serviceProviderName = orders.FirstOrDefault()?.ServiceProviderName; foreach (var group in orders.GroupBy(x => new { x.SubSystemId, x.OrderType })) @@ -100,7 +104,7 @@ public class TrackPullService : ApplicationService await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( InterfaceRelayConst.GetTrackInterfaceCode, serviceProviderCode, data, GlobalConst.TrackRefreshSubscribe, - JsonConvert.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, serviceProviderCode!, + JsonConvert.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, serviceProviderName!, group.Key.SubSystemId, group.Key.OrderType))); } diff --git a/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs b/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs index df193e03..a5c9ad32 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/OrderWithServiceProviderVO.cs @@ -16,6 +16,11 @@ public class OrderWithServiceProviderVO /// public string ServiceProviderCode { get; set; } = null!; + /// + /// 服务商name + /// + public string ServiceProviderName { get; set; } = null!; + /// /// 子系统id /// diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs index 5bf07b06..483cd181 100644 --- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs +++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs @@ -120,6 +120,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, OrderType = a.OrderType, ServiceProviderId = b.ServiceProviderId, ServiceProviderCode = c.Code, + ServiceProviderName = c.Name, SubSystemId = a.SubSystemId }) .ToListAsync(); @@ -137,6 +138,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, OrderType = a.OrderType, ServiceProviderId = b.ServiceProviderId, ServiceProviderCode = c.Code, + ServiceProviderName = c.Name, SubSystemId = a.SubSystemId }) .ToListAsync(); From b98742f4319ddddf487c485a9b40efbafcb0fbd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Wed, 27 Mar 2024 17:21:46 +0800 Subject: [PATCH 2/7] change remove topic prefix --- src/SJZY.Track.Application/SjzyTrackApplicationModule.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs index 28f3329c..f9f5633a 100644 --- a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs +++ b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs @@ -86,7 +86,7 @@ namespace SJZY.Track.Application configure.Port = configuration.GetValue("RabbitMQ:Port"); }); - options.TopicNamePrefix = "v1"; + // options.TopicNamePrefix = "v1"; options.SucceedMessageExpiredAfter = 6 * 60 * 60; options.FailedRetryInterval = 60; options.FailedRetryCount = 3; @@ -103,8 +103,8 @@ namespace SJZY.Track.Application LogHelper.Error($@" |-CAP失败回调事件: |-处理类型:{(faileCalback.MessageType == DotNetCore.CAP.Messages.MessageType.Subscribe ? "消费消息达到最大重试次数,需要开发人员介入" : "生产消息推送失败")} - |-头部信息:{faileCalback?.Message?.Headers?.ToJson()} - |-消息内容:{((JsonElement)faileCalback?.Message?.Value).GetRawText()}"); + |-头部信息:{faileCalback.Message.Headers.ToJson()} + |-消息内容:{(faileCalback.Message.Value is string ? faileCalback.Message.Value : ((JsonElement?)faileCalback.Message.Value)?.GetRawText())}"); } catch (Exception ex) { From 2304a1f918d4e2aec529e1b8b312447054963be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Wed, 27 Mar 2024 18:58:03 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix=20=E8=BD=A8=E8=BF=B9=E5=88=B7=E6=96=B0?= =?UTF-8?q?=20attach=20base64=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/TrackRefreshEventHandler.cs | 3 +- .../Helpers/Base64Helper.cs | 33 +++++++++++++++++++ .../ProvideServices/TrackPullService.cs | 15 +++++---- 3 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/SJZY.Track.Application/Helpers/Base64Helper.cs diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs index 8d6e6b07..c3c7cef1 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs @@ -8,6 +8,7 @@ using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.TrackPull; using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Services; +using SJZY.Track.Application.Helpers; using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Enums; @@ -32,7 +33,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe [CapSubscribe(GlobalConst.TrackRefreshSubscribe, Group = GlobalConst.TrackRefreshSubscribe)] public async Task ConsumerAsync(InterfaceRelayForwardReplayEvent @event) { - var attach = JsonConvert.DeserializeObject(@event.Attach); + var attach = Base64Helper.DeSerialize(@event.Attach); if (attach is null) return; var config = await _trackPullCacheService.GetPullParamWithContentConfigAsync(attach.SubSystemId, attach.ServiceProviderId); diff --git a/src/SJZY.Track.Application/Helpers/Base64Helper.cs b/src/SJZY.Track.Application/Helpers/Base64Helper.cs new file mode 100644 index 00000000..4cc20d25 --- /dev/null +++ b/src/SJZY.Track.Application/Helpers/Base64Helper.cs @@ -0,0 +1,33 @@ +using System.Text; +using Newtonsoft.Json; + +namespace SJZY.Track.Application.Helpers; + +public class Base64Helper +{ + /// + /// json序列化base64 + /// + /// + /// + public static string SerializeObject(object obj) + { + var json = JsonConvert.SerializeObject(obj); + var bytes = Encoding.UTF8.GetBytes(json); + + return Convert.ToBase64String(bytes); + } + + /// + /// json反序列化base64 + /// + /// + /// + /// + public static T? DeSerialize(string json) + { + byte[] bytes = Convert.FromBase64String(json); + + return JsonConvert.DeserializeObject(Encoding.UTF8.GetString(bytes)); + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs index 71245edf..d7b0bc94 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs @@ -1,10 +1,10 @@ using Microsoft.AspNetCore.Authorization; -using Newtonsoft.Json; using SJZY.Expand.ABP.Core; using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Dtos.TrackPull; using SJZY.Track.Application.Contract.Services; +using SJZY.Track.Application.Helpers; using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Queries; using Volo.Abp.Http.Client.DynamicProxying; @@ -61,11 +61,11 @@ public class TrackPullService : ApplicationService }).ToList(); var serviceProviderCode = group.FirstOrDefault()!.ServiceProviderCode; + + var attach = Base64Helper.SerializeObject(group.Key); // 批量获取轨迹 await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( - "A012", serviceProviderCode, data, GlobalConst.TrackRefreshSubscribe, - JsonConvert.SerializeObject(new TrackRefreshAttach(group.Key.ServiceProviderId, - group.Key.ServiceProviderName, group.Key.SubSystemId, group.Key.OrderType))); + "A012", serviceProviderCode, data, GlobalConst.TrackRefreshSubscribe, attach); } return true; @@ -100,12 +100,13 @@ public class TrackPullService : ApplicationService x.OrderNo }).ToList(); + var attach = Base64Helper.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, + serviceProviderName!, + group.Key.SubSystemId, group.Key.OrderType)); // 批量获取轨迹 await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( InterfaceRelayConst.GetTrackInterfaceCode, serviceProviderCode, data, - GlobalConst.TrackRefreshSubscribe, - JsonConvert.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, serviceProviderName!, - group.Key.SubSystemId, group.Key.OrderType))); + GlobalConst.TrackRefreshSubscribe, attach); } if (config.PullInterval < 60) config.PullInterval = 60; From f9c61219e993730071134cd9955c03e1ad745dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Thu, 28 Mar 2024 10:35:15 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=80=9A7.1.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/TrackRefreshEventHandler.cs | 2 +- src/SJZY.Track.Application/SJZY.Track.Application.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs index c3c7cef1..df86b766 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs @@ -39,7 +39,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe attach.ServiceProviderId); if (@event.Data == null) return; - var data = JObject.Parse(@event.Data.ToString()!); + var data = JObject.Parse(@event.Data); var orderToken = data[config.ParamConfig.OrderPath]; if (orderToken is JArray orderTokens) { diff --git a/src/SJZY.Track.Application/SJZY.Track.Application.csproj b/src/SJZY.Track.Application/SJZY.Track.Application.csproj index e3162402..172e83f5 100644 --- a/src/SJZY.Track.Application/SJZY.Track.Application.csproj +++ b/src/SJZY.Track.Application/SJZY.Track.Application.csproj @@ -12,7 +12,7 @@ - + From 0b49336d7a7390d5d01a043cff6079a6cf42e1aa Mon Sep 17 00:00:00 2001 From: dingenwen <543338760@qq.com> Date: Thu, 28 Mar 2024 10:35:43 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SJZY.Track.Application.Contract.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj index 13bcd7dd..fe8765ac 100644 --- a/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj +++ b/src/SJZY.Track.Application.Contract/SJZY.Track.Application.Contract.csproj @@ -5,7 +5,7 @@ net7.0 True - 1.0.1 + 1.0.3 True From c8b3b99633925c9f26331915cf1d13ce4e73dfa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Thu, 28 Mar 2024 11:08:23 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix=EF=BC=9A=E8=BD=A8=E8=BF=B9=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E6=B2=A1=E6=9C=89=E6=8B=89=E5=8F=96=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84case?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/ITrackPullCacheService.cs | 5 +++-- .../EventHandlers/TrackRefreshEventHandler.cs | 3 ++- .../Services/TrackPull/TrackPullCacheService.cs | 5 ++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPullCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPullCacheService.cs index 486d4157..e98a6be8 100644 --- a/src/SJZY.Track.Application.Contract/Services/ITrackPullCacheService.cs +++ b/src/SJZY.Track.Application.Contract/Services/ITrackPullCacheService.cs @@ -19,7 +19,8 @@ public interface ITrackPullCacheService /// 子系统id /// 服务商id /// - Task GetPullParamWithContentConfigAsync(int subSystemId, int serviceProviderId); + Task + GetPullParamWithContentConfigAsync(int subSystemId, int serviceProviderId); /// /// 设置拉取配置缓存 @@ -28,6 +29,6 @@ public interface ITrackPullCacheService /// 子系统id /// 服务商id /// - Task SetPullConfigAsync(int? id = null, int? subSystemId = null, + Task SetPullConfigAsync(int? id = null, int? subSystemId = null, int? serviceProviderId = null); } \ No newline at end of file diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs index df86b766..2e85c484 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs @@ -35,10 +35,11 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe { var attach = Base64Helper.DeSerialize(@event.Attach); if (attach is null) return; + var config = await _trackPullCacheService.GetPullParamWithContentConfigAsync(attach.SubSystemId, attach.ServiceProviderId); + if (@event.Data == null || config == null) return; - if (@event.Data == null) return; var data = JObject.Parse(@event.Data); var orderToken = data[config.ParamConfig.OrderPath]; if (orderToken is JArray orderTokens) diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs index c5c7f8fd..396ce403 100644 --- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs @@ -35,7 +35,7 @@ public class TrackPullCacheService : ApplicationService, ITrackPullCacheService } [NonAction] - public async Task GetPullParamWithContentConfigAsync(int subSystemId, + public async Task GetPullParamWithContentConfigAsync(int subSystemId, int serviceProviderId) { var data = await RedisHelper.Client.GetAsync(TrackPullContentKey( @@ -48,7 +48,7 @@ public class TrackPullCacheService : ApplicationService, ITrackPullCacheService } [NonAction] - public async Task SetPullConfigAsync(int? id = null, int? subSystemId = null, + public async Task SetPullConfigAsync(int? id = null, int? subSystemId = null, int? serviceProviderId = null) { var data = new TrackPullParamWithContentConfigDto(); @@ -62,7 +62,6 @@ public class TrackPullCacheService : ApplicationService, ITrackPullCacheService if (trackPullConfigEntity == null) return data; var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(trackPullConfigEntity.Id); - if (trackPullConfigDetail is null) return data; var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(trackPullConfigEntity.Id); if (trackPullContentList.Count == 0) return data; From 2c6d730c4bc5ea46926dac1cb529e357f21a5f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com> Date: Thu, 28 Mar 2024 11:25:00 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix=EF=BC=9A=E6=8B=89=E5=8F=96=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E4=B8=8D=E5=AD=98=E5=9C=A8=E5=BA=94=E8=AF=A5=E8=BF=94?= =?UTF-8?q?=E5=9B=9Enull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TrackPull/TrackPullCacheService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs index 396ce403..76ae531c 100644 --- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullCacheService.cs @@ -51,19 +51,19 @@ public class TrackPullCacheService : ApplicationService, ITrackPullCacheService public async Task SetPullConfigAsync(int? id = null, int? subSystemId = null, int? serviceProviderId = null) { - var data = new TrackPullParamWithContentConfigDto(); - Expression> exp = x => true; if (id.HasValue) exp = x => x.Id == id; else if (subSystemId.HasValue && serviceProviderId.HasValue) exp = x => x.SubSystemId == subSystemId && x.ServiceProviderId == serviceProviderId; var trackPullConfigEntity = await _trackPullConfigRepository.GetFirstAsync(exp); - if (trackPullConfigEntity == null) return data; + if (trackPullConfigEntity == null) return null; var trackPullConfigDetail = await _trackPullConfigRepository.GetDetailAsync(trackPullConfigEntity.Id); var trackPullContentList = await _trackPullConfigRepository.GetContentListCacheAsync(trackPullConfigEntity.Id); - if (trackPullContentList.Count == 0) return data; + if (trackPullContentList.Count == 0) return null; + + var data = new TrackPullParamWithContentConfigDto(); data.ParamConfig = ObjectMapper.Map(trackPullConfigDetail);