Merge branch 'S02-轨迹中台第二部分' into S03-轨迹中台
This commit is contained in:
commit
44673e2f5a
@ -6,7 +6,6 @@ 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;
|
||||
|
||||
namespace SJZY.Track.Application.Services.ProvideServices;
|
||||
@ -97,20 +96,9 @@ public class TrackPushService : ApplicationService
|
||||
[HttpPost("Track/PushWarnForTask")]
|
||||
public async Task<string> PushWarnForTaskAsync()
|
||||
{
|
||||
var orders = await _orderRepository.GetPushWarnOrdersAsync();
|
||||
|
||||
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.Count(x => x.QuestionType == (int)TrackProblemType.Warn)}个订单置为预警";
|
||||
// todo:订单数据上来后一次性update是否会引发长时间X独占?
|
||||
var count = await _orderRepository.PushWarnOrdersAsync();
|
||||
return $"本次预警扫描了:{count}个订单";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -26,10 +26,10 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
|
||||
Task DeleteOrderAsync(int orderId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取推送预警单
|
||||
/// 更新推送预警单
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<OrderEntity>> GetPushWarnOrdersAsync();
|
||||
Task<int> PushWarnOrdersAsync();
|
||||
|
||||
#region 订单关联
|
||||
|
||||
|
||||
@ -1,8 +1,6 @@
|
||||
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;
|
||||
|
||||
@ -55,21 +53,16 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
||||
tran.Complete();
|
||||
}
|
||||
|
||||
public async Task<List<OrderEntity>> GetPushWarnOrdersAsync()
|
||||
public async Task<int> PushWarnOrdersAsync()
|
||||
{
|
||||
var errorType = (int)TrackProblemType.Error;
|
||||
|
||||
return await Context.Queryable<TrackPushConfigEntity>()
|
||||
.LeftJoin<OrderEntity>((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,
|
||||
QuestionType = b.QuestionType,
|
||||
LatestPushTime = b.LatestPushTime
|
||||
})
|
||||
.ToListAsync();
|
||||
return await Context.Ado.ExecuteCommandAsync(@"UPDATE `t_track_push_config` `a`
|
||||
LEFT JOIN `t_order` `b` ON `a`.`SubSystemId` = `b`.`SubSystemId` AND `a`.`CustomId` = `b`.`CustomId`
|
||||
SET `b`.`QuestionType` = CASE
|
||||
WHEN `b`.`LatestPushTime` IS NULL THEN 2
|
||||
WHEN `b`.`LatestPushTime` < DATE_SUB(NOW(), INTERVAL 12 HOUR) THEN 2
|
||||
ELSE 0 END
|
||||
WHERE `b`.`IsCompleted` = 0 AND `b`.`QuestionType` != 1 AND `b`.`CreateTime` < DATE_SUB(NOW(), INTERVAL 12 HOUR)
|
||||
AND `a`.`IsDeleted` = 0 AND `b`.`IsDeleted` = 0;");
|
||||
}
|
||||
|
||||
#region 订单关联
|
||||
|
||||
Loading…
Reference in New Issue
Block a user