【 3. 轨迹订单操作列增加一个按钮:日志,点击弹窗日志列表】

https://www.tapd.cn/60863849/prong/tasks/view/1160863849001027887
This commit is contained in:
xiaolipro 2024-09-05 18:00:33 +08:00
parent b919300524
commit 8b60235d9f
8 changed files with 163 additions and 5 deletions

View File

@ -1,9 +1,11 @@
using DotNetCore.CAP;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Queries;
using SJZY.UserCenter.HttpApi.Services;
namespace SJZY.Track.Application.Services.ProvideServices;
@ -14,12 +16,15 @@ namespace SJZY.Track.Application.Services.ProvideServices;
[Route("/ProviderService")]
public partial class OrderService : ApplicationService, IOrderService
{
private readonly IOrderOperationRecordRepository _orderOperationRecordRepository;
private readonly IOrderRepository _orderRepository;
public OrderService(IOrderRepository orderRepository, IBasicQuery<OrderLinkEntity> orderLinkQuery,
ICapPublisher capPublisher, ITrackDetailsRepository trackDetailsRepository)
ICapPublisher capPublisher, ITrackDetailsRepository trackDetailsRepository,
IOrderOperationRecordRepository orderOperationRecordRepository)
{
_orderRepository = orderRepository;
_orderOperationRecordRepository = orderOperationRecordRepository;
_trackDetailsRepository = trackDetailsRepository;
_capPublisher = capPublisher;
_orderLinkQuery = orderLinkQuery;
@ -43,6 +48,16 @@ public partial class OrderService : ApplicationService, IOrderService
// 订单已存在则视为更新
await UpdateOrderAsync(input, order);
var index = new OrderOperationRecordIndex
{
OrderId = order.Id,
OrderNo = input.OrderNo,
OptionType = OptionType.修改.ToString(),
Content = input.ToJson(),
};
_ = _orderOperationRecordRepository.AddAsync(index);
return new UnifyResultDto<IdBaseDto>(true, new IdBaseDto
{
Id = order.Id
@ -54,6 +69,18 @@ public partial class OrderService : ApplicationService, IOrderService
order.OrderFlights = ObjectMapper.Map<List<OrderFlightInfo>, List<OrderFlightEntity>>(input.FlightInfos);
var orderId = await _orderRepository.CreateOrderAsync(order);
var indexForAdd = new OrderOperationRecordIndex
{
OrderId = orderId,
OrderNo = input.OrderNo,
OptionType = OptionType.新增.ToString(),
Content = input.ToJson(),
CreateUserId = CurrentUserRequest.CurrentUser.UserId,
CreateTime = DateTime.Now
};
_ = _orderOperationRecordRepository.AddAsync(indexForAdd);
return new UnifyResultDto<IdBaseDto>(true, new IdBaseDto
{
Id = orderId

View File

@ -15,6 +15,7 @@ namespace SJZY.Track.Application.Services.TrackOrders;
[Route("/Track/Order")]
public class TrackOrderService : ApplicationService
{
private readonly IOrderOperationRecordRepository _orderOperationRecordRepository;
private readonly IOrderRepository _orderRepository;
private readonly ITrackContentRepository _trackContentRepository;
private readonly ITrackDetailsRepository _trackDetailsRepository;
@ -26,14 +27,15 @@ public class TrackOrderService : ApplicationService
ITrackOrderQueries trackOrderQueries,
ITrackDetailsRepository trackDetailsRepository,
ITrackContentRepository trackContentRepository,
ITrackPushRecordsRepository trackPushRecordsRepository
)
ITrackPushRecordsRepository trackPushRecordsRepository,
IOrderOperationRecordRepository orderOperationRecordRepository)
{
_orderRepository = orderRepository;
_trackOrderQueries = trackOrderQueries;
_trackDetailsRepository = trackDetailsRepository;
_trackContentRepository = trackContentRepository;
_trackPushRecordsRepository = trackPushRecordsRepository;
_orderOperationRecordRepository = orderOperationRecordRepository;
}
#region 轨迹订单列表
@ -194,4 +196,17 @@ public class TrackOrderService : ApplicationService
await _trackDetailsRepository.DeleteTrackByIdAsync(trackId, track.IndexName);
return true;
}
/// <summary>
/// 根据订单id查询订单操作记录
/// </summary>
/// <param name="orderId">订单id</param>
/// <returns></returns>
[HttpGet("GetOrderOperationsById")]
public async Task<List<OrderOperationRecordIndex>> GetOrderOperationsByIdAsync(int orderId)
{
// todo:分页?dto?
return await _orderOperationRecordRepository.GetOrderOperationsByIdAsync(orderId);
;
}
}

View File

@ -4,7 +4,7 @@ using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Domain.Aggregates.ForewarningAggregate;
[ElasticsearchType(RelationName = GlobalConst.TrackWarningRecordsIndex)]
[ElasticsearchType(RelationName = GlobalConst.TrackWarningRecordIndex)]
public class WarningRecordIndex : IdBaseIndex
{
/// <summary>

View File

@ -0,0 +1,18 @@
namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
public interface IOrderOperationRecordRepository
{
/// <summary>
/// 添加订单操作记录
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
Task AddAsync(OrderOperationRecordIndex index);
/// <summary>
/// 获取订单操作记录
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task<List<OrderOperationRecordIndex>> GetOrderOperationsByIdAsync(int orderId);
}

View File

@ -0,0 +1,47 @@
using Nest;
using SJZY.Expand.ElasticSearch;
using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Domain.Aggregates.OrderAggregate;
/// <summary>
/// 订单操作记录
/// </summary>
[ElasticsearchType(RelationName = GlobalConst.OrderOperationRecordIndex)]
public class OrderOperationRecordIndex : IdBaseIndex
{
/// <summary>
/// 索引名称
/// </summary>
public string IndexName { get; set; } = null!;
/// <summary>
/// 订单Id
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; } = null!;
/// <summary>
/// 操作类型
/// </summary>
public string OptionType { get; set; } = null!;
/// <summary>
/// 前期报文(json)
/// </summary>
public string Content { get; set; } = null!;
/// <summary>
/// 创建人
/// </summary>
public int CreateUserId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
}

View File

@ -15,5 +15,10 @@ public partial class GlobalConst
/// <summary>
/// 预警记录 es索引名称(模板)
/// </summary>
public const string TrackWarningRecordsIndex = "sjzy_track_warning_records";
public const string TrackWarningRecordIndex = "sjzy_track_warning_records";
/// <summary>
/// 订单操作记录 es索引名称(模板)
/// </summary>
public const string OrderOperationRecordIndex = "sjzy_track_order_operation_records";
}

View File

@ -6,6 +6,7 @@ public partial class GlobalConst
public const string EmptyString = "--";
public const int ChunkSize = 100;
public const int SafelyLimit = 10000;
public const int NormalLimit = 10000;
public const float NoneTrackTimeZone = 99999;
}

View File

@ -0,0 +1,45 @@
using Nest;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Repository.Repositories;
public class OrderOperationRecordRepository : ElasticSearchContextAbstract<TrackDetailsIndex>,
IOrderOperationRecordRepository,
ITransientDependency
{
public OrderOperationRecordRepository(ConnectionFactory connectionFactory) : base(connectionFactory)
{
}
public async Task AddAsync(OrderOperationRecordIndex index)
{
index.IndexName = $"{GlobalConst.OrderOperationRecordIndex}-{DateTime.Now:yyyy.MM.dd}";
index.CreateTime = DateTime.Now;
// 按天写入es
var r = await Context.IndexAsync(index, request => request
.Index(index.IndexName)
);
if (!r.IsValid)
{
LogHelper.Error($"轨迹推送记录写入es失败,原因:{r.DebugInformation}。");
}
}
public async Task<List<OrderOperationRecordIndex>> GetOrderOperationsByIdAsync(int orderId)
{
var data = await Context.SearchAsync<OrderOperationRecordIndex>(x => x
.Index(GlobalConst.TrackPushRecordsIndex)
.Query(q =>
q.Term(t => t.OrderId, orderId)
)
.Size(GlobalConst.NormalLimit)
.Sort(s => s.Field(f => f.CreateTime, SortOrder.Descending)));
return data.Documents.ToList();
}
}