From b17f01b157b242e406677f5bb2f8c277b3cca43d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 19 Mar 2024 14:35:34 +0800
Subject: [PATCH 01/32] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=BD=A8=E8=BF=B9?=
=?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=AF=BC=E8=87=B4=E8=AE=A2=E5=8D=95=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...cs => TrackChangeAfterUpdateOrderEvent.cs} | 14 +++---
...rackChangeAfterUpdateOrderEventHandler.cs} | 47 +++++++++++--------
.../EventHandlers/TrackDeleteEventHandler.cs | 29 ++++--------
.../EventHandlers/TrackUpsertEventHandler.cs | 4 +-
.../TrackDetailsIndex.cs | 2 +-
.../Consts/GlobalConst.MQ.cs | 2 +-
.../Repositories/TrackDetailsRepository.cs | 12 ++---
7 files changed, 52 insertions(+), 58 deletions(-)
rename src/SJZY.Track.Application.Contract/Events/{TrackUpsertAfterUpdateOrderEvent.cs => TrackChangeAfterUpdateOrderEvent.cs} (91%)
rename src/SJZY.Track.Application/EventHandlers/{TrackUpsertAfterUpdateOrderEventHandler.cs => TrackChangeAfterUpdateOrderEventHandler.cs} (50%)
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertAfterUpdateOrderEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs
similarity index 91%
rename from src/SJZY.Track.Application.Contract/Events/TrackUpsertAfterUpdateOrderEvent.cs
rename to src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs
index bf3907b4..448b5bf2 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertAfterUpdateOrderEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackChangeAfterUpdateOrderEvent.cs
@@ -1,6 +1,6 @@
namespace SJZY.Track.Application.Contract.Events;
-public class TrackUpsertAfterUpdateOrderEvent
+public class TrackChangeAfterUpdateOrderEvent
{
///
/// 订单Id
@@ -13,10 +13,15 @@ public class TrackUpsertAfterUpdateOrderEvent
public bool IsDelete { get; set; }
///
- /// 此次发生的轨迹是否意味完成
+ /// 这条轨迹是否意味着完成
///
public bool IsCompleted { get; set; }
+ ///
+ /// 轨迹代码
+ ///
+ public string TrackCode { get; set; } = null!;
+
///
/// 轨迹内容
///
@@ -41,9 +46,4 @@ public class TrackUpsertAfterUpdateOrderEvent
/// 轨迹时区
///
public float TrackTimeZone { get; set; }
-
- ///
- /// 轨迹代码
- ///
- public string TrackCode { get; set; } = null!;
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs
similarity index 50%
rename from src/SJZY.Track.Application/EventHandlers/TrackUpsertAfterUpdateOrderEventHandler.cs
rename to src/SJZY.Track.Application/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs
index 1ce9ae93..82dae4c9 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertAfterUpdateOrderEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackChangeAfterUpdateOrderEventHandler.cs
@@ -1,33 +1,39 @@
using DotNetCore.CAP;
using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
+using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.EventHandlers;
-public class TrackUpsertAfterUpdateOrderEventHandler : ITransientDependency, ICapSubscribe
+public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICapSubscribe
{
private readonly IOrderRepository _orderRepository;
+ private readonly ITrackDetailsRepository _trackDetailsRepository;
- public TrackUpsertAfterUpdateOrderEventHandler(IOrderRepository orderRepository)
+ public TrackChangeAfterUpdateOrderEventHandler(IOrderRepository orderRepository,
+ ITrackDetailsRepository trackDetailsRepository)
{
_orderRepository = orderRepository;
+ _trackDetailsRepository = trackDetailsRepository;
}
- [CapSubscribe(GlobalConst.TrackUpsertAfterUpdateOrderSubscribe)]
- public async Task ConsumerAsync(TrackUpsertAfterUpdateOrderEvent @event)
+ [CapSubscribe(GlobalConst.TrackChangeAfterUpdateOrderSubscribe)]
+ public async Task ConsumerAsync(TrackChangeAfterUpdateOrderEvent @event)
{
var order = await _orderRepository.GetFirstAsync(x => x.Id == @event.OrderId);
if (order == default) return;
if (@event.IsDelete)
{
- if (@event.TrackTime == default)
+ var track = await _trackDetailsRepository.GetLatestAsync(@event.OrderId);
+
+ // 删除全部轨迹导致的重置行为
+ if (track == default)
{
if (order.LatestTrackTime == null) return;
- // 删除全部轨迹导致的重置行为
// tips:订单是支持从已完成态到未完成态的
order.ResetTrackInfo();
@@ -37,14 +43,14 @@ public class TrackUpsertAfterUpdateOrderEventHandler : ITransientDependency, ICa
}
// 删除引发的回退更新
- if (order.LatestTrackTime != null &&
- @event.TrackTime.Subtract(TimeSpan.FromHours(@event.TrackTimeZone)) ==
- order.LatestTrackTime.Value.Subtract(TimeSpan.FromHours(order.LatestTrackTimeZone ?? 0)))
- {
- return;
- }
+ order.IsCompleted = track.IsCompleted;
+ order.LatestTrackContent = track.TrackContent;
+ order.LatestTrackEnContent = track.TrackEnContent;
+ order.LatestTrackPlace = track.TrackPlace;
+ order.LatestTrackTime = track.TrackTime;
+ order.LatestTrackTimeZone = track.TrackTimeZone;
}
- else // upsert引发的更新
+ else
{
if (order.LatestTrackTime != null &&
@event.TrackTime.Subtract(TimeSpan.FromHours(@event.TrackTimeZone)) <
@@ -52,14 +58,15 @@ public class TrackUpsertAfterUpdateOrderEventHandler : ITransientDependency, ICa
{
return;
}
- }
- order.IsCompleted = @event.IsCompleted;
- order.LatestTrackContent = @event.TrackContent;
- order.LatestTrackEnContent = @event.TrackEnContent;
- order.LatestTrackPlace = @event.TrackPlace;
- order.LatestTrackTime = @event.TrackTime;
- order.LatestTrackTimeZone = @event.TrackTimeZone;
+ // upsert引发的更新
+ order.IsCompleted = @event.IsCompleted;
+ order.LatestTrackContent = @event.TrackContent;
+ order.LatestTrackEnContent = @event.TrackEnContent;
+ order.LatestTrackPlace = @event.TrackPlace;
+ order.LatestTrackTime = @event.TrackTime;
+ order.LatestTrackTimeZone = @event.TrackTimeZone;
+ }
await _orderRepository.UpdateColumnAsync(order, x => new
{
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
index 1a1f0df0..f17fbb86 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
@@ -13,16 +13,16 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
{
private readonly IOrderRepository _orderRepository;
private readonly IProvideQueries _provideQueries;
- private readonly ITrackDetailsRepository _trackDetailsRepository;
private readonly ICapPublisher _capPublisher;
+ private readonly ITrackDetailsRepository _trackDetailsRepository;
- public TrackDeleteEventHandler(IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository,
- IOrderRepository orderRepository, ICapPublisher capPublisher)
+ public TrackDeleteEventHandler(IProvideQueries provideQueries,
+ IOrderRepository orderRepository, ICapPublisher capPublisher, ITrackDetailsRepository trackDetailsRepository)
{
_provideQueries = provideQueries;
- _trackDetailsRepository = trackDetailsRepository;
_orderRepository = orderRepository;
_capPublisher = capPublisher;
+ _trackDetailsRepository = trackDetailsRepository;
}
[CapSubscribe(GlobalConst.TrackDeleteSubscribe)]
@@ -59,28 +59,15 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
// 删除轨迹
var isOk = await _trackDetailsRepository.DeleteTrackAsync(@event.OrderId, @event.TrackCodes);
- // 触发订单主表更新事件
if (isOk)
{
- var track = await _trackDetailsRepository.GetLatestAsync(@event.OrderId);
- var updateOrderEvent = track == default
- ? new TrackUpsertAfterUpdateOrderEvent
+ // 触发订单主表更新事件
+ await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
+ new TrackChangeAfterUpdateOrderEvent
{
OrderId = @event.OrderId,
IsDelete = true
- }
- : new TrackUpsertAfterUpdateOrderEvent
- {
- OrderId = @event.OrderId,
- IsCompleted = track.IsCompleted,
- TrackContent = track.TrackContent,
- TrackEnContent = track.TrackEnContent,
- TrackPlace = track.TrackPlace,
- TrackTime = track.TrackTime,
- TrackTimeZone = track.TrackTimeZone,
- IsDelete = true
- };
- await _capPublisher.PublishAsync(GlobalConst.TrackUpsertAfterUpdateOrderSubscribe, updateOrderEvent);
+ });
}
// 根据订单关联关系异步向下刷
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 9d375716..e1bccee4 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -70,8 +70,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
await HandleTrackPushAsync(@event, track);
// step3、触发订单主表更新事件(异步)
- await _capPublisher.PublishAsync(GlobalConst.TrackUpsertAfterUpdateOrderSubscribe,
- new TrackUpsertAfterUpdateOrderEvent
+ await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
+ new TrackChangeAfterUpdateOrderEvent
{
OrderId = track.OrderId,
IsCompleted = track.IsCompleted,
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
index 43721588..5581c19d 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
@@ -48,7 +48,7 @@ public class TrackDetailsIndex : IdBaseIndex
public int TrackContentId { get; set; }
///
- /// 这条轨迹是否意味着完成(删除回退需要用到)
+ /// 这条轨迹是否意味着完成
///
public bool IsCompleted { get; set; }
diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
index d9dfd74b..2685b8b0 100644
--- a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
+++ b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
@@ -25,7 +25,7 @@ public partial class GlobalConst
///
/// 轨迹新增/更新后触发更新订单主表
///
- public const string TrackUpsertAfterUpdateOrderSubscribe = "SJZY.Track.TrackUpsertAfterUpdateOrder";
+ public const string TrackChangeAfterUpdateOrderSubscribe = "SJZY.Track.TrackUpsertAfterUpdateOrder";
///
/// 轨迹推送后触发更新订单主表
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index f50d7ebb..06288928 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -160,12 +160,12 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract DeleteTrackAsync(int orderId, List trackCodes)
{
var r = await Context.DeleteByQueryAsync(x => x
- .Query(
- q =>
- q.Term(t => t.OrderId, orderId)
- && q.Term(t => t.IsCanDelete, true)
- && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
- .Refresh() // 可选:立即刷新索引使更改立即可见
+ .Query(
+ q =>
+ q.Term(t => t.OrderId, orderId)
+ && q.Term(t => t.IsCanDelete, true)
+ && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
+ .WaitForCompletion()
);
if (!r.IsValid)
From 9cca8dedc40596940c235d1323c875b057d43bff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 19 Mar 2024 14:39:09 +0800
Subject: [PATCH 02/32] =?UTF-8?q?=E5=88=86=E7=BB=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackDeleteEventHandler.cs | 2 +-
.../EventHandlers/TrackPushEventHandler.cs | 2 +-
.../EventHandlers/TrackUpsertEventHandler.cs | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
index f17fbb86..36bada1d 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
@@ -25,7 +25,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
_trackDetailsRepository = trackDetailsRepository;
}
- [CapSubscribe(GlobalConst.TrackDeleteSubscribe)]
+ [CapSubscribe(GlobalConst.TrackDeleteSubscribe, Group = GlobalConst.TrackDeleteSubscribe)]
public async Task ConsumerAsync(TrackDeleteEvent @event)
{
if (@event.Visited.Contains(@event.OrderId))
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
index c1ca1b19..a4336631 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
@@ -22,7 +22,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
_capPublisher = capPublisher;
}
- [CapSubscribe(GlobalConst.TrackPushSubscribe)]
+ [CapSubscribe(GlobalConst.TrackPushSubscribe, Group = GlobalConst.TrackPushSubscribe)]
public async Task ConsumerAsync(TrackPushEvent @event)
{
InterfaceRelayUnifyResultDto res = null!;
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index e1bccee4..6de64141 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -33,7 +33,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
_trackPushCacheService = trackPushCacheService;
}
- [CapSubscribe(GlobalConst.TrackUpsertSubscribe)]
+ [CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)]
public async Task ConsumerAsync(TrackUpsertEvent @event)
{
if (@event.Visited.Contains(@event.OrderId))
From 55d7115b384334fe0d0f8992bbd6738d3b386e10 Mon Sep 17 00:00:00 2001
From: moyongzhen <2534173414@qq.com>
Date: Tue, 19 Mar 2024 14:52:09 +0800
Subject: [PATCH 03/32] =?UTF-8?q?=E5=8F=AF=E8=83=BD=E8=AD=A6=E5=91=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../TrackContents/TrackContentService.cs | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
index f4946435..90795551 100644
--- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
+++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs
@@ -64,7 +64,7 @@ namespace SJZY.Track.Application.Services.TrackContents
var detailInfo = await _trackContentRepository.GetDetailAsync(id);
if (detailInfo == null)
{
- return new UnifyResultDto(false, null, "未查询到轨迹状态");
+ return new UnifyResultDto(false, null!, "未查询到轨迹状态");
}
var dto = ObjectMapper.Map(detailInfo);
@@ -101,18 +101,18 @@ namespace SJZY.Track.Application.Services.TrackContents
if (trackContentEntitys.Any())
{
//throw new BusinessException(message: _stringLocalizer["TrackContentExist"]);
- var codes = trackContentEntitys.FirstOrDefault(a => a.Code==input.Code);
- if (codes!=null)
+ var codes = trackContentEntitys.FirstOrDefault(a => a.Code == input.Code);
+ if (codes != null)
{
throw new BusinessException(message: "该子系统下轨迹代码已存在");
}
- var contents = trackContentEntitys.FirstOrDefault(a => a.Content==input.Content);
- if (contents!=null)
+ var contents = trackContentEntitys.FirstOrDefault(a => a.Content == input.Content);
+ if (contents != null)
{
throw new BusinessException(message: "该子系统下轨迹内容已存在");
}
- var contentEns = trackContentEntitys.FirstOrDefault(a => a.EnContent==input.EnContent);
- if (contentEns!=null)
+ var contentEns = trackContentEntitys.FirstOrDefault(a => a.EnContent == input.EnContent);
+ if (contentEns != null)
{
throw new BusinessException(message: "该子系统下轨迹内容英文已存在");
}
@@ -138,18 +138,18 @@ namespace SJZY.Track.Application.Services.TrackContents
{
//throw new BusinessException(message: _stringLocalizer["TrackContentExist"]);
//throw new BusinessException(message: "当前子系统下,轨迹代码或轨迹内容或轨迹内容英文存在");
- var codes = trackContentEntitys.FirstOrDefault(a => a.Code==input.Code);
- if (codes!=null)
+ var codes = trackContentEntitys.FirstOrDefault(a => a.Code == input.Code);
+ if (codes != null)
{
throw new BusinessException(message: "该子系统下轨迹代码已存在");
}
- var contents = trackContentEntitys.FirstOrDefault(a => a.Content==input.Content);
- if (contents!=null)
+ var contents = trackContentEntitys.FirstOrDefault(a => a.Content == input.Content);
+ if (contents != null)
{
throw new BusinessException(message: "该子系统下轨迹内容已存在");
}
- var contentEns = trackContentEntitys.FirstOrDefault(a => a.EnContent==input.EnContent);
- if (contentEns!=null)
+ var contentEns = trackContentEntitys.FirstOrDefault(a => a.EnContent == input.EnContent);
+ if (contentEns != null)
{
throw new BusinessException(message: "该子系统下轨迹内容英文已存在");
}
From 8f1da65c5a684591c92357713f273a02af0f4d22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 19 Mar 2024 14:58:53 +0800
Subject: [PATCH 04/32] =?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs | 4 ++--
.../Repositories/TrackDetailsRepository.cs | 13 +++++++------
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
index 2685b8b0..b6d27ceb 100644
--- a/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
+++ b/src/SJZY.Track.Domain/Consts/GlobalConst.MQ.cs
@@ -23,9 +23,9 @@ public partial class GlobalConst
public const string TrackPushSubscribe = "SJZY.Track.TrackPush";
///
- /// 轨迹新增/更新后触发更新订单主表
+ /// 轨迹新增/更新/删除后触发更新订单主表
///
- public const string TrackChangeAfterUpdateOrderSubscribe = "SJZY.Track.TrackUpsertAfterUpdateOrder";
+ public const string TrackChangeAfterUpdateOrderSubscribe = "SJZY.Track.TrackChangeAfterUpdateOrder";
///
/// 轨迹推送后触发更新订单主表
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index 06288928..b3a0b2c6 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -160,12 +160,13 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract DeleteTrackAsync(int orderId, List trackCodes)
{
var r = await Context.DeleteByQueryAsync(x => x
- .Query(
- q =>
- q.Term(t => t.OrderId, orderId)
- && q.Term(t => t.IsCanDelete, true)
- && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
- .WaitForCompletion()
+ .Query(
+ q =>
+ q.Term(t => t.OrderId, orderId)
+ && q.Term(t => t.IsCanDelete, true)
+ && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
+ .WaitForActiveShards("all")
+ //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
);
if (!r.IsValid)
From a13ee83d00df5ae13f70f0b0250ca2f630f7ce5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 19 Mar 2024 15:26:51 +0800
Subject: [PATCH 05/32] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=BC=95=E5=8F=91?=
=?UTF-8?q?=E7=9A=84=E6=9B=B4=E6=96=B0delay3s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackDeleteEventHandler.cs | 3 ++-
.../Repositories/TrackDetailsRepository.cs | 1 -
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
index 36bada1d..4f402731 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
@@ -62,7 +62,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
if (isOk)
{
// 触发订单主表更新事件
- await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
+ await _capPublisher.PublishDelayAsync(TimeSpan.FromSeconds(3),
+ GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
new TrackChangeAfterUpdateOrderEvent
{
OrderId = @event.OrderId,
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index b3a0b2c6..fa370591 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -165,7 +165,6 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract t.OrderId, orderId)
&& q.Term(t => t.IsCanDelete, true)
&& q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
- .WaitForActiveShards("all")
//.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
);
From c4917d66cca351828b3fc52668920532a8d8df11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 19 Mar 2024 15:51:15 +0800
Subject: [PATCH 06/32] =?UTF-8?q?fix=20=E5=BE=AA=E7=8E=AF=E4=BE=9D?=
=?UTF-8?q?=E8=B5=96=E5=BC=82=E5=B8=B8case?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackDeleteEventHandler.cs | 15 ++++++---------
.../EventHandlers/TrackUpsertEventHandler.cs | 3 +--
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
index 4f402731..28b38520 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackDeleteEventHandler.cs
@@ -1,5 +1,6 @@
using DotNetCore.CAP;
using SJZY.Expand.ABP.Core.Logger;
+using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
@@ -34,8 +35,6 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
return;
}
- @event.Visited.Add(@event.OrderId);
-
// 不同子系统需要做内容映射
if (@event.UpSubSystemId != 0 && @event.UpSubSystemId != @event.SubSystemId)
{
@@ -75,13 +74,11 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(@event.OrderId);
foreach (var linkedOrder in linkedOrders)
{
- var nextEvent = new TrackDeleteEvent
- {
- OrderId = linkedOrder.OrderId,
- TrackCodes = @event.TrackCodes,
- SubSystemId = linkedOrder.SubSystemId,
- UpSubSystemId = @event.SubSystemId
- };
+ var nextEvent = @event.DeepCopy();
+ nextEvent.Visited.Add(@event.OrderId);
+ nextEvent.TrackCodes = @event.TrackCodes;
+ nextEvent.SubSystemId = linkedOrder.SubSystemId;
+ nextEvent.UpSubSystemId = @event.SubSystemId;
await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, nextEvent);
}
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 6de64141..208b3a85 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -42,8 +42,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
return;
}
- @event.Visited.Add(@event.OrderId);
-
// 不同子系统需要做内容映射
if (@event.UpSubSystemId != 0 && @event.UpSubSystemId != @event.SubSystemId)
{
@@ -88,6 +86,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
foreach (var linkedOrder in linkedOrders)
{
var nextEvent = @event.DeepCopy();
+ nextEvent.Visited.Add(@event.OrderId);
nextEvent.OrderId = linkedOrder.OrderId;
nextEvent.OrderType = linkedOrder.OrderType;
nextEvent.OrderNo = linkedOrder.OrderNo;
From 038c495dfaa547e839f5d41a10584efec405c547 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, 20 Mar 2024 17:23:08 +0800
Subject: [PATCH 07/32] =?UTF-8?q?fix=20=E6=8E=A8=E9=80=81=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E5=8F=AF=E8=83=BD=E6=98=AF=E7=A9=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ITrackPushCacheService.cs | 2 +-
.../EventHandlers/TrackUpsertEventHandler.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
index a4a57bc0..ab34ac01 100644
--- a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
+++ b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
@@ -19,7 +19,7 @@ public interface ITrackPushCacheService
/// 服务商id
///
///
- Task GetPushContentConfigAsync(int subSystemId, int customId, int trackContentId);
+ Task GetPushContentConfigAsync(int subSystemId, int customId, int trackContentId);
///
/// 根据轨迹代码推断下一个(升序)要推送的内容,如果找不到或者已经是最后一个了,返回null
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 208b3a85..7410c881 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -162,7 +162,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
{
config = await _trackPushCacheService.GetPushContentConfigAsync(
@event.SubSystemId, @event.CustomId, track.TrackContentId);
- if (!config.IsCanUpdate) return;
+ if (config == null || !config.IsCanUpdate) return;
}
else
{
From 07572a58380c44d684436599fbe5ff6df76acd99 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9F=B3=E6=96=87=E7=BF=94?= <878130837@qq.com>
Date: Wed, 20 Mar 2024 17:26:59 +0800
Subject: [PATCH 08/32] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A8=E9=80=81?=
=?UTF-8?q?=E7=BC=93=E5=AD=98=E8=BF=94=E5=9B=9E=E5=80=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ITrackPushCacheService.cs | 2 +-
.../Services/TrackPush/TrackPushCacheService.cs | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
index a4a57bc0..ab34ac01 100644
--- a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
+++ b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
@@ -19,7 +19,7 @@ public interface ITrackPushCacheService
/// 服务商id
///
///
- Task GetPushContentConfigAsync(int subSystemId, int customId, int trackContentId);
+ Task GetPushContentConfigAsync(int subSystemId, int customId, int trackContentId);
///
/// 根据轨迹代码推断下一个(升序)要推送的内容,如果找不到或者已经是最后一个了,返回null
diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
index 46155e2e..5dc319f8 100644
--- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
+++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
@@ -28,12 +28,12 @@ public class TrackPushCacheService : ApplicationService, ITrackPushCacheService
}
[NonAction]
- public async Task GetPushContentConfigAsync(int subSystemId, int customId,
+ public async Task GetPushContentConfigAsync(int subSystemId, int customId,
int trackContentId)
{
var data = await GetPushContentConfigsAsync(subSystemId, customId);
- return data.Single(x => x.TrackContentId == trackContentId);
+ return data?.FirstOrDefault(x => x.TrackContentId == trackContentId);
}
[NonAction]
From 0cb30b3d4b10ba67c2e90516bdb0424075c1a949 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, 20 Mar 2024 18:36:12 +0800
Subject: [PATCH 09/32] fix upsert
---
.../EventHandlers/TrackUpsertEventHandler.cs | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 7410c881..48d1d3f9 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -61,7 +61,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
var track = await _trackDetailsRepository.GetFirstOrDefaultAsync(@event.OrderId, @event.TrackCode);
// step1、upsert es轨迹
- await UpsertTrackAsync(track, @event);
+ track = await UpsertTrackAsync(track, @event);
Debug.Assert(track != null, nameof(track) + " != null");
// step2、触发轨迹推送事件(异步)
@@ -103,7 +103,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
///
///
///
- private async Task UpsertTrackAsync(TrackDetailsIndex? track, TrackUpsertEvent @event)
+ private async Task UpsertTrackAsync(TrackDetailsIndex? track, TrackUpsertEvent @event)
{
if (track == default)
{
@@ -113,7 +113,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
if (trackContent == default)
{
// 订单所绑定的模板,没有一条内容可以匹配发生的轨迹
- return;
+ return null;
}
track = new TrackDetailsIndex
@@ -146,6 +146,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
}
await _trackDetailsRepository.UpsertAsync(track);
+
+ return track;
}
///
From 367211f755fe07ad9b894ae1e1845610c9390e84 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, 21 Mar 2024 09:25:11 +0800
Subject: [PATCH 10/32] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8E=9F=E8=BD=A8?=
=?UTF-8?q?=E8=BF=B9=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Events/TrackUpsertEvent.cs | 10 ++++++++++
.../EventHandlers/TrackRefreshEventHandler.cs | 2 ++
.../EventHandlers/TrackUpsertEventHandler.cs | 2 ++
.../TrackDetailsAggregate/TrackDetailsIndex.cs | 5 -----
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
index eb836245..d6fcb03a 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
@@ -38,4 +38,14 @@ public class TrackUpsertEvent : UpsertTrackInput
/// 已经处理过的订单
///
public List Visited { get; set; } = new();
+
+ ///
+ /// 原轨迹内容
+ ///
+ public string? OriginTrackContent { get; set; }
+
+ ///
+ /// 原轨迹报文
+ ///
+ public string? OriginTrackData { get; set; }
}
\ 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 9d0e410d..be24fbf0 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
@@ -95,6 +95,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
TrackUpsertEvent @event)
{
var trackUpsertEvent = @event.DeepCopy();
+ trackUpsertEvent.OriginTrackData = JsonConvert.SerializeObject(trackToken);
var paramConfig = paramWithContentConfig.ParamConfig;
var contentConfigs = paramWithContentConfig.ContentConfigs;
TrackPullContentConfigDto? matchedContentConfig = null;
@@ -123,6 +124,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
var trackContent = trackToken[paramConfig.TrackContentName]?.Value();
if (!trackContent.IsNullOrWhiteSpace())
{
+ trackUpsertEvent.OriginTrackContent = trackContent;
Debug.Assert(trackContent != null, nameof(trackContent) + " != null");
matchedContentConfig = contentConfigs.FirstOrDefault(x => x.TrackContentValue == trackContent);
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 48d1d3f9..0e5da045 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -132,6 +132,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackTime = @event.TrackTime!.Value,
TrackTimeZone = @event.TrackTimeZone!.Value,
IsCanDelete = trackContent.IsCanDelete,
+ OriginTrackContent = @event.OriginTrackContent,
+ OriginTrackData = @event.OriginTrackData,
CreateUser = CurrentUserRequest.CurrentUser.Name,
CreateTime = DateTime.Now
};
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
index 5581c19d..b596c85a 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
@@ -52,11 +52,6 @@ public class TrackDetailsIndex : IdBaseIndex
///
public bool IsCompleted { get; set; }
- ///
- /// 原轨迹状态
- ///
- public string? OriginTrackStatus { get; set; }
-
///
/// 原轨迹内容
///
From 8dcc0596806ff0babd228e2db22d36ccb2d1a9a2 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, 21 Mar 2024 10:00:56 +0800
Subject: [PATCH 11/32] =?UTF-8?q?cap=E6=B6=88=E8=B4=B9=E5=B9=82=E7=AD=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/CAPFilter.cs | 109 ++++++++++++++++++
.../SjzyTrackApplicationModule.cs | 9 +-
2 files changed, 114 insertions(+), 4 deletions(-)
create mode 100644 src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
diff --git a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
new file mode 100644
index 00000000..fbee07b0
--- /dev/null
+++ b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
@@ -0,0 +1,109 @@
+using System.Globalization;
+using DotNetCore.CAP.Filter;
+using SJZY.Expand.ABP.Core;
+using SJZY.Expand.ABP.Core.Logger;
+using SJZY.Expand.ABP.Core.PublicMethords;
+
+namespace SJZY.Track.Application.EventHandlers;
+
+public class CAPFilter : SubscribeFilter
+{
+ const string _ERROR_CODE = "Error599";
+
+ ///
+ /// 执行前
+ ///
+ ///
+ ///
+ public override Task OnSubscribeExecutingAsync(ExecutingContext context)
+ {
+ var argumentJsonStr = context.Arguments.ToJson();
+
+ context.DeliverMessage.Headers["sjzy-receive-time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff");
+ context.DeliverMessage.Headers["sjzy-arguments"] = argumentJsonStr;
+
+ if (!string.IsNullOrEmpty(argumentJsonStr))
+ {
+ var hash = argumentJsonStr.GetHash();
+ using (RedisHelper.Client.Lock("Filter:" + hash, 10))
+ {
+ var isSkip = !string.IsNullOrEmpty(RedisHelper.Client.Get($"CapExcuteFilter:{hash}"));
+ if (isSkip)
+ throw new BusinessException(_ERROR_CODE, $"检测到重复消费,消费参数:{argumentJsonStr}");
+
+ RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10,
+ TimeSpan.FromDays(1).Seconds); // 1天内不允许一模一样的参数重复消费
+ }
+ }
+
+ return Task.CompletedTask;
+ }
+
+ ///
+ /// 执行后
+ ///
+ ///
+ ///
+ public override Task OnSubscribeExecutedAsync(ExecutedContext context)
+ {
+ context.DeliverMessage.Headers.TryGetValue("sjzy-receive-time", out var receiveTime);
+ context.DeliverMessage.Headers.TryGetValue("cap-msg-name", out var receiveName);
+ context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
+ context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
+
+ BuildLog(receiveTime, receiveName, arguments, false, messageId);
+
+ return Task.CompletedTask;
+ }
+
+
+ ///
+ /// 消费异常事件
+ ///
+ ///
+ ///
+ public override Task OnSubscribeExceptionAsync(ExceptionContext context)
+ {
+ context.ExceptionHandled = true;
+
+ if (context.Exception is BusinessException ex && ex.Code == _ERROR_CODE)
+ LogHelper.Warn(ex.ToString());
+ else
+ LogHelper.Error(context.Exception.ToString());
+
+
+ context.DeliverMessage.Headers.TryGetValue("sjzy-receive-time", out var receiveTime);
+ context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
+ context.DeliverMessage.Headers.TryGetValue("cap-msg-name", out var receiveName);
+ context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
+
+ BuildLog(receiveTime, receiveName, arguments, true, messageId);
+
+ return Task.CompletedTask;
+ }
+
+
+ private void BuildLog(string receiveTime, string receiveName, string arguments, bool isFromExecptionFliter,
+ string messageId)
+ {
+ var parsedDate = DateTime.ParseExact(receiveTime, "yyyy-MM-dd HH:mm:ss fff", CultureInfo.InvariantCulture);
+ var useTime = DateTime.Now - parsedDate;
+
+ var log = $@"
+|-消息编号:{messageId}
+|-消费者名:{receiveName}
+|-跳过执行:{(isFromExecptionFliter ? "是" : "否")}
+|-执行时间:{receiveTime}
+|-消费耗时:{useTime.Milliseconds}毫秒
+|-请求参数:{arguments}";
+
+ if (useTime.Minutes > 20)
+ {
+ LogHelper.Error(log);
+ }
+ else
+ {
+ //LogHelper.Info(log);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs
index b2b2cd06..88062bb8 100644
--- a/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs
+++ b/src/SJZY.Track.Application/SjzyTrackApplicationModule.cs
@@ -6,6 +6,7 @@ using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.InterfaceRelay.Application.Contracts;
using SJZY.Track.Application.Contract;
+using SJZY.Track.Application.EventHandlers;
using SJZY.Track.Application.Localization;
using SJZY.UserCenter.Contracts;
using SJZY.UserCenter.SharedModel;
@@ -90,7 +91,7 @@ namespace SJZY.Track.Application
{
dashboardOptions.PathBase = System.Diagnostics.Debugger.IsAttached
? ""
- : configuration["Swagger:JsonUrlPrefix"];
+ : configuration["Swagger:JsonUrlPrefix"]!;
});
options.FailedThresholdCallback = faileCalback =>
{
@@ -99,15 +100,15 @@ 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()}
+ |-消息内容:{((JsonElement?)faileCalback.Message.Value)?.GetRawText()}");
}
catch (Exception ex)
{
LogHelper.Error("【严重】CAP失败回调事件发生未处理异常" + ex);
}
};
- });
+ }).AddSubscribeFilter();
}
public override void PreConfigureServices(ServiceConfigurationContext context)
From 0a9bf47df3c0ab89b3f0b0960b1b73c62a892167 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, 21 Mar 2024 10:32:00 +0800
Subject: [PATCH 12/32] =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E7=B4=A2=E5=BC=95?=
=?UTF-8?q?=E5=A4=9A=E5=AD=98=E4=B8=80=E4=B8=AAzero=20track=20time?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackUpsertEventHandler.cs | 2 ++
.../Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 0e5da045..f5d542ef 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -137,6 +137,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
CreateUser = CurrentUserRequest.CurrentUser.Name,
CreateTime = DateTime.Now
};
+
+ track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
}
else
{
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
index b596c85a..b3319d35 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/TrackDetailsIndex.cs
@@ -82,6 +82,11 @@ public class TrackDetailsIndex : IdBaseIndex
///
public float TrackTimeZone { get; set; }
+ ///
+ /// 转化后的轨迹发生时间
+ ///
+ public DateTime ZeroTrackTime { get; set; }
+
/// 是否可删
public bool IsCanDelete { get; set; }
From 4166a36bf0995d7f9a8ddba5643b147a7692c970 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, 21 Mar 2024 10:52:53 +0800
Subject: [PATCH 13/32] =?UTF-8?q?=E8=BD=A8=E8=BF=B9=20=E4=B8=8D=E5=AD=98?=
=?UTF-8?q?=E5=9C=A8=E6=96=B0=E5=A2=9E/=E5=AD=98=E5=9C=A8=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0=20=E5=88=86=E7=B1=BB=E8=AE=A8=E8=AE=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/ProvideServices/UpsertTrackInput.cs | 5 +++++
.../EventHandlers/TrackUpsertEventHandler.cs | 5 +++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
index 8248c8e0..ce97f715 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertTrackInput.cs
@@ -4,6 +4,11 @@ namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
public class UpsertTrackInput : OrderNoInfo
{
+ ///
+ /// true新增,false更新
+ ///
+ public bool IsAdd { get; set; }
+
///
/// 轨迹内容代码
///
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index f5d542ef..6c8fd767 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -105,7 +105,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
///
private async Task UpsertTrackAsync(TrackDetailsIndex? track, TrackUpsertEvent @event)
{
- if (track == default)
+ if (track == default && @event.IsAdd)
{
//todo:可以优化
// 根据轨迹code在订单模板内容中寻找匹配的
@@ -140,7 +140,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
}
- else
+
+ if (track != default && !@event.IsAdd)
{
track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.TrackTime!.Value;
From 4b189b378d142a028badf416078b18c722e043d6 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, 21 Mar 2024 11:34:06 +0800
Subject: [PATCH 14/32] =?UTF-8?q?=E6=89=B9=E9=87=8Fupsert=E8=BD=A8?=
=?UTF-8?q?=E8=BF=B9=E4=B9=9F=E5=8C=BA=E5=88=86isAdd?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/ProvideServices/BatchUpsertTrackInput.cs | 5 +++++
.../Services/ProvideServices/TrackService.cs | 1 +
2 files changed, 6 insertions(+)
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
index fa5d3880..1c90e3a9 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/BatchUpsertTrackInput.cs
@@ -4,6 +4,11 @@ namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
public class BatchUpsertTrackInput : OrderNosInfo
{
+ ///
+ /// true新增,false更新
+ ///
+ public bool IsAdd { get; set; }
+
///
/// 轨迹内容代码
///
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index b45d9313..3e03dc21 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -86,6 +86,7 @@ public partial class TrackService : ApplicationService, ITrackService
// 新增/更新轨迹
var @event = new TrackUpsertEvent
{
+ IsAdd = input.IsAdd,
TrackCode = input.TrackCode,
TrackPlace = input.TrackPlace,
TrackTime = input.TrackTime,
From 7f0f11d0a3f2d78d98a2247e713db742fb1490a2 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, 21 Mar 2024 14:50:04 +0800
Subject: [PATCH 15/32] =?UTF-8?q?=E6=8E=A8=E6=8B=89=E5=AE=9A=E6=97=B6?=
=?UTF-8?q?=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ProvideServices/TrackPullService.cs | 2 +-
.../Services/ProvideServices/TrackPushService.cs | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
index de894ef4..9fd4cd56 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
@@ -102,7 +102,7 @@ public class TrackPullService : ApplicationService
GlobalConst.TrackRefreshSubscribe, JsonConvert.SerializeObject(group.Key));
}
- await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, 1);
+ await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, orders.Count);
}
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 2fee5408..810aff3b 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -1,4 +1,5 @@
using DotNetCore.CAP;
+using Microsoft.AspNetCore.Authorization;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services;
@@ -107,6 +108,7 @@ public class TrackPushService : ApplicationService
/// 定时任务推送预警(》12小时没有推送的)
///
///
+ [AllowAnonymous]
[HttpPost("Track/PushWarnForTask")]
public async Task PushWarnForTaskAsync()
{
From c76f8a99088a68c032785e968e4ac84fcb3bfb45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Fri, 22 Mar 2024 09:27:42 +0800
Subject: [PATCH 16/32] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=BD=A8=E8=BF=B9upser?=
=?UTF-8?q?t=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackUpsertEventHandler.cs | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 6c8fd767..2da1fd9b 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -1,5 +1,4 @@
-using System.Diagnostics;
-using DotNetCore.CAP;
+using DotNetCore.CAP;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
@@ -59,10 +58,12 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
}
var track = await _trackDetailsRepository.GetFirstOrDefaultAsync(@event.OrderId, @event.TrackCode);
+ if (track == null && !@event.IsAdd) return;
+ if (track != null && @event.IsAdd) return;
// step1、upsert es轨迹
track = await UpsertTrackAsync(track, @event);
- Debug.Assert(track != null, nameof(track) + " != null");
+ if (track == null) return; // 模板没配该轨迹代码,无法入库
// step2、触发轨迹推送事件(异步)
await HandleTrackPushAsync(@event, track);
@@ -105,7 +106,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
///
private async Task UpsertTrackAsync(TrackDetailsIndex? track, TrackUpsertEvent @event)
{
- if (track == default && @event.IsAdd)
+ if (track == default)
{
//todo:可以优化
// 根据轨迹code在订单模板内容中寻找匹配的
@@ -140,8 +141,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
}
-
- if (track != default && !@event.IsAdd)
+ else
{
track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.TrackTime!.Value;
From 3bc9b233d5e847220d18696bd87adac6e3cf1d38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Sat, 23 Mar 2024 14:12:02 +0800
Subject: [PATCH 17/32] 1
---
.../TrackPushConfigDto.cs} | 2 +-
.../Services/ITrackPushCacheService.cs | 2 +-
.../AutoMapper/TrackPushAutoMapperProfile.cs | 5 +-
.../EventHandlers/TrackUpsertEventHandler.cs | 2 +-
.../TrackPush/TrackPushCacheService.cs | 12 ++--
.../ITrackPushConfigRepository.cs | 11 +++-
.../TrackPush/TrackPushContentConfigVO.cs | 59 +++++++++++++++++
.../Repositories/TrackPushConfigRepository.cs | 64 +++++++++++++++----
8 files changed, 127 insertions(+), 30 deletions(-)
rename src/SJZY.Track.Application.Contract/Dtos/{ProvideServices/TrackPushContentConfigDto.cs => TrackPush/TrackPushConfigDto.cs} (96%)
create mode 100644 src/SJZY.Track.Domain/Dtos/TrackPush/TrackPushContentConfigVO.cs
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackPushContentConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigDto.cs
similarity index 96%
rename from src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackPushContentConfigDto.cs
rename to src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigDto.cs
index a019087f..1f129458 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/TrackPushContentConfigDto.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushConfigDto.cs
@@ -1,4 +1,4 @@
-namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
+namespace SJZY.Track.Application.Contract.Dtos.TrackPush;
public class TrackPushConfigDto
{
diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
index ab34ac01..91b80c3e 100644
--- a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
+++ b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs
@@ -1,4 +1,4 @@
-using SJZY.Track.Application.Contract.Dtos.ProvideServices;
+using SJZY.Track.Application.Contract.Dtos.TrackPush;
namespace SJZY.Track.Application.Contract.Services;
diff --git a/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs
index 6be69d46..213d7872 100644
--- a/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs
+++ b/src/SJZY.Track.Application/AutoMapper/TrackPushAutoMapperProfile.cs
@@ -1,8 +1,8 @@
using AutoMapper;
-using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
+using SJZY.Track.Domain.Dtos.TrackPush;
using Volo.Abp.AutoMapper;
namespace SJZY.Track.Application.AutoMapper;
@@ -15,7 +15,6 @@ public class TrackPushAutoMapperProfile : Profile
CreateMap(MemberList.None).Ignore(dest => dest.Id)
.ForMember(dest => dest.IsPush, opt => opt.MapFrom(source => true));
CreateMap(MemberList.None);
- CreateMap(MemberList.None)
- .ForMember(dest => dest.OrderType, opt => opt.MapFrom(source => source.OrderNoType));
+ CreateMap(MemberList.None);
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 2da1fd9b..97a07e17 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -1,7 +1,7 @@
using DotNetCore.CAP;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
-using SJZY.Track.Application.Contract.Dtos.ProvideServices;
+using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
index 5dc319f8..fe72985a 100644
--- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
+++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs
@@ -1,9 +1,10 @@
using System.Linq.Expressions;
using SJZY.Expand.ABP.Core;
-using SJZY.Track.Application.Contract.Dtos.ProvideServices;
+using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
+using SJZY.Track.Domain.Dtos.TrackPush;
namespace SJZY.Track.Application.Services.TrackPush;
@@ -74,16 +75,13 @@ public class TrackPushCacheService : ApplicationService, ITrackPushCacheService
var trackPushConfigEntity = await _trackPushConfigRepository.GetFirstAsync(exp);
if (trackPushConfigEntity == null) return data;
- var trackPushContentList =
- await _trackPushConfigRepository.GetContentListAsync(x => x.TrackPushConfigId == trackPushConfigEntity.Id);
+ var trackPushContentList = await _trackPushConfigRepository.GetContentListAsync(trackPushConfigEntity.Id);
if (trackPushContentList.Count == 0) return data;
- trackPushContentList = trackPushContentList.OrderBy(x => x.Sort).ToList();
-
data.IsAutoPush = trackPushConfigEntity.IsAutoPush;
data.ContentConfigs =
- ObjectMapper.Map, List>(trackPushContentList);
-
+ ObjectMapper.Map, List>(trackPushContentList);
+ ;
await RedisHelper.Client.SetAsync(
TrackPushContentKey(trackPushConfigEntity.SubSystemId, trackPushConfigEntity.CustomId), data);
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
index 80013967..641fb386 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushConfigRepository.cs
@@ -23,11 +23,16 @@ public interface ITrackPushConfigRepository : IBasicRepository UpdateContentAsync(TrackPushContentConfigEntity updateObj);
- Task> GetContentListAsync(Expression> whereExpression);
+ Task> GetContentListAsync(
+ Expression> whereExpression);
+
+ Task> GetContentListAsync(int configId);
Task UpdateContentRangeAsync(List updateObjs);
- Task ContentMaxAsync(Expression> columns, Expression> whereExpression);
+ Task ContentMaxAsync(Expression> columns,
+ Expression> whereExpression);
- Task UpdateContentAsync(Expression> columns, Expression> whereExpression);
+ Task UpdateContentAsync(Expression> columns,
+ Expression> whereExpression);
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Dtos/TrackPush/TrackPushContentConfigVO.cs b/src/SJZY.Track.Domain/Dtos/TrackPush/TrackPushContentConfigVO.cs
new file mode 100644
index 00000000..1f67fb8d
--- /dev/null
+++ b/src/SJZY.Track.Domain/Dtos/TrackPush/TrackPushContentConfigVO.cs
@@ -0,0 +1,59 @@
+namespace SJZY.Track.Domain.Dtos.TrackPush;
+
+public class TrackPushContentConfigVO
+{
+ ///
+ /// 是否自动推送
+ ///
+ public bool IsAutoPush { get; set; }
+
+ ///
+ /// 是否支持更新
+ ///
+ public bool IsCanUpdate { get; set; }
+
+ ///
+ /// 服务商code
+ ///
+ public string ServiceProviderCode { get; set; } = null!;
+
+ ///
+ /// 扩展字段参数值
+ ///
+ public string? ExpandFieldsValue { get; set; }
+
+ ///
+ /// 推送单号类型(主数据枚举TrackOrderType)
+ ///
+ public int OrderType { get; set; }
+
+ ///
+ /// 轨迹代码参数值
+ ///
+ public string? TrackContentCodeValue { get; set; }
+
+ ///
+ /// 轨迹内容id
+ ///
+ public int TrackContentId { get; set; }
+
+ ///
+ /// 轨迹内容参数值
+ ///
+ public string? TrackContentValue { get; set; }
+
+ ///
+ /// 轨迹内容英文参数值
+ ///
+ public string? TrackEnContentValue { get; set; }
+
+ ///
+ /// 轨迹状态参数值
+ ///
+ public string? TrackStatusValue { get; set; }
+
+ ///
+ /// 轨迹时区GMT
+ ///
+ public double? TrackTimeZone { get; set; }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
index e58b1020..74bfc0d3 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackPushConfigRepository.cs
@@ -1,14 +1,13 @@
-using SJZY.Expand.ABP.Core.PublicMethords;
+using System.Linq.Expressions;
+using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
-using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
using SJZY.Track.Domain.Dtos.Common;
using SJZY.Track.Domain.Dtos.TrackPush;
using SJZY.Track.Domain.Enums;
using SJZY.Track.Domain.VEntities;
using SJZY.Track.Repository.VData.Entitys;
-using System.Linq.Expressions;
namespace SJZY.Track.Repository.Repositories;
@@ -19,11 +18,14 @@ public class TrackPushConfigRepository : BasicRepository,
{
return await AsQueryable()
.LeftJoin((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted)
- .LeftJoin((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
+ .LeftJoin((trackPush, system, externalSubject) =>
+ trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
.Filter(null, true)
.Where(trackPush => !trackPush.IsDeleted)
.WhereIF(input.SubSystemId.HasValue, trackPush => trackPush.SubSystemId == input.SubSystemId)
- .WhereIF(!input.Keywords.IsNullOrWhiteSpace(), (trackPush, system, externalSubject) => externalSubject.Abbreviation.Contains(input.Keywords!) || externalSubject.Name.Contains(input.Keywords!))
+ .WhereIF(!input.Keywords.IsNullOrWhiteSpace(),
+ (trackPush, system, externalSubject) => externalSubject.Abbreviation.Contains(input.Keywords!) ||
+ externalSubject.Name.Contains(input.Keywords!))
.OrderByDescending(trackPush => trackPush.CreateTime)
.Select((trackPush, system, externalSubject) => new GetTrackPushConfigPageOutputVO
{
@@ -36,11 +38,14 @@ public class TrackPushConfigRepository : BasicRepository,
.ToPagedListAsync(input.PageIndex, input.PageSize);
}
- public async Task> GetContentPageAsync(GetTrackPushContentPageInputVO input)
+ public async Task> GetContentPageAsync(
+ GetTrackPushContentPageInputVO input)
{
return await Context.Queryable()
.InnerJoin((pushContent, trackContent) => pushContent.TrackContentId == trackContent.Id)
- .LeftJoin((pushContent, trackContent, enumValue) => enumValue.Property == EnumPropertyEnums.单号类型.GetDescription() && pushContent.OrderNoType == enumValue.Enumkey && !enumValue.IsDeleted)
+ .LeftJoin((pushContent, trackContent, enumValue) =>
+ enumValue.Property == EnumPropertyEnums.单号类型.GetDescription() &&
+ pushContent.OrderNoType == enumValue.Enumkey && !enumValue.IsDeleted)
.Where(pushContent => pushContent.TrackPushConfigId == input.TrackPushConfigId)
.OrderBy(pushContent => pushContent.Sort)
.Select((pushContent, trackContent, enumValue) => new GetTrackPushContentPageOutputVO
@@ -56,9 +61,12 @@ public class TrackPushConfigRepository : BasicRepository,
{
return await AsQueryable()
.LeftJoin((trackPush, system) => trackPush.SubSystemId == system.Id && !system.IsDeleted)
- .LeftJoin((trackPush, system, externalSubject) => trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
- .LeftJoin((trackPush, system, externalSubject, service) => trackPush.ServiceProviderId == service.Id && !service.IsDeleted)
- .InnerJoin((trackPush, system, externalSubject, service, paramsConfig) => trackPush.Id == paramsConfig.PullOrPushConfigId && paramsConfig.IsPush && !paramsConfig.IsDeleted)
+ .LeftJoin((trackPush, system, externalSubject) =>
+ trackPush.CustomId == externalSubject.Id && !externalSubject.IsDeleted)
+ .LeftJoin((trackPush, system, externalSubject, service) =>
+ trackPush.ServiceProviderId == service.Id && !service.IsDeleted)
+ .InnerJoin((trackPush, system, externalSubject, service, paramsConfig) =>
+ trackPush.Id == paramsConfig.PullOrPushConfigId && paramsConfig.IsPush && !paramsConfig.IsDeleted)
.Filter(null, true)
.Where(trackPush => trackPush.Id == id && !trackPush.IsDeleted)
.Select((trackPush, system, externalSubject, service, paramsConfig) => new GetTrackPushConfigDetailOutputVO
@@ -112,7 +120,32 @@ public class TrackPushConfigRepository : BasicRepository,
return await Context.Updateable(updateObj).ExecuteCommandHasChangeAsync();
}
- public async Task> GetContentListAsync(Expression> whereExpression)
+ public async Task> GetContentListAsync(int configId)
+ {
+ return await Context.Queryable()
+ .LeftJoin((a, b) => a.Id == b.TrackPushConfigId)
+ .LeftJoin((a, b, c) => a.ServiceProviderId == c.Id)
+ .Where(a => a.Id == configId)
+ .OrderBy((a, b) => b.Sort)
+ .Select((a, b, c) => new TrackPushContentConfigVO
+ {
+ IsAutoPush = a.IsAutoPush,
+ IsCanUpdate = a.IsCanUpdate,
+ ServiceProviderCode = c.Code,
+ ExpandFieldsValue = b.ExpandFieldsValue,
+ OrderType = b.OrderNoType,
+ TrackContentCodeValue = b.TrackContentCodeValue,
+ TrackContentId = b.TrackContentId,
+ TrackContentValue = b.TrackContentValue,
+ TrackEnContentValue = b.TrackEnContentValue,
+ TrackStatusValue = b.TrackStatusValue,
+ TrackTimeZone = b.TrackTimeZone
+ })
+ .ToListAsync();
+ }
+
+ public async Task> GetContentListAsync(
+ Expression> whereExpression)
{
return await Context.Queryable().Where(whereExpression).ToListAsync();
}
@@ -122,13 +155,16 @@ public class TrackPushConfigRepository : BasicRepository,
return await Context.Updateable(updateObjs).ExecuteCommandHasChangeAsync();
}
- public async Task ContentMaxAsync(Expression> columns, Expression> whereExpression)
+ public async Task ContentMaxAsync(Expression> columns,
+ Expression> whereExpression)
{
return await Context.Queryable().Where(whereExpression).MaxAsync(columns);
}
- public async Task UpdateContentAsync(Expression> columns, Expression> whereExpression)
+ public async Task UpdateContentAsync(Expression> columns,
+ Expression> whereExpression)
{
- return await Context.Updateable().SetColumns(columns).Where(whereExpression).ExecuteCommandHasChangeAsync();
+ return await Context.Updateable().SetColumns(columns).Where(whereExpression)
+ .ExecuteCommandHasChangeAsync();
}
}
\ No newline at end of file
From 33f26e19f139dd8368c8a465b680947d1e193eaf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Sat, 23 Mar 2024 15:07:49 +0800
Subject: [PATCH 18/32] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=97=B6=E8=AE=B0?=
=?UTF-8?q?=E5=BD=95=E8=AE=A2=E5=8D=95id?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackUpsertEventHandler.cs | 1 +
.../Services/ProvideServices/TrackPushService.cs | 1 +
2 files changed, 2 insertions(+)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index 97a07e17..e51481e5 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -192,6 +192,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
OptionType = optionType,
ServiceProviderCode = config.ServiceProviderCode,
OrderNo = track.OrderNo,
+ OrderId = track.OrderId,
TrackContentId = config.TrackContentId,
TrackStatus = track.TrackStatus,
TrackCode = track.TrackCode,
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 810aff3b..b0972b56 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -79,6 +79,7 @@ public class TrackPushService : ApplicationService
{
ServiceProviderCode = config.ServiceProviderCode,
OrderNo = order.OrderNo,
+ OrderId = order.Id,
TrackContentId = config.TrackContentId,
TrackStatus = track.TrackStatus,
TrackCode = track.TrackCode,
From 89bd93ad9ed094e15c407f22dfc849f0e34e68d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Sat, 23 Mar 2024 15:14:34 +0800
Subject: [PATCH 19/32] attach
---
.../EventHandlers/TrackPushEventHandler.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
index a4336631..58ddb13a 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
@@ -51,6 +51,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
RequestId = res.RequestId,
Message = res.Msg,
OptionType = @event.OptionType.ToString(),
+ OrderId = @event.OrderId,
TrackStatus = @event.TrackStatus,
TrackCode = @event.TrackCode,
TrackContent = @event.TrackContent,
From 9ab866df9e8927025cd56e77a1a3f85ce31c5d9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Sat, 23 Mar 2024 15:27:09 +0800
Subject: [PATCH 20/32] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8Dnest=20=E8=BD=A8?=
=?UTF-8?q?=E8=BF=B9=E6=8E=A8=E9=80=81=E7=B4=A2=E5=BC=95=E5=91=BD=E5=90=8D?=
=?UTF-8?q?=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Repositories/TrackPushRecordsRepository.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
index c1bb968f..b537adb1 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
@@ -3,6 +3,7 @@ using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
+using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Repository.Repositories;
@@ -30,6 +31,7 @@ public class TrackPushRecordsRepository : ElasticSearchContextAbstract> GetTrackPushRecordsAsync(int orderId)
{
var data = await Context.SearchAsync(x => x
+ .Index(GlobalConst.TrackPushRecordsIndex)
.Query(q =>
q.Term(t => t.OrderId, orderId)
)
From c053a83a27470b30ef1d4bb73712c29d31c0c3bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Mon, 25 Mar 2024 17:39:23 +0800
Subject: [PATCH 21/32] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E5=8F=AA=E5=A4=84?=
=?UTF-8?q?=E7=90=86=E6=9C=AA=E5=AE=8C=E6=88=90=E7=9A=84=E5=8D=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ProvideServices/TrackPushService.cs | 17 ++++++++++++-----
.../OrderAggregate/IOrderRepository.cs | 5 +++++
.../Queries/TrackOrderQueries.cs | 2 ++
.../Repositories/OrderRepository.cs | 18 ++++++++++++++++++
4 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index b0972b56..85e48c02 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -75,6 +75,8 @@ public class TrackPushService : ApplicationService
await _pushCacheService.GetPushContentConfigAsync(order.SubSystemId, order.CustomId,
track.TrackContentId);
+ if (config == null) continue;
+
var trackPushEvent = new TrackPushEvent
{
ServiceProviderCode = config.ServiceProviderCode,
@@ -113,14 +115,19 @@ public class TrackPushService : ApplicationService
[HttpPost("Track/PushWarnForTask")]
public async Task PushWarnForTaskAsync()
{
- var time = DateTime.Now.Subtract(TimeSpan.FromHours(12));
- var orders = await _orderRepository.GetListAsync(x =>
- !x.IsCompleted && x.QuestionType == 0 && x.LatestPushTime < time);
+ var orders = await _orderRepository.GetPushWarnOrdersAsync();
- orders.ForEach(x => { x.QuestionType = (int)TrackProblemType.Warn; });
+ var time = DateTime.Now.Subtract(TimeSpan.FromHours(12));
+
+ orders.ForEach(x =>
+ {
+ x.QuestionType = x.LatestPushTime == null || x.LatestPushTime < time
+ ? (int)TrackProblemType.Warn
+ : (int)TrackProblemType.None;
+ });
await _orderRepository.UpdateRangeAsync(orders, x => new { x.QuestionType });
- return $"成功将{orders.Select(x => x.OrderNo).JoinAsString(",")}置为预警单";
+ return $"成功将:{orders.Count(x => x.QuestionType == (int)TrackProblemType.Warn)}个订单置为预警";
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
index acc0d4de..10832b40 100644
--- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/IOrderRepository.cs
@@ -25,6 +25,11 @@ public interface IOrderRepository : IBasicRepository
///
Task DeleteOrderAsync(int orderId);
+ ///
+ /// 获取推送预警单
+ ///
+ ///
+ Task> GetPushWarnOrdersAsync();
#region 订单关联
diff --git a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs b/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
index 8d9d2504..841a3555 100644
--- a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
+++ b/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
@@ -1,6 +1,7 @@
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
using SJZY.Track.Domain.Dtos.Order;
+using SJZY.Track.Domain.Enums;
using SJZY.Track.Domain.Queries;
using SJZY.Track.Domain.VEntities;
using SJZY.Track.Repository.VData.Entitys;
@@ -38,6 +39,7 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
.WhereIF(input.CustomerId > 0, (a, b, c) => a.CustomId == input.CustomerId)
.WhereIF(input.TrackOrderType > 0, (a, b, c) => a.OrderType == input.TrackOrderType)
.WhereIF(input.TabType > 0, (a, b, c) => a.QuestionType == input.TabType)
+ .WhereIF(input.TabType == (int)TrackProblemType.Warn, (a, b, c) => !a.IsCompleted)
.OrderByDescending((a, b, c) => a.CreateTime)
.Select((a, b, c) => new TrackOrderVO
{
diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
index 26a8ed2b..3d18de17 100644
--- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
@@ -1,6 +1,8 @@
using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
+using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Dtos.Order;
+using SJZY.Track.Domain.Enums;
namespace SJZY.Track.Repository.Repositories;
@@ -53,6 +55,22 @@ public class OrderRepository : BasicRepository, IOrderRepository, I
tran.Complete();
}
+ public async Task> GetPushWarnOrdersAsync()
+ {
+ var errorType = (int)TrackProblemType.Error;
+
+ return await Context.Queryable()
+ .LeftJoin((a, b) => a.SubSystemId == b.SubSystemId && a.CustomId == b.CustomId)
+ .Where((a, b) => !b.IsCompleted && b.QuestionType != errorType)
+ .Select((a, b) => new OrderEntity
+ {
+ Id = b.Id,
+ QuestionType = b.QuestionType,
+ LatestPushTime = b.LatestPushTime
+ })
+ .ToListAsync();
+ }
+
#region 订单关联
public async Task> GetLinkedOrdersAsync(int orderId)
From e5e3b2eccebfc4bd4b95eb4eb7ecdbe4e49c18ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 09:37:19 +0800
Subject: [PATCH 22/32] =?UTF-8?q?fix=20=E8=BD=A8=E8=BF=B9=E5=88=B7?=
=?UTF-8?q?=E6=96=B0=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ProvideServices/TrackPullService.cs | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
index 9fd4cd56..f404b238 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
@@ -86,10 +86,10 @@ public class TrackPullService : ApplicationService
}
var orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId);
+ var serviceProviderCode = orders.FirstOrDefault()?.ServiceProviderCode;
foreach (var group in orders.GroupBy(x =>
- new TrackRefreshAttach(x.ServiceProviderId, x.ServiceProviderCode, x.SubSystemId,
- x.OrderType)))
+ new { x.SubSystemId, x.OrderType }))
{
var data = group.Select(x => new
{
@@ -98,8 +98,10 @@ public class TrackPullService : ApplicationService
// 批量获取轨迹
await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(
- InterfaceRelayConst.GetTrackInterfaceCode, group.Key.ServiceProviderCode, data,
- GlobalConst.TrackRefreshSubscribe, JsonConvert.SerializeObject(group.Key));
+ InterfaceRelayConst.GetTrackInterfaceCode, serviceProviderCode, data,
+ GlobalConst.TrackRefreshSubscribe,
+ JsonConvert.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, serviceProviderCode!,
+ group.Key.SubSystemId, group.Key.OrderType)));
}
await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, orders.Count);
From 2fd73776af87de22efada6f566ca2310e3700808 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 09:42:13 +0800
Subject: [PATCH 23/32] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E3=80=90=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E8=BD=A8=E8=BF=B9=E8=AE=A2=E5=8D=95=E6=98=8E=E7=BB=86?=
=?UTF-8?q?=E3=80=91=E5=88=9B=E5=BB=BA=E4=BA=BA=E5=BC=82=E5=B8=B8=E4=B8=BA?=
=?UTF-8?q?system=E3=80=91https://www.tapd.cn/60863849/bugtrace/bugs/view?=
=?UTF-8?q?=3Fbug=5Fid=3D1160863849001031387?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Events/TrackUpsertEvent.cs | 5 +++++
.../EventHandlers/TrackUpsertEventHandler.cs | 5 ++---
.../Services/ProvideServices/TrackService.cs | 2 ++
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
index d6fcb03a..c2c2072d 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
@@ -48,4 +48,9 @@ public class TrackUpsertEvent : UpsertTrackInput
/// 原轨迹报文
///
public string? OriginTrackData { get; set; }
+
+ ///
+ /// 操作人
+ ///
+ public string? OperationMan { get; set; }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index e51481e5..ed4b838c 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -8,7 +8,6 @@ using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries;
-using SJZY.UserCenter.HttpApi.Services;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.EventHandlers;
@@ -135,7 +134,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
IsCanDelete = trackContent.IsCanDelete,
OriginTrackContent = @event.OriginTrackContent,
OriginTrackData = @event.OriginTrackData,
- CreateUser = CurrentUserRequest.CurrentUser.Name,
+ CreateUser = @event.OperationMan,
CreateTime = DateTime.Now
};
@@ -146,7 +145,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.TrackTime!.Value;
track.TrackTimeZone = @event.TrackTimeZone!.Value;
- track.UpdateUser = CurrentUserRequest.CurrentUser.Name;
+ track.UpdateUser = @event.OperationMan ?? "系统";
track.UpdateTime = DateTime.Now;
}
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index 3e03dc21..c21e2a34 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -6,6 +6,7 @@ using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries;
+using SJZY.UserCenter.HttpApi.Services;
namespace SJZY.Track.Application.Services.ProvideServices;
@@ -56,6 +57,7 @@ public partial class TrackService : ApplicationService, ITrackService
@event.LatestPushTrackContentId = order.LatestPushTrackContentId;
@event.CustomId = order.CustomId;
@event.IsCompleted = order.IsCompleted;
+ @event.OperationMan = CurrentUserRequest.CurrentUser.Name;
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event);
return true;
}
From 2520955613f8512d9e2793230ac7981ba3e50c33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 10:44:05 +0800
Subject: [PATCH 24/32] =?UTF-8?q?opt=EF=BC=9A=E9=A2=84=E8=AD=A6=E8=BF=87?=
=?UTF-8?q?=E6=BB=A4=E6=8E=89=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4=E4=B8=8D?=
=?UTF-8?q?=E8=B6=B312=E5=B0=8F=E6=97=B6=E7=9A=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/SJZY.Track.Repository/Repositories/OrderRepository.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
index 3d18de17..bbbdca05 100644
--- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
@@ -62,6 +62,7 @@ public class OrderRepository : BasicRepository, IOrderRepository, I
return await Context.Queryable()
.LeftJoin((a, b) => a.SubSystemId == b.SubSystemId && a.CustomId == b.CustomId)
.Where((a, b) => !b.IsCompleted && b.QuestionType != errorType)
+ .Where("a.CreateTime < DATE_SUB(now(),INTERVAL 12 hour)") // 过滤掉创建时间不足12小时的
.Select((a, b) => new OrderEntity
{
Id = b.Id,
From 4d9fb2bbfb7df49d7d4cebf64645e48ada509b93 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 11:06:11 +0800
Subject: [PATCH 25/32] =?UTF-8?q?opt=EF=BC=9A=E5=88=B7=E6=96=B0=E6=9C=80?=
=?UTF-8?q?=E5=B0=8FCD=E8=AE=BE=E4=B8=BA60min?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ProvideServices/TrackPullService.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
index f404b238..f5856f91 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs
@@ -104,6 +104,7 @@ public class TrackPullService : ApplicationService
group.Key.SubSystemId, group.Key.OrderType)));
}
+ if (config.PullInterval < 60) config.PullInterval = 60;
await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, orders.Count);
}
From 9d6937c059ec605f087379ed8af8f3f14adf516e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 11:06:52 +0800
Subject: [PATCH 26/32] =?UTF-8?q?opt:=20cap=E9=87=8D=E5=A4=8D=E6=B6=88?=
=?UTF-8?q?=E8=B4=B9CD=E8=AE=BE=E4=B8=BA1h?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/SJZY.Track.Application/EventHandlers/CAPFilter.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
index fbee07b0..8bea9494 100644
--- a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
+++ b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
@@ -32,7 +32,7 @@ public class CAPFilter : SubscribeFilter
throw new BusinessException(_ERROR_CODE, $"检测到重复消费,消费参数:{argumentJsonStr}");
RedisHelper.Client.Set($"CapExcuteFilter:{hash}", 60 * 10,
- TimeSpan.FromDays(1).Seconds); // 1天内不允许一模一样的参数重复消费
+ TimeSpan.FromHours(1).Seconds); // 1h内不允许一模一样的参数重复消费
}
}
From 1334637bf253f0240bbb652f3a6a15ec4c19ba91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 14:52:18 +0800
Subject: [PATCH 27/32] =?UTF-8?q?fix=20=E6=89=8B=E5=8A=A8=E6=8E=A8?=
=?UTF-8?q?=E9=80=81bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Repositories/TrackDetailsRepository.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index fa370591..598ab7ba 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -93,10 +93,12 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(x => x
.Source(s => s.Includes(fd => fd
+ .Field(f => f.OrderId)
.Field(f => f.OrderNo)
.Field(f => f.TrackStatus)
.Field(f => f.TrackCode)
.Field(f => f.TrackContent)
+ .Field(f => f.TrackContentId)
.Field(f => f.TrackPlace)
.Field(f => f.TrackTime)
.Field(f => f.TrackTimeZone)
From 0f495477768b21106708b4fb4f8232055ca905b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 15:19:13 +0800
Subject: [PATCH 28/32] =?UTF-8?q?opt:=20=E6=8E=A8=E9=80=81=E8=AE=B0?=
=?UTF-8?q?=E5=BD=95=E5=86=97=E4=BD=99orderNo=EF=BC=8CorderType?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Events/TrackPushEvent.cs | 5 +++++
.../EventHandlers/TrackPushEventHandler.cs | 4 +++-
.../EventHandlers/TrackUpsertEventHandler.cs | 1 +
.../ProvideServices/TrackPushService.cs | 20 +++++++++++++++++--
.../ITrackPushRecordsRepository.cs | 2 ++
.../TrackPushRecordIndex.cs | 10 ++++++++++
.../TrackPushRecordsRepository.cs | 14 +++++++++++++
7 files changed, 53 insertions(+), 3 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
index 8434072e..92ce75e1 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackPushEvent.cs
@@ -22,6 +22,11 @@ public class TrackPushEvent
///
public string OrderNo { get; set; } = null!;
+ ///
+ /// 订单类型
+ ///
+ public int OrderType { get; set; }
+
///
/// 轨迹内容id
///
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
index 58ddb13a..a1f9aba4 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs
@@ -44,7 +44,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
var isSuccess = res.Code == InterfaceRelayConst.SuccessCode;
- // 写推送日志
+ // 往es 写推送日志
await _trackPushRecordsRepository.AddAsync(new TrackPushRecordIndex
{
IndexName = $"{GlobalConst.TrackPushRecordsIndex}-{DateTime.Now:yyyy.MM.dd}",
@@ -52,6 +52,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
Message = res.Msg,
OptionType = @event.OptionType.ToString(),
OrderId = @event.OrderId,
+ OrderType = @event.OrderType,
+ OrderNo = @event.OrderNo,
TrackStatus = @event.TrackStatus,
TrackCode = @event.TrackCode,
TrackContent = @event.TrackContent,
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index ed4b838c..e3276d02 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -191,6 +191,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
OptionType = optionType,
ServiceProviderCode = config.ServiceProviderCode,
OrderNo = track.OrderNo,
+ OrderType = track.OrderType,
OrderId = track.OrderId,
TrackContentId = config.TrackContentId,
TrackStatus = track.TrackStatus,
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 85e48c02..272f4c40 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -5,6 +5,7 @@ using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
+using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Enums;
using SJZY.UserCenter.HttpApi.Services;
@@ -22,16 +23,19 @@ public class TrackPushService : ApplicationService
private readonly IOrderRepository _orderRepository;
private readonly ITrackPushCacheService _pushCacheService;
private readonly ICapPublisher _capPublisher;
+ private readonly ITrackPushRecordsRepository _trackPushRecordsRepository;
public TrackPushService(ITrackPushCacheService pushCacheService,
ITrackDetailsRepository trackDetailsRepository
, IOrderRepository orderRepository
- , ICapPublisher capPublisher)
+ , ICapPublisher capPublisher
+ , ITrackPushRecordsRepository trackPushRecordsRepository)
{
_pushCacheService = pushCacheService;
_trackDetailsRepository = trackDetailsRepository;
_orderRepository = orderRepository;
_capPublisher = capPublisher;
+ _trackPushRecordsRepository = trackPushRecordsRepository;
}
///
@@ -47,7 +51,7 @@ public class TrackPushService : ApplicationService
var orders = await _orderRepository.GetListAsync(x =>
x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo), x => new
{
- x.Id, x.OrderNo, x.SubSystemId, x.CustomId
+ x.Id, x.OrderNo, x.OrderType, x.SubSystemId, x.CustomId
});
if (orders.Count == 0)
@@ -81,6 +85,7 @@ public class TrackPushService : ApplicationService
{
ServiceProviderCode = config.ServiceProviderCode,
OrderNo = order.OrderNo,
+ OrderType = order.OrderType,
OrderId = order.Id,
TrackContentId = config.TrackContentId,
TrackStatus = track.TrackStatus,
@@ -130,4 +135,15 @@ public class TrackPushService : ApplicationService
return $"成功将:{orders.Count(x => x.QuestionType == (int)TrackProblemType.Warn)}个订单置为预警";
}
+
+ ///
+ /// 获取轨迹推送记录
+ ///
+ ///
+ ///
+ [HttpGet("GetTrackPushRecords")]
+ public async Task> GetTrackPushRecordsAsync(OrderNoInfo input)
+ {
+ return await _trackPushRecordsRepository.GetTrackPushRecordsAsync(input.OrderNo, input.OrderType);
+ }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
index e8115b13..e776b1f4 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/ITrackPushRecordsRepository.cs
@@ -15,4 +15,6 @@ public interface ITrackPushRecordsRepository
///
///
Task> GetTrackPushRecordsAsync(int orderId);
+
+ Task> GetTrackPushRecordsAsync(string inputOrderNo, int inputOrderType);
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
index 0d178b45..6efa70b5 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushRecordIndex.cs
@@ -17,6 +17,16 @@ public class TrackPushRecordIndex : IdBaseIndex
///
public int OrderId { get; set; }
+ ///
+ /// 订单号
+ ///
+ public string OrderNo { get; set; } = null!;
+
+ ///
+ /// 订单类型(主数据枚举TrackOrderType)
+ ///
+ public int OrderType { get; set; }
+
///
/// 接口通请求Id
///
diff --git a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
index b537adb1..3847d786 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackPushRecordsRepository.cs
@@ -40,4 +40,18 @@ public class TrackPushRecordsRepository : ElasticSearchContextAbstract> GetTrackPushRecordsAsync(string orderNo, int orderType)
+ {
+ var data = await Context.SearchAsync(x => x
+ .Index(GlobalConst.TrackPushRecordsIndex)
+ .Query(q =>
+ q.Term(t => t.OrderNo.Suffix("keyword"), orderNo)
+ && q.Term(f => f.OrderType, orderType)
+ )
+ .Size(1000)
+ .Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending)));
+
+ return data.Documents.ToList();
+ }
}
\ No newline at end of file
From f85bc95e190bf7d01cb763dd6c858246d2a99281 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 15:20:00 +0800
Subject: [PATCH 29/32] =?UTF-8?q?add=EF=BC=9A=E3=80=90=E8=BD=A8=E8=BF=B9?=
=?UTF-8?q?=E6=8E=A8=E9=80=81=E6=98=8E=E7=BB=86=E6=9F=A5=E8=AF=A2=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3-=E5=AF=B9=E5=A4=96=E3=80=91https://www.tapd.cn/608638?=
=?UTF-8?q?49/prong/tasks/view/1160863849001017119?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ProvideServices/TrackPushService.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 272f4c40..78611294 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -141,7 +141,7 @@ public class TrackPushService : ApplicationService
///
///
///
- [HttpGet("GetTrackPushRecords")]
+ [HttpGet("Track/GetTrackPushRecords")]
public async Task> GetTrackPushRecordsAsync(OrderNoInfo input)
{
return await _trackPushRecordsRepository.GetTrackPushRecordsAsync(input.OrderNo, input.OrderType);
From b232d96634d65b060dc98b55e9b96086d5466cc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 17:31:50 +0800
Subject: [PATCH 30/32] =?UTF-8?q?opt=EF=BC=9A=E4=BC=98=E5=8C=96=E8=BD=A8?=
=?UTF-8?q?=E8=BF=B9upsert=E6=B5=81=E7=A8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Events/TrackUpsertEvent.cs | 51 +++++++++---
.../SJZY.Track.Application.Contract.csproj | 2 +-
.../EventHandlers/CAPFilter.cs | 11 ++-
.../EventHandlers/TrackRefreshEventHandler.cs | 10 +--
.../EventHandlers/TrackUpsertEventHandler.cs | 78 +++++++++++++------
.../Services/ProvideServices/TrackService.cs | 4 +-
.../ITrackDetailsRepository.cs | 2 +
src/SJZY.Track.Domain/Consts/GlobalConst.cs | 6 ++
.../Repositories/TrackDetailsRepository.cs | 19 +++++
9 files changed, 136 insertions(+), 47 deletions(-)
create mode 100644 src/SJZY.Track.Domain/Consts/GlobalConst.cs
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
index c2c2072d..1215e1e8 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs
@@ -1,14 +1,22 @@
-using SJZY.Track.Application.Contract.Dtos.ProvideServices;
+namespace SJZY.Track.Application.Contract.Events;
-namespace SJZY.Track.Application.Contract.Events;
-
-public class TrackUpsertEvent : UpsertTrackInput
+public class TrackUpsertEvent
{
///
/// 订单id
///
public int OrderId { get; set; }
+ ///
+ /// 订单类型
+ ///
+ public int OrderType { get; set; }
+
+ ///
+ /// 订单号
+ ///
+ public string OrderNo { get; set; } = null!;
+
///
/// 订单是否完成
///
@@ -34,11 +42,6 @@ public class TrackUpsertEvent : UpsertTrackInput
///
public int UpSubSystemId { get; set; }
- ///
- /// 已经处理过的订单
- ///
- public List Visited { get; set; } = new();
-
///
/// 原轨迹内容
///
@@ -53,4 +56,34 @@ public class TrackUpsertEvent : UpsertTrackInput
/// 操作人
///
public string? OperationMan { get; set; }
+
+ ///
+ /// true新增,false更新,null表示刷新引发的新增/更新
+ ///
+ public bool? IsAdd { get; set; }
+
+ ///
+ /// 轨迹内容代码
+ ///
+ public string TrackCode { get; set; } = null!;
+
+ ///
+ /// 轨迹发生地
+ ///
+ public string TrackPlace { get; set; } = null!;
+
+ ///
+ /// 轨迹发生时间
+ ///
+ public DateTime TrackTime { get; set; }
+
+ ///
+ /// 轨迹发生时区
+ ///
+ public float TrackTimeZone { get; set; }
+
+ ///
+ /// 已经处理过的订单
+ ///
+ public List Visited { get; set; } = new();
}
\ No newline at end of file
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 f13ee0b2..13bcd7dd 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.0
+ 1.0.1
True
diff --git a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
index 8bea9494..feaf198f 100644
--- a/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
+++ b/src/SJZY.Track.Application/EventHandlers/CAPFilter.cs
@@ -65,15 +65,15 @@ public class CAPFilter : SubscribeFilter
public override Task OnSubscribeExceptionAsync(ExceptionContext context)
{
context.ExceptionHandled = true;
+ context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
if (context.Exception is BusinessException ex && ex.Code == _ERROR_CODE)
LogHelper.Warn(ex.ToString());
else
- LogHelper.Error(context.Exception.ToString());
+ LogHelper.Error($"cap-msg-id:{messageId}\n{context.Exception}");
context.DeliverMessage.Headers.TryGetValue("sjzy-receive-time", out var receiveTime);
- context.DeliverMessage.Headers.TryGetValue("cap-msg-id", out var messageId);
context.DeliverMessage.Headers.TryGetValue("cap-msg-name", out var receiveName);
context.DeliverMessage.Headers.TryGetValue("sjzy-arguments", out var arguments);
@@ -89,16 +89,15 @@ public class CAPFilter : SubscribeFilter
var parsedDate = DateTime.ParseExact(receiveTime, "yyyy-MM-dd HH:mm:ss fff", CultureInfo.InvariantCulture);
var useTime = DateTime.Now - parsedDate;
- var log = $@"
+ if (useTime.Minutes > 20)
+ {
+ var log = $@"
|-消息编号:{messageId}
|-消费者名:{receiveName}
|-跳过执行:{(isFromExecptionFliter ? "是" : "否")}
|-执行时间:{receiveTime}
|-消费耗时:{useTime.Milliseconds}毫秒
|-请求参数:{arguments}";
-
- if (useTime.Minutes > 20)
- {
LogHelper.Error(log);
}
else
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
index be24fbf0..153786a9 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
@@ -158,7 +158,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
}
}
- if (matchedContentConfig is null) return;
+ // if (matchedContentConfig is null) return;
// 轨迹发生地
var trackPlace = paramConfig.TrackPlaceName == null
@@ -167,7 +167,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
if (trackPlace.IsNullOrWhiteSpace())
{
Expression> resultExpression =
- (TrackLocationValue?)matchedContentConfig.TrackPlaceValue switch
+ (TrackLocationValue?)matchedContentConfig?.TrackPlaceValue switch
{
TrackLocationValue.ArrivalPort => x => x.ArrivalPort,
TrackLocationValue.ArriveCity => x => x.ArrivalCity,
@@ -191,10 +191,10 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
: trackToken[paramConfig.TrackTimeZoneName]?.Value();
// 新增/更新轨迹
- trackUpsertEvent.TrackCode = matchedContentConfig.TrackContentCode;
- trackUpsertEvent.TrackPlace = trackPlace ?? "CN";
+ trackUpsertEvent.TrackCode = matchedContentConfig?.TrackContentCode ?? GlobalConst.EmptyString;
+ trackUpsertEvent.TrackPlace = trackPlace ?? GlobalConst.EmptyString;
trackUpsertEvent.TrackTime = trackTime ?? DateTime.Now;
- trackUpsertEvent.TrackTimeZone = trackTimeZone ?? matchedContentConfig.TrackTimeZoneValue ?? 8;
+ trackUpsertEvent.TrackTimeZone = trackTimeZone ?? matchedContentConfig?.TrackTimeZoneValue ?? 8;
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, trackUpsertEvent);
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
index e3276d02..eab6361e 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs
@@ -40,6 +40,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
return;
}
+ var isUnProcessed = false;
// 不同子系统需要做内容映射
if (@event.UpSubSystemId != 0 && @event.UpSubSystemId != @event.SubSystemId)
{
@@ -56,13 +57,22 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
@event.TrackCode = mapCode;
}
- var track = await _trackDetailsRepository.GetFirstOrDefaultAsync(@event.OrderId, @event.TrackCode);
- if (track == null && !@event.IsAdd) return;
- if (track != null && @event.IsAdd) return;
+ var track = @event.TrackCode == GlobalConst.EmptyString
+ ? await _trackDetailsRepository.GetFirstOrDefaultAsync(@event.OrderId, @event.TrackTime)
+ : await _trackDetailsRepository.GetFirstOrDefaultAsync(@event.OrderId, @event.TrackCode);
+
+ if (@event.TrackCode == GlobalConst.EmptyString && track != null) return; // 无法映射的轨迹只做新增
+
+ if (@event.IsAdd != null) // 手动操作需要做区分
+ {
+ if (track == null && !@event.IsAdd!.Value) return; // 不存在不让改
+ if (track != null && @event.IsAdd!.Value) return; // 存在不让创建
+ }
// step1、upsert es轨迹
track = await UpsertTrackAsync(track, @event);
- if (track == null) return; // 模板没配该轨迹代码,无法入库
+
+ if (track == null || @event.TrackCode == GlobalConst.EmptyString) return; // 模板没配该轨迹代码,不再继续
// step2、触发轨迹推送事件(异步)
await HandleTrackPushAsync(@event, track);
@@ -107,44 +117,64 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
{
if (track == default)
{
- //todo:可以优化
- // 根据轨迹code在订单模板内容中寻找匹配的
- var trackContent = await _provideQueries.MatchTrackContentAsync(@event.OrderId, @event.TrackCode);
- if (trackContent == default)
- {
- // 订单所绑定的模板,没有一条内容可以匹配发生的轨迹
- return null;
- }
-
track = new TrackDetailsIndex
{
IndexName = $"{GlobalConst.TrackIndex}-{DateTime.Now:yyyy.MM.dd}",
OrderId = @event.OrderId,
OrderNo = @event.OrderNo,
OrderType = @event.OrderType,
- TrackStatus = trackContent.Status,
TrackCode = @event.TrackCode,
- TrackContent = trackContent.Content,
- TrackContentId = trackContent.Id,
- IsCompleted = trackContent.IsCompleted,
- TrackEnContent = trackContent.EnContent,
TrackPlace = @event.TrackPlace,
- TrackTime = @event.TrackTime!.Value,
- TrackTimeZone = @event.TrackTimeZone!.Value,
- IsCanDelete = trackContent.IsCanDelete,
+ TrackTime = @event.TrackTime,
+ TrackTimeZone = @event.TrackTimeZone,
+ IsCanDelete = false,
OriginTrackContent = @event.OriginTrackContent,
OriginTrackData = @event.OriginTrackData,
CreateUser = @event.OperationMan,
CreateTime = DateTime.Now
};
- track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
+ // tips:刷新到无法匹配内容的轨迹引起的插入
+ if (@event.TrackCode == GlobalConst.EmptyString)
+ {
+ track.TrackStatus = GlobalConst.EmptyString;
+ track.TrackContent = GlobalConst.EmptyString;
+ track.TrackContentId = 0;
+ track.IsCompleted = false;
+ track.TrackEnContent = GlobalConst.EmptyString;
+ }
+ else
+ {
+ //todo:可以优化
+ // 根据轨迹code在订单模板内容中寻找匹配的
+ var trackContent = await _provideQueries.MatchTrackContentAsync(@event.OrderId, @event.TrackCode);
+ if (trackContent == default)
+ {
+ // 订单所绑定的模板,没有一条内容可以匹配发生的轨迹
+ return null;
+ }
+
+ track = new TrackDetailsIndex
+ {
+ TrackStatus = trackContent.Status,
+ TrackContent = trackContent.Content,
+ TrackContentId = trackContent.Id,
+ IsCompleted = trackContent.IsCompleted,
+ TrackEnContent = trackContent.EnContent,
+ IsCanDelete = trackContent.IsCanDelete
+ };
+
+ track.ZeroTrackTime = track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
+ }
}
else
{
+ // tips:刷新到无法匹配内容的轨迹 相同的发生时间不做更新处理
+ if (@event.TrackCode == GlobalConst.EmptyString) return track;
+
track.TrackPlace = @event.TrackPlace;
- track.TrackTime = @event.TrackTime!.Value;
- track.TrackTimeZone = @event.TrackTimeZone!.Value;
+ track.TrackTime = @event.TrackTime;
+ track.TrackTimeZone = @event.TrackTimeZone;
track.UpdateUser = @event.OperationMan ?? "系统";
track.UpdateTime = DateTime.Now;
}
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index c21e2a34..77199263 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -91,8 +91,8 @@ public partial class TrackService : ApplicationService, ITrackService
IsAdd = input.IsAdd,
TrackCode = input.TrackCode,
TrackPlace = input.TrackPlace,
- TrackTime = input.TrackTime,
- TrackTimeZone = input.TrackTimeZone,
+ TrackTime = input.TrackTime!.Value,
+ TrackTimeZone = input.TrackTimeZone!.Value,
OrderType = input.OrderType,
OrderNo = order.OrderNo,
OrderId = order.Id,
diff --git a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
index acd0ed4e..c78d9b2f 100644
--- a/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/TrackDetailsAggregate/ITrackDetailsRepository.cs
@@ -6,6 +6,8 @@ public interface ITrackDetailsRepository
{
Task GetFirstOrDefaultAsync(int orderId, string trackCode);
+ Task GetFirstOrDefaultAsync(int orderId, DateTime trackTime);
+
Task UpsertAsync(TrackDetailsIndex index);
Task> GetListAsync(int orderType, List orderNos);
diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.cs
new file mode 100644
index 00000000..a7167357
--- /dev/null
+++ b/src/SJZY.Track.Domain/Consts/GlobalConst.cs
@@ -0,0 +1,6 @@
+namespace SJZY.Track.Domain.Consts;
+
+public partial class GlobalConst
+{
+ public const string EmptyString = "--";
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index 598ab7ba..b39652de 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -32,6 +32,25 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract GetFirstOrDefaultAsync(int orderId, DateTime trackTime)
+ {
+ var r = await Context.SearchAsync(s => s
+ .Source()
+ .Query(q =>
+ q.Term(f => f.OrderId, orderId)
+ && q.Term(f => f.TrackTime, trackTime)
+ )
+ );
+
+ var res = r.Documents.FirstOrDefault();
+ if (res != default && r.Hits.FirstOrDefault() != default)
+ {
+ res.Id = r.Hits.FirstOrDefault()!.Id;
+ }
+
+ return res;
+ }
+
public async Task UpsertAsync(TrackDetailsIndex index)
{
if (index.Id.IsNullOrWhiteSpace())
From 7b20e7a9394bd226b08a9f17e6da4ccb9879fc55 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=86=9B?= <2357729423@qq.com>
Date: Tue, 26 Mar 2024 17:49:41 +0800
Subject: [PATCH 31/32] =?UTF-8?q?=E5=9B=9E=E9=80=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EventHandlers/TrackRefreshEventHandler.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
index 153786a9..75a991a2 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs
@@ -158,7 +158,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe
}
}
- // if (matchedContentConfig is null) return;
+ if (matchedContentConfig is null) return;
// 轨迹发生地
var trackPlace = paramConfig.TrackPlaceName == null
From a663894bcc532f7a305dd7d4af8d7a6bbb4a123b 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 09:19:45 +0800
Subject: [PATCH 32/32] =?UTF-8?q?fix=EF=BC=9A=E3=80=90=E3=80=90=E8=BD=A8?=
=?UTF-8?q?=E8=BF=B9=E8=AE=A2=E5=8D=95=E3=80=91=E6=89=B9=E9=87=8F=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E8=BD=A8=E8=BF=B9=E6=98=8E=E7=BB=86=EF=BC=8C=E5=88=9B?=
=?UTF-8?q?=E5=BB=BA=E4=BA=BA=E5=BC=82=E5=B8=B8=E4=B8=BA=E7=A9=BA=E3=80=91?=
=?UTF-8?q?https://www.tapd.cn/60863849/bugtrace/bugs/view=3Fbug=5Fid=3D11?=
=?UTF-8?q?60863849001031517?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Events/TrackDeleteEvent.cs | 5 +++++
.../Services/ProvideServices/TrackService.cs | 8 ++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs
index eccbe955..d5286726 100644
--- a/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs
+++ b/src/SJZY.Track.Application.Contract/Events/TrackDeleteEvent.cs
@@ -22,6 +22,11 @@ public class TrackDeleteEvent
///
public int UpSubSystemId { get; set; }
+ ///
+ /// 操作人
+ ///
+ public string? OperationMan { get; set; }
+
///
/// 已经处理过的订单
///
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
index 77199263..72fe2f20 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs
@@ -80,7 +80,7 @@ public partial class TrackService : ApplicationService, ITrackService
var orders = await _orderRepository.GetListAsync(x =>
x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo), x => new
{
- x.Id, x.OrderNo, x.SubSystemId, x.LatestPushTrackContentId, x.CustomId
+ x.Id, x.OrderNo, x.SubSystemId, x.LatestPushTrackContentId, x.CustomId, x.IsCompleted
});
foreach (var order in orders)
@@ -98,7 +98,9 @@ public partial class TrackService : ApplicationService, ITrackService
OrderId = order.Id,
SubSystemId = order.SubSystemId,
LatestPushTrackContentId = order.LatestPushTrackContentId,
- CustomId = order.CustomId
+ CustomId = order.CustomId,
+ IsCompleted = order.IsCompleted,
+ OperationMan = CurrentUserRequest.CurrentUser.Name
};
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event);
}
@@ -138,6 +140,7 @@ public partial class TrackService : ApplicationService, ITrackService
OrderId = order.Id,
TrackCodes = codes.Select(x => x.TrackCode).ToList(),
SubSystemId = order.SubSystemId,
+ OperationMan = CurrentUserRequest.CurrentUser.Name
};
await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event);
@@ -177,6 +180,7 @@ public partial class TrackService : ApplicationService, ITrackService
OrderId = group.Key,
TrackCodes = codes.Select(x => x.TrackCode).ToList(),
SubSystemId = orders.First(x => x.Id == group.Key).SubSystemId,
+ OperationMan = CurrentUserRequest.CurrentUser.Name
};
await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event);
}