add:为所有对外接口加上子系统参数

This commit is contained in:
xiaolipro 2024-09-07 10:41:53 +08:00
parent 42bae65d38
commit 8bf76305fe
38 changed files with 169 additions and 203 deletions

View File

@ -8,5 +8,6 @@ public class BatchDeleteTrackInput : OrderNosInfo
/// 轨迹code,必填 /// 轨迹code,必填
/// </summary> /// </summary>
[Required] [Required]
[MaxLength(500)]
public List<string> TrackCodes { get; set; } = new(); public List<string> TrackCodes { get; set; } = new();
} }

View File

@ -27,12 +27,12 @@ public class BatchUpsertTrackInput : OrderNosInfo
/// 轨迹发生时间 /// 轨迹发生时间
/// </summary> /// </summary>
[Required] [Required]
public DateTime? TrackTime { get; set; } public DateTime TrackTime { get; set; }
/// <summary> /// <summary>
/// 轨迹发生时区 /// 轨迹发生时区
/// </summary> /// </summary>
[Required] [Required]
[Range(-12, 12)] [Range(-12, 12)]
public float? TrackTimeZone { get; set; } public float TrackTimeZone { get; set; }
} }

View File

@ -4,6 +4,13 @@ namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
public class LinkOrderInput public class LinkOrderInput
{ {
/// <summary>
/// 子系统id
/// </summary>
[Required]
[Range(1, int.MaxValue)]
public int SubSystemId { get; set; }
/// <summary> /// <summary>
/// false解绑,true关联 /// false解绑,true关联
/// </summary> /// </summary>

View File

@ -49,5 +49,6 @@ public class OrderNosInfo
/// 订单号 /// 订单号
/// </summary> /// </summary>
[Required] [Required]
[MaxLength(500)]
public List<string> OrderNos { get; set; } = new(); public List<string> OrderNos { get; set; } = new();
} }

View File

@ -3,7 +3,6 @@ using SJZY.Expand.ABP.Core;
using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Application.CAP; namespace SJZY.Track.Application.CAP;

View File

@ -3,7 +3,6 @@ using Microsoft.Extensions.Logging;
using SJZY.Expand.ABP.Core; using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Consts;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.CAP.EventHandlers; namespace SJZY.Track.Application.CAP.EventHandlers;

View File

@ -3,7 +3,6 @@ using SJZY.Track.Application.Contract.Dtos.Forewarning;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;

View File

@ -4,7 +4,6 @@ using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -29,16 +28,16 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
[CapSubscribe(GlobalConst.TrackDeleteSubscribe, Group = GlobalConst.TrackDeleteSubscribe)] [CapSubscribe(GlobalConst.TrackDeleteSubscribe, Group = GlobalConst.TrackDeleteSubscribe)]
public async Task ConsumerAsync(TrackDeleteEvent @event) public async Task ConsumerAsync(TrackDeleteEvent @event)
{ {
var dup = @event.Visited.Intersect(@event.OrderIds).ToArray(); if (!CanDelete(@event)) return;
if (dup.Any())
{
LogHelper.Warn($"删除轨迹时,发现循环依赖:{dup.JoinAsString(",")}", true);
return;
}
await DeleteTrackAsync(@event); await DeleteTrackAsync(@event);
// 根据订单关联关系异步向下刷(异步) // 根据订单关联关系异步向下刷(异步)
await DownByOrderLink(@event);
}
private async Task DownByOrderLink(TrackDeleteEvent @event)
{
var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(@event.OrderIds); var linkedOrders = await _orderRepository.GetLinkedOrdersAsync(@event.OrderIds);
foreach (var orderId in @event.OrderIds) foreach (var orderId in @event.OrderIds)
{ {
@ -82,6 +81,26 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
} }
} }
private bool CanDelete(TrackDeleteEvent @event)
{
// 系统创建的轨迹不允许删除
if (@event.Visited.IsNullOrEmpty() && @event.OperationMan == GlobalConst.SystemUser)
{
LogHelper.Warn($"系统创建的轨迹不允许被删除:{@event}", true);
return false;
}
// 订单循环关联检测
var dup = @event.Visited.Intersect(@event.OrderIds).ToArray();
if (!dup.Any())
{
return false;
}
LogHelper.Warn($"删除轨迹时,发现循环依赖:{dup.JoinAsString(",")}", true);
return false;
}
private async Task DeleteTrackAsync(TrackDeleteEvent @event) private async Task DeleteTrackAsync(TrackDeleteEvent @event)
{ {
// 删除轨迹(删的是同子系统下的单,所以code是统一的) // 删除轨迹(删的是同子系统下的单,所以code是统一的)

View File

@ -5,7 +5,6 @@ using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Enums;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;

View File

@ -9,7 +9,6 @@ using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Enums;
using SJZY.Track.Share.Enums; using SJZY.Track.Share.Enums;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;

View File

@ -4,7 +4,6 @@ using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using OrderIdentifier = SJZY.Track.Application.Contract.Events.OrderIdentifier; using OrderIdentifier = SJZY.Track.Application.Contract.Events.OrderIdentifier;
@ -134,6 +133,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
{ {
track = new TrackDetailsIndex track = new TrackDetailsIndex
{ {
SubSystemId = @event.SubSystemId,
OrderId = order.OrderId, OrderId = order.OrderId,
OrderNo = order.OrderNo, OrderNo = order.OrderNo,
OrderType = order.OrderType, OrderType = order.OrderType,

View File

@ -1,3 +1,4 @@
global using SJZY.Track.Domain.Consts;
global using Microsoft.AspNetCore.Mvc; global using Microsoft.AspNetCore.Mvc;
global using Microsoft.Extensions.DependencyInjection; global using Microsoft.Extensions.DependencyInjection;
global using SJZY.Expand.ABP.Common.Enums; global using SJZY.Expand.ABP.Common.Enums;

View File

@ -1,7 +1,6 @@
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using SJZY.Expand.ABP.Core; using SJZY.Expand.ABP.Core;
using SJZY.Track.Domain.Aggregates.ForewarningAggregate; using SJZY.Track.Domain.Aggregates.ForewarningAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
namespace SJZY.Track.Application.HostServices; namespace SJZY.Track.Application.HostServices;

View File

@ -16,7 +16,6 @@ using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Enums; using SJZY.Track.Domain.Enums;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -306,6 +305,7 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
var track = new TrackDetailsIndex var track = new TrackDetailsIndex
{ {
IndexName = $"{GlobalConst.TrackIndex}-{DateTime.Now:yyyy.MM.dd}", IndexName = $"{GlobalConst.TrackIndex}-{DateTime.Now:yyyy.MM.dd}",
SubSystemId = context.SubSystemId,
OrderId = context.OrderId, OrderId = context.OrderId,
OrderType = context.OrderType, OrderType = context.OrderType,
OrderNo = context.OrderNo, OrderNo = context.OrderNo,

View File

@ -3,7 +3,6 @@ using SJZY.Expand.ABP.Core;
using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Domain.Aggregates.ForewarningAggregate; using SJZY.Track.Domain.Aggregates.ForewarningAggregate;
using SJZY.Track.Domain.Aggregates.KPIAreaAggregate; using SJZY.Track.Domain.Aggregates.KPIAreaAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;

View File

@ -4,7 +4,6 @@ using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Dtos.Forewarning; using SJZY.Track.Application.Contract.Dtos.Forewarning;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.ForewarningAggregate; using SJZY.Track.Domain.Aggregates.ForewarningAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Forewarning; using SJZY.Track.Domain.Dtos.Forewarning;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;

View File

@ -1,6 +1,5 @@
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.KPIAreaAggregate; using SJZY.Track.Domain.Aggregates.KPIAreaAggregate;
using SJZY.Track.Domain.Consts;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.ForewarningServices; namespace SJZY.Track.Application.Services.ForewarningServices;

View File

@ -3,7 +3,6 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
namespace SJZY.Track.Application.Services.ProvideServices; namespace SJZY.Track.Application.Services.ProvideServices;
@ -26,19 +25,15 @@ public partial class OrderService
[HttpPost("Order/Link")] [HttpPost("Order/Link")]
public async Task<UnifyResultDto> LinkOrderAsync(LinkOrderInput input) public async Task<UnifyResultDto> LinkOrderAsync(LinkOrderInput input)
{ {
var order = await _orderRepository.GetFirstAsync(x => var orderId = await _orderRepository.GetFirstAsync(x =>
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo,
x => new x => x.Id);
{ if (orderId == default)
x.Id,
x.SubSystemId
});
if (order == default)
{ {
throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); throw new BusinessException(message: $"订单:{input.OrderNo}不存在");
} }
//tips:循环关联问题再消费时解决 // tips:循环关联问题再消费时解决
if (input.OrderType == input.LinkOrderType) if (input.OrderType == input.LinkOrderType)
{ {
throw new BusinessException(message: "不能同级关联"); throw new BusinessException(message: "不能同级关联");
@ -51,11 +46,16 @@ public partial class OrderService
.Where(x => !x.IsNullOrWhiteSpace() && x != input.OrderNo) .Where(x => !x.IsNullOrWhiteSpace() && x != input.OrderNo)
.Distinct().ToList(); .Distinct().ToList();
// 解绑 if (!input.IsLink)
if (!input.IsLink) return await UnLinkOrderAsync(input); {
// 解绑
// 关联订单 await UnLinkOrderAsync(input);
await DoLinkOrderAsync(input, order.Id); }
else
{
// 关联订单
await DoLinkOrderAsync(input, orderId);
}
return new UnifyResultDto(true, true); return new UnifyResultDto(true, true);
} }
@ -101,7 +101,7 @@ public partial class OrderService
var tracks = await _trackDetailsRepository.GetListAsync(orderId); var tracks = await _trackDetailsRepository.GetListAsync(orderId);
// 补轨迹 // 补轨迹(按子系统、按客户分,同样是为了方便轨迹upsert和push)
foreach (var group in existedOrders.GroupBy(x => new foreach (var group in existedOrders.GroupBy(x => new
{ {
x.SubSystemId, x.SubSystemId,
@ -127,7 +127,7 @@ public partial class OrderService
TrackPlace = track.TrackPlace, TrackPlace = track.TrackPlace,
TrackTime = track.TrackTime, TrackTime = track.TrackTime,
TrackTimeZone = track.TrackTimeZone, TrackTimeZone = track.TrackTimeZone,
IsAdd = true IsAdd = true // 存在则不新增
}; };
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, fillTrackEvent); await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, fillTrackEvent);
@ -135,7 +135,7 @@ public partial class OrderService
} }
} }
private async Task<UnifyResultDto> UnLinkOrderAsync(LinkOrderInput input) private async Task UnLinkOrderAsync(LinkOrderInput input)
{ {
var unLinkIds = await _orderLinkQuery.GetListAsync(x => var unLinkIds = await _orderLinkQuery.GetListAsync(x =>
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo &&
@ -144,7 +144,5 @@ public partial class OrderService
// real del // real del
await _orderRepository.UnLinkByIdsAsync(unLinkIds); await _orderRepository.UnLinkByIdsAsync(unLinkIds);
return new UnifyResultDto(true, true);
} }
} }

View File

@ -4,7 +4,6 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using SJZY.UserCenter.HttpApi.Services; using SJZY.UserCenter.HttpApi.Services;
@ -39,11 +38,9 @@ public partial class OrderService : ApplicationService, IOrderService
[HttpPost("Order/Upsert")] [HttpPost("Order/Upsert")]
public async Task<UnifyResultDto<IdBaseDto>> UpsertAsync(UpsertOrderInput input) public async Task<UnifyResultDto<IdBaseDto>> UpsertAsync(UpsertOrderInput input)
{ {
var subSystemId = input.SubSystemId;
// 校验订单是否已存在,存在则更新 // 校验订单是否已存在,存在则更新
var order = await _orderRepository.GetFirstAsync(x => var order = await _orderRepository.GetFirstAsync(x =>
x.SubSystemId == subSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo); x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo);
if (order != default) if (order != default)
{ {
// 订单已存在则视为更新 // 订单已存在则视为更新
@ -66,7 +63,7 @@ public partial class OrderService : ApplicationService, IOrderService
} }
order = ObjectMapper.Map<UpsertOrderInput, OrderEntity>(input); order = ObjectMapper.Map<UpsertOrderInput, OrderEntity>(input);
order.SubSystemId = subSystemId; order.SubSystemId = input.SubSystemId;
order.OrderFlights = ObjectMapper.Map<List<OrderFlightInfo>, List<OrderFlightEntity>>(input.FlightInfos); order.OrderFlights = ObjectMapper.Map<List<OrderFlightInfo>, List<OrderFlightEntity>>(input.FlightInfos);
order.OrderPullStatus = BuiltOrderPullStatus(input.PullConfigInfos); order.OrderPullStatus = BuiltOrderPullStatus(input.PullConfigInfos);
@ -100,9 +97,9 @@ public partial class OrderService : ApplicationService, IOrderService
[HttpPost("Order/Delete")] [HttpPost("Order/Delete")]
public async Task<UnifyResultDto<IdBaseDto>> DeleteOrderAsync(DeleteOrderInput input) public async Task<UnifyResultDto<IdBaseDto>> DeleteOrderAsync(DeleteOrderInput input)
{ {
var susSystemId = input.SubSystemId;
var orderId = await _orderRepository.GetFirstAsync(x => var orderId = await _orderRepository.GetFirstAsync(x =>
x.SubSystemId == susSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x => x.Id); x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo,
x => x.Id);
if (orderId == default) if (orderId == default)
{ {
throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); throw new BusinessException(message: $"订单:{input.OrderNo}不存在");

View File

@ -8,7 +8,6 @@ using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Application.Helpers; using SJZY.Track.Application.Helpers;
using SJZY.Track.Application.Rabbit; using SJZY.Track.Application.Rabbit;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.Http.Client.DynamicProxying; using Volo.Abp.Http.Client.DynamicProxying;

View File

@ -4,7 +4,6 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.UserCenter.HttpApi.Services; using SJZY.UserCenter.HttpApi.Services;
using Volo.Abp.Http.Client.DynamicProxying; using Volo.Abp.Http.Client.DynamicProxying;
@ -44,11 +43,11 @@ public class TrackPushService : ApplicationService
input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空 input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空
var orders = await _orderRepository.GetArrayAsync(x => var orders = await _orderRepository.GetArrayAsync(x =>
x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo), x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType &&
input.OrderNos.Contains(x.OrderNo),
x => new x => new
{ {
x.Id, x.Id,
x.SubSystemId,
x.CustomId x.CustomId
}); });
@ -58,25 +57,20 @@ public class TrackPushService : ApplicationService
} }
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(); var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync();
if (userInfo.Code != "200" || userInfo.Data is null) if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
{ {
//TODO: log || ex throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo?.Msg}");
} }
var name = userInfo.Data.UserName; var name = userInfo.Data.UserName;
foreach (var group in orders.GroupBy(x => new foreach (var group in orders.GroupBy(x => x.CustomId))
{
x.SubSystemId,
x.CustomId
}))
{ {
var trackPushEvent = new TrackPushEvent var trackPushEvent = new TrackPushEvent
{ {
OptionType = OptionType.新增, OptionType = OptionType.新增,
SubSystemId = group.Key.SubSystemId, SubSystemId = input.SubSystemId,
CustomId = group.Key.CustomId, CustomId = group.Key,
OrderIds = group.Select(x => x.Id).ToArray(), OrderIds = group.Select(x => x.Id).ToArray(),
TrackCode = input.TrackCode, TrackCode = input.TrackCode,
OperationMan = name, OperationMan = name,
@ -114,7 +108,8 @@ public class TrackPushService : ApplicationService
public async Task<List<TrackPushRecordIndex>> GetTrackPushRecordsAsync(OrderNoInfo input) public async Task<List<TrackPushRecordIndex>> GetTrackPushRecordsAsync(OrderNoInfo input)
{ {
var orderId = await _orderRepository.GetFirstAsync(x => var orderId = await _orderRepository.GetFirstAsync(x =>
x.OrderType == input.OrderType && input.OrderNo == x.OrderNo, x => x.Id); x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && input.OrderNo == x.OrderNo,
x => x.Id);
if (orderId == default) if (orderId == default)
{ {
throw new BusinessException(message: "订单不存在"); throw new BusinessException(message: "订单不存在");

View File

@ -1,6 +1,5 @@
using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
namespace SJZY.Track.Application.Services.ProvideServices; namespace SJZY.Track.Application.Services.ProvideServices;
@ -20,17 +19,10 @@ public partial class TrackService
[HttpPost("Track/Query")] [HttpPost("Track/Query")]
public async Task<UnifyResultDto<List<GetTrackOutput>>> QueryAsync(GetTrackInput input) public async Task<UnifyResultDto<List<GetTrackOutput>>> QueryAsync(GetTrackInput input)
{ {
if (input.OrderNos.Count > 500)
{
throw new BusinessException(message: "最多只能查询500单");
}
var subSystemId = input.SubSystemId;
var res = new List<GetTrackOutput>(); var res = new List<GetTrackOutput>();
input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空 input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空
var details = await _trackDetailsRepository.GetListAsync(input.OrderType, input.OrderNos); var details = await _trackDetailsRepository.GetListAsync(input.SubSystemId, input.OrderType, input.OrderNos);
// 是否对外 // 是否对外
var trackCodes = details.Select(x => x.TrackCode) var trackCodes = details.Select(x => x.TrackCode)
@ -42,7 +34,7 @@ public partial class TrackService
if (!trackCodes.IsNullOrEmpty()) if (!trackCodes.IsNullOrEmpty())
{ {
var trackContents = await _trackContentRepository.GetListAsync(x => var trackContents = await _trackContentRepository.GetListAsync(x =>
x.SubSystemId == subSystemId && trackCodes.Contains(x.Code), x.SubSystemId == input.SubSystemId && trackCodes.Contains(x.Code),
x => new x => new
{ {
x.Code, x.Code,

View File

@ -5,7 +5,6 @@ using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.UserCenter.HttpApi.Services; using SJZY.UserCenter.HttpApi.Services;
using Volo.Abp.Http.Client.DynamicProxying; using Volo.Abp.Http.Client.DynamicProxying;
@ -44,13 +43,10 @@ public partial class TrackService : ApplicationService, ITrackService
public async Task<UnifyResultDto> UpsertTrackAsync(UpsertTrackInput input) public async Task<UnifyResultDto> UpsertTrackAsync(UpsertTrackInput input)
{ {
var order = await _orderRepository.GetFirstAsync(x => var order = await _orderRepository.GetFirstAsync(x =>
x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo,
x => new x => new
{ {
x.Id, x.Id,
x.SubSystemId,
x.OrderNo,
x.OrderType,
x.CustomId x.CustomId
}); });
if (order == default) if (order == default)
@ -59,25 +55,25 @@ public partial class TrackService : ApplicationService, ITrackService
} }
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(); var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync();
if (userInfo.Code != "200" || userInfo.Data is null) if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
{ {
//TODO: log || ex //TODO: log || ex
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo?.Msg}"); throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
} }
var name = userInfo.Data.UserName; var name = userInfo.Data.UserName;
// 新增/更新轨迹 // 新增/更新轨迹
var @event = ObjectMapper.Map<UpsertTrackInput, TrackUpsertEvent>(input); var @event = ObjectMapper.Map<UpsertTrackInput, TrackUpsertEvent>(input);
@event.SubSystemId = order.SubSystemId; @event.SubSystemId = input.SubSystemId;
@event.CustomId = order.CustomId; @event.CustomId = order.CustomId;
@event.OrderIdentifiers = new[] @event.OrderIdentifiers = new[]
{ {
new OrderIdentifier new OrderIdentifier
{ {
OrderId = order.Id, OrderId = order.Id,
OrderNo = order.OrderNo, OrderNo = input.OrderNo,
OrderType = order.OrderType, OrderType = input.OrderType,
} }
}; };
@event.OperationMan = name; @event.OperationMan = name;
@ -94,32 +90,19 @@ public partial class TrackService : ApplicationService, ITrackService
[HttpPost("Track/Delete")] [HttpPost("Track/Delete")]
public async Task<UnifyResultDto> DeleteTrackAsync(DeleteTrackInput input) public async Task<UnifyResultDto> DeleteTrackAsync(DeleteTrackInput input)
{ {
var order = await _orderRepository.GetFirstAsync( var orderId = await _orderRepository.GetFirstAsync(
x => x.OrderType == input.OrderType && x.OrderNo == input.OrderNo, x => x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType && x.OrderNo == input.OrderNo,
x => new x => x.Id);
{ if (orderId == default)
x.Id,
x.SubSystemId
});
if (order == default)
{ {
throw new BusinessException(message: $"订单:{input.OrderNo}不存在"); throw new BusinessException(message: $"订单:{input.OrderNo}不存在");
} }
// todo:判断是否可以删除取决于这条轨迹的创建人是否是系统,这里要改
// todo:这里重构吧,加入一个追踪id,然后根据追踪id删除,既可以防止误删,又可以减少查询
var codes = input.TrackCodes;
if (codes.Count == 0)
{
throw new BusinessException(message: "没有一个轨迹代码是可删的");
}
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(); var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync();
if (userInfo.Code != "200" || userInfo.Data is null) if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
{ {
//TODO: log || ex //TODO: log || ex
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo?.Msg}"); throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
} }
var name = userInfo.Data.UserName; var name = userInfo.Data.UserName;
@ -127,9 +110,9 @@ public partial class TrackService : ApplicationService, ITrackService
// 删除轨迹 // 删除轨迹
var @event = new TrackDeleteEvent var @event = new TrackDeleteEvent
{ {
OrderIds = new[] { order.Id }, OrderIds = new[] { orderId },
TrackCodes = codes, TrackCodes = input.TrackCodes,
SubSystemId = order.SubSystemId, SubSystemId = input.SubSystemId,
OperationMan = name OperationMan = name
}; };
await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event); await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event);
@ -146,46 +129,33 @@ public partial class TrackService : ApplicationService, ITrackService
[HttpPost("Track/BatchDelete")] [HttpPost("Track/BatchDelete")]
public async Task<UnifyResultDto> BatchDeleteTrackAsync(BatchDeleteTrackInput input) public async Task<UnifyResultDto> BatchDeleteTrackAsync(BatchDeleteTrackInput input)
{ {
var orders = await _orderRepository.GetListAsync(x => input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空
x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo) var orderIds = await _orderRepository.GetListAsync(x =>
, x => new x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType &&
{ input.OrderNos.Contains(x.OrderNo)
x.Id, , x => x.Id);
x.SubSystemId
}
);
// todo:判断是否可以删除取决于这条轨迹的创建人是否是系统,这里要改 if (orderIds.Count == 0)
var codes = input.TrackCodes;
if (codes.Count == 0)
{ {
throw new BusinessException(message: "没有一个轨迹代码是可删的"); throw new BusinessException(message: "订单一个都不存在");
} }
// 获取用户name
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(); var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync();
if (userInfo.Code != "200" || userInfo.Data is null) if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
{ {
//TODO: log || ex throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo?.Msg}");
} }
var name = userInfo.Data.UserName; // 删除轨迹
var @event = new TrackDeleteEvent
// todo:重构 {
OrderIds = orderIds.ToArray(),
// // 删除轨迹 TrackCodes = input.TrackCodes,
// foreach (var group in codes.GroupBy(x => x.OrderId)) SubSystemId = input.SubSystemId,
// { OperationMan = userInfo.Data.UserName
// var @event = new TrackDeleteEvent };
// { await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event);
// OrderIds = group.Select(x => x.OrderId).ToArray(),
// TrackCodes = input.TrackCodes,
// SubSystemId = orders.First(x => x.Id == group.Key).SubSystemId,
// OperationMan = name
// };
// await _capPublisher.PublishAsync(GlobalConst.TrackDeleteSubscribe, @event);
// }
return new UnifyResultDto(true, true); return new UnifyResultDto(true, true);
} }
@ -200,59 +170,51 @@ public partial class TrackService : ApplicationService, ITrackService
public async Task<UnifyResultDto> BatchUpsertTrackAsync(BatchUpsertTrackInput input) public async Task<UnifyResultDto> BatchUpsertTrackAsync(BatchUpsertTrackInput input)
{ {
input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空 input.OrderNos = input.OrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList(); // 单号去重、去空
if (input.OrderNos.Count == 0)
{
throw new BusinessException(message: "订单一个都不存在");
}
var orders = await _orderRepository.GetListAsync(x => var orders = await _orderRepository.GetListAsync(x =>
x.OrderType == input.OrderType && input.OrderNos.Contains(x.OrderNo), x.SubSystemId == input.SubSystemId && x.OrderType == input.OrderType &&
input.OrderNos.Contains(x.OrderNo),
x => new x => new
{ {
x.Id, x.Id,
x.OrderNo, x.OrderNo,
x.SubSystemId,
x.CustomId x.CustomId
}); });
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync(); if (orders.Count == 0)
if (userInfo.Code != "200" || userInfo.Data is null)
{ {
//TODO: log || ex throw new BusinessException(message: "订单一个都不存在");
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo?.Msg}");
} }
var name = userInfo.Data.UserName; // 获取用户name
var userInfo = await _requestCurrentUserService.Service.GetCurrentUserBasicInfoAsync();
if (userInfo.Code != GlobalConst.SuccessCode || userInfo.Data is null)
{
throw new BusinessException(message: $"调用用户中心,获取用户信息失败:{userInfo.Msg}");
}
foreach (var group in orders.GroupBy(x => new // 按客户新增/更新轨迹(为了推送轨迹时方便)
foreach (var group in orders.GroupBy(x => x.CustomId))
{ {
x.SubSystemId,
x.CustomId
}))
{
// 新增/更新轨迹
var @event = new TrackUpsertEvent var @event = new TrackUpsertEvent
{ {
SubSystemId = group.Key.SubSystemId, SubSystemId = input.SubSystemId,
CustomId = group.Key.CustomId, CustomId = group.Key,
OrderIdentifiers = OrderIdentifiers = group.Select(order => new OrderIdentifier
group.Select(order => new OrderIdentifier {
{ OrderId = order.Id,
OrderId = order.Id, OrderNo = order.OrderNo,
OrderNo = order.OrderNo, OrderType = input.OrderType,
OrderType = input.OrderType, }).ToArray(),
}).ToArray(),
IsAdd = input.IsAdd, IsAdd = input.IsAdd,
TrackCode = input.TrackCode, TrackCode = input.TrackCode,
TrackPlace = input.TrackPlace, TrackPlace = input.TrackPlace,
TrackTime = input.TrackTime!.Value, TrackTime = input.TrackTime,
TrackTimeZone = input.TrackTimeZone!.Value, TrackTimeZone = input.TrackTimeZone,
OperationMan = name OperationMan = userInfo.Data.UserName
}; };
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event); await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, @event);
} }
return new UnifyResultDto(true, true); return new UnifyResultDto(true, true);
} }
} }

View File

@ -61,7 +61,7 @@ public class TrackContentService : ApplicationService
var dto = ObjectMapper.Map<GetTrackContentDetailVO, GetTrackContentDetailDto>(detailInfo); var dto = ObjectMapper.Map<GetTrackContentDetailVO, GetTrackContentDetailDto>(detailInfo);
if (dto.TrackFlagId == 0) dto.TrackFlagId = null; if (dto.TrackFlagId == 0) dto.TrackFlagId = null;
return new UnifyResultDto<GetTrackContentDetailDto>("200", "", dto); return new UnifyResultDto<GetTrackContentDetailDto>(GlobalConst.SuccessCode, "", dto);
} }
/// <summary> /// <summary>
@ -190,7 +190,7 @@ public class TrackContentService : ApplicationService
var entity = ObjectMapper.Map<EditTrackContentInput, TrackContentEntity>(input); var entity = ObjectMapper.Map<EditTrackContentInput, TrackContentEntity>(input);
var isTrue = await _trackContentRepository.InsertAsync(entity); var isTrue = await _trackContentRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "新增成功", isTrue);
} }
private async Task<UnifyResultDto> UpdateAsync(EditTrackContentInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackContentInput input)
@ -261,7 +261,7 @@ public class TrackContentService : ApplicationService
ts.Complete(); ts.Complete();
} }
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "修改成功", isTrue);
} }
private async Task<UnifyResultDto> DeleteAsync(EditTrackContentInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackContentInput input)
@ -291,7 +291,7 @@ public class TrackContentService : ApplicationService
var isTrue = await _trackContentRepository.SoftDeleteAsync(x => x.Id == input.Id); var isTrue = await _trackContentRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "删除成功", isTrue);
} }
#endregion 私有方法 #endregion 私有方法

View File

@ -61,7 +61,7 @@ public class TrackFlagService : ApplicationService, ITransientDependency
} }
var dto = ObjectMapper.Map<GetTrackFlagDetailVO, GetTrackFlagDetailDto>(detailInfo); var dto = ObjectMapper.Map<GetTrackFlagDetailVO, GetTrackFlagDetailDto>(detailInfo);
return new UnifyResultDto<GetTrackFlagDetailDto>("200", "", dto); return new UnifyResultDto<GetTrackFlagDetailDto>(GlobalConst.SuccessCode, "", dto);
} }
/// <summary> /// <summary>
@ -111,7 +111,7 @@ public class TrackFlagService : ApplicationService, ITransientDependency
var entity = ObjectMapper.Map<EditTrackFlagInput, TrackFlagEntity>(input); var entity = ObjectMapper.Map<EditTrackFlagInput, TrackFlagEntity>(input);
var isTrue = await _trackFlagRepository.InsertAsync(entity); var isTrue = await _trackFlagRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "新增成功", isTrue);
} }
private async Task<UnifyResultDto> UpdateAsync(EditTrackFlagInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackFlagInput input)
@ -145,7 +145,7 @@ public class TrackFlagService : ApplicationService, ITransientDependency
ObjectMapper.Map(input, templateEntity); ObjectMapper.Map(input, templateEntity);
var isTrue = await _trackFlagRepository.UpdateAsync(templateEntity); var isTrue = await _trackFlagRepository.UpdateAsync(templateEntity);
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "修改成功", isTrue);
} }
private async Task<UnifyResultDto> DeleteAsync(EditTrackFlagInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackFlagInput input)
@ -163,7 +163,7 @@ public class TrackFlagService : ApplicationService, ITransientDependency
var isTrue = await _trackFlagRepository.SoftDeleteAsync(x => x.Id == input.Id); var isTrue = await _trackFlagRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "删除成功", isTrue);
} }
#endregion #endregion

View File

@ -88,7 +88,7 @@ public class TrackNodeService : ApplicationService, ITransientDependency
if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName) || if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName) ||
!input.SubSystemId.HasValue) !input.SubSystemId.HasValue)
{ {
return new UnifyResultDto("200", "NodeName,NodeEnName,SubSystemId 必填", false); return new UnifyResultDto(GlobalConst.SuccessCode, "NodeName,NodeEnName,SubSystemId 必填", false);
} }
var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a => var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a =>
@ -113,13 +113,13 @@ public class TrackNodeService : ApplicationService, ITransientDependency
if (!StringHelper.IsValidEnglishString(input.NodeEnName)) if (!StringHelper.IsValidEnglishString(input.NodeEnName))
{ {
return new UnifyResultDto("200", "节点英文名称必须是英文和常用英文符号", false); return new UnifyResultDto(GlobalConst.SuccessCode, "节点英文名称必须是英文和常用英文符号", false);
} }
var entity = ObjectMapper.Map<EditTrackNodeInput, TrackNodeEntity>(input); var entity = ObjectMapper.Map<EditTrackNodeInput, TrackNodeEntity>(input);
var isTrue = await _trackNodeRepository.InsertAsync(entity); var isTrue = await _trackNodeRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "新增成功", isTrue);
} }
private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input)
@ -128,13 +128,13 @@ public class TrackNodeService : ApplicationService, ITransientDependency
if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName)) if (string.IsNullOrEmpty(input.NodeName) || string.IsNullOrEmpty(input.NodeEnName))
{ {
return new UnifyResultDto("200", "NodeName,NodeEnName 必填", false); return new UnifyResultDto(GlobalConst.SuccessCode, "NodeName,NodeEnName 必填", false);
} }
var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id); var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id);
if (trackNodesEntitys == null) if (trackNodesEntitys == null)
{ {
return new UnifyResultDto("200", "没有找到数据,更新失败", false); return new UnifyResultDto(GlobalConst.SuccessCode, "没有找到数据,更新失败", false);
} }
#endregion #endregion
@ -143,14 +143,14 @@ public class TrackNodeService : ApplicationService, ITransientDependency
trackNodesEntitys.NodeName = input.NodeName; trackNodesEntitys.NodeName = input.NodeName;
var isTrue = await _trackNodeRepository.UpdateAsync(trackNodesEntitys); var isTrue = await _trackNodeRepository.UpdateAsync(trackNodesEntitys);
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "修改成功", isTrue);
} }
private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input)
{ {
if (input.Id <= 0 || !input.SubSystemId.HasValue) if (input.Id <= 0 || !input.SubSystemId.HasValue)
{ {
return new UnifyResultDto("200", "SubSystemId 必填", false); return new UnifyResultDto(GlobalConst.SuccessCode, "SubSystemId 必填", false);
} }
var trackStatus = var trackStatus =
@ -158,11 +158,11 @@ public class TrackNodeService : ApplicationService, ITransientDependency
val.Node == input.Id && val.SubSystemId == input.SubSystemId); val.Node == input.Id && val.SubSystemId == input.SubSystemId);
if (trackStatus != null) if (trackStatus != null)
{ {
return new UnifyResultDto("200", "删除失败,该节点已被使用", false); return new UnifyResultDto(GlobalConst.SuccessCode, "删除失败,该节点已被使用", false);
} }
var rows = await _trackNodeRepository.DeleteById(input.Id); var rows = await _trackNodeRepository.DeleteById(input.Id);
return new UnifyResultDto("200", "删除成功", rows > 0); return new UnifyResultDto(GlobalConst.SuccessCode, "删除成功", rows > 0);
} }
#endregion #endregion

View File

@ -4,7 +4,6 @@ using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Dtos.Order;
namespace SJZY.Track.Application.Services.TrackOrders; namespace SJZY.Track.Application.Services.TrackOrders;
@ -183,8 +182,6 @@ public class TrackOrderService : ApplicationService
[HttpGet("GetOrderOperationsById")] [HttpGet("GetOrderOperationsById")]
public async Task<List<OrderOperationRecordIndex>> GetOrderOperationsByIdAsync(int orderId) public async Task<List<OrderOperationRecordIndex>> GetOrderOperationsByIdAsync(int orderId)
{ {
// todo:分页?dto?
return await _orderOperationRecordRepository.GetOrderOperationsByIdAsync(orderId); return await _orderOperationRecordRepository.GetOrderOperationsByIdAsync(orderId);
;
} }
} }

View File

@ -3,7 +3,6 @@ using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Dtos.TrackPull; using SJZY.Track.Application.Contract.Dtos.TrackPull;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.TrackPullAggregate; using SJZY.Track.Domain.Aggregates.TrackPullAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.TrackPull; using SJZY.Track.Domain.Dtos.TrackPull;
namespace SJZY.Track.Application.Services.TrackPull; namespace SJZY.Track.Application.Services.TrackPull;

View File

@ -2,7 +2,6 @@ using SJZY.Expand.ABP.Core;
using SJZY.Track.Application.Contract.Dtos.TrackPush; using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Contract.Services; using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate; using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Consts;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Services.TrackPush; namespace SJZY.Track.Application.Services.TrackPush;

View File

@ -61,7 +61,7 @@ public class TrackStatusService : ApplicationService, ITransientDependency
} }
var dto = ObjectMapper.Map<GetTrackStatusDetailVO, GetTrackStatusDetailDto>(detailInfo); var dto = ObjectMapper.Map<GetTrackStatusDetailVO, GetTrackStatusDetailDto>(detailInfo);
return new UnifyResultDto<GetTrackStatusDetailDto>("200", "", dto); return new UnifyResultDto<GetTrackStatusDetailDto>(GlobalConst.SuccessCode, "", dto);
} }
/// <summary> /// <summary>
@ -118,7 +118,7 @@ public class TrackStatusService : ApplicationService, ITransientDependency
var entity = ObjectMapper.Map<EditTrackStatusInput, TrackStatusEntity>(input); var entity = ObjectMapper.Map<EditTrackStatusInput, TrackStatusEntity>(input);
var isTrue = await _trackStatusRepository.InsertAsync(entity); var isTrue = await _trackStatusRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "新增成功", isTrue);
} }
private async Task<UnifyResultDto> UpdateAsync(EditTrackStatusInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackStatusInput input)
@ -157,7 +157,7 @@ public class TrackStatusService : ApplicationService, ITransientDependency
ObjectMapper.Map(input, templateEntity); ObjectMapper.Map(input, templateEntity);
var isTrue = await _trackStatusRepository.UpdateAsync(templateEntity); var isTrue = await _trackStatusRepository.UpdateAsync(templateEntity);
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "修改成功", isTrue);
} }
private async Task<UnifyResultDto> DeleteAsync(EditTrackStatusInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackStatusInput input)
@ -175,7 +175,7 @@ public class TrackStatusService : ApplicationService, ITransientDependency
var isTrue = await _trackStatusRepository.SoftDeleteAsync(x => x.Id == input.Id); var isTrue = await _trackStatusRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "删除成功", isTrue);
} }
#endregion #endregion

View File

@ -60,7 +60,7 @@ public class TrackTemplateService : ApplicationService
} }
var dto = ObjectMapper.Map<GetTrackTemplateDetailVO, GetTrackTemplateDetailDto>(detailInfo); var dto = ObjectMapper.Map<GetTrackTemplateDetailVO, GetTrackTemplateDetailDto>(detailInfo);
return new UnifyResultDto<GetTrackTemplateDetailDto>("200", "", dto); return new UnifyResultDto<GetTrackTemplateDetailDto>(GlobalConst.SuccessCode, "", dto);
} }
/// <summary> /// <summary>
@ -228,7 +228,7 @@ public class TrackTemplateService : ApplicationService
var entity = ObjectMapper.Map<EditTrackTemplateInput, TrackTemplateEntity>(input); var entity = ObjectMapper.Map<EditTrackTemplateInput, TrackTemplateEntity>(input);
var isTrue = await _trackTemplateRepository.InsertAsync(entity); var isTrue = await _trackTemplateRepository.InsertAsync(entity);
return new UnifyResultDto("200", "新增成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "新增成功", isTrue);
} }
private async Task<UnifyResultDto> UpdateAsync(EditTrackTemplateInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackTemplateInput input)
@ -259,14 +259,14 @@ public class TrackTemplateService : ApplicationService
ObjectMapper.Map(input, templateEntity); ObjectMapper.Map(input, templateEntity);
var isTrue = await _trackTemplateRepository.UpdateAsync(templateEntity); var isTrue = await _trackTemplateRepository.UpdateAsync(templateEntity);
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "修改成功", isTrue);
} }
private async Task<UnifyResultDto> DeleteAsync(EditTrackTemplateInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackTemplateInput input)
{ {
var isTrue = await _trackTemplateRepository.SoftDeleteAsync(x => x.Id == input.Id); var isTrue = await _trackTemplateRepository.SoftDeleteAsync(x => x.Id == input.Id);
return new UnifyResultDto("200", "删除成功", isTrue); return new UnifyResultDto(GlobalConst.SuccessCode, "删除成功", isTrue);
} }
#endregion 私有方法 #endregion 私有方法

View File

@ -11,7 +11,6 @@ using SJZY.InterfaceRelay.Application.Contracts;
using SJZY.Track.Application.CAP; using SJZY.Track.Application.CAP;
using SJZY.Track.Application.Contract; using SJZY.Track.Application.Contract;
using SJZY.Track.Application.Localization; using SJZY.Track.Application.Localization;
using SJZY.Track.Domain.Consts;
using SJZY.UserCenter.Contracts; using SJZY.UserCenter.Contracts;
using SJZY.UserCenter.SharedModel; using SJZY.UserCenter.SharedModel;
using SJZY.UserCenter.SharedModel.Pub; using SJZY.UserCenter.SharedModel.Pub;

View File

@ -8,7 +8,7 @@ public interface ITrackDetailsRepository : IElasticsearchClientService<TrackDeta
Task<List<TrackDetailsIndex>> GetLatestListAsync(int[] eventOrderIds, List<string> trackCodes); Task<List<TrackDetailsIndex>> GetLatestListAsync(int[] eventOrderIds, List<string> trackCodes);
Task<List<TrackDetailsIndex>> GetListAsync(int orderType, List<string> orderNos); Task<List<TrackDetailsIndex>> GetListAsync(int subSystemId, int orderType, List<string> orderNos);
Task<bool> AnyAsync(int orderId, string originTrackDataHash); Task<bool> AnyAsync(int orderId, string originTrackDataHash);

View File

@ -7,6 +7,11 @@ namespace SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
[ElasticsearchType(RelationName = GlobalConst.TrackIndex)] [ElasticsearchType(RelationName = GlobalConst.TrackIndex)]
public class TrackDetailsIndex : IdBaseIndex public class TrackDetailsIndex : IdBaseIndex
{ {
/// <summary>
/// 子系统
/// </summary>
public int SubSystemId { get; set; }
/// <summary> /// <summary>
/// 订单Id /// 订单Id
/// </summary> /// </summary>

View File

@ -9,4 +9,6 @@ public partial class GlobalConst
public const int NormalLimit = 10000; public const int NormalLimit = 10000;
public const float NoneTrackTimeZone = 99999; public const float NoneTrackTimeZone = 99999;
public const string SuccessCode = "200";
} }

View File

@ -8,7 +8,7 @@ public class InterfaceRelayConst
/// <summary> /// <summary>
/// 接口通成功代码 /// 接口通成功代码
/// </summary> /// </summary>
public const string SuccessCode = "200"; public const string SuccessCode = GlobalConst.SuccessCode;
/// <summary> /// <summary>
/// 获取轨迹接口代码 /// 获取轨迹接口代码

View File

@ -104,9 +104,9 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
// 软删订单主表 // 软删订单主表
await SoftDeleteAsync(x => x.Id == orderId); await SoftDeleteAsync(x => x.Id == orderId);
// 软删订单模板
// 软删订单航班 // 软删订单航班
// 软删订单关联关系 // 软删订单关联关系
// 软删订单拉取状态
tran.Complete(); tran.Complete();
} }

View File

@ -178,7 +178,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
} }
} }
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderType, List<string> orderNos) public async Task<List<TrackDetailsIndex>> GetListAsync(int subSystemId, int orderType, List<string> orderNos)
{ {
if (orderNos.Count < 1) return new List<TrackDetailsIndex>(); if (orderNos.Count < 1) return new List<TrackDetailsIndex>();
@ -195,7 +195,9 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
)) ))
.Query(q => .Query(q =>
q.Bool(b => b q.Bool(b => b
.Must(mu => mu .Must(
mu => mu.Term(f => f.SubSystemId, subSystemId),
mu => mu
.Terms(t => t .Terms(t => t
.Field(f => f.OrderNo.Suffix("keyword")) .Field(f => f.OrderNo.Suffix("keyword"))
.Terms(orderNos) .Terms(orderNos)