important:重构

This commit is contained in:
xiaolipro 2025-01-09 16:42:25 +08:00
parent 24c5f0a2ed
commit 76aec6c78f
19 changed files with 222 additions and 191 deletions

View File

@ -123,7 +123,7 @@ public class BatchUpsertTrackInput : OrderNosInfo
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
/// <summary>
/// 是否强制推送

View File

@ -105,5 +105,5 @@ public class TrackDetail
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -132,7 +132,7 @@ public class UpsertTrackInput : OrderNoInfo
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
/// <summary>
/// 是否强制推送

View File

@ -19,15 +19,3 @@ public class TrackUpdateInput
public string Log { get; set; }
}
public class TrackItem
{
public string Location { get; set; } = null!;
public string Date { get; set; }
public double TimeZone { get; set; }
public string? Description { get; set; }
public string? DescriptionCn { get; set; }
public string? Code { get; set; }
public string? Status { get; set; }
public string? Extra { get; set; }
}

View File

@ -85,5 +85,5 @@ public class TrackPushRecordDto
/// <summary>
/// 轨迹的额外新
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -132,5 +132,5 @@ public class TrackChangeEto
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -83,5 +83,5 @@ public class TrackPushCompletedEvent
/// <summary>
/// 轨迹的额外新
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -80,8 +80,13 @@ public struct SystemPushStruct
/// </summary>
public float TrackTimeZone { get; set; }
/// <summary>
/// 重复的情况下,用什么比较
/// </summary>
public string? CompareFields { get; set; }
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -146,10 +146,15 @@ public class TrackUpsertEvent
/// </summary>
public float? DestinationTimeZone { get; set; }
/// <summary>
/// 重复的情况下,用什么比较
/// </summary>
public string? CompareFields { get; set; }
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
/// <summary>
/// 是否强制推送

View File

@ -26,5 +26,5 @@ public interface IBroadcastingService : ITransientDependency
/// 轨迹推送完成广播(推送完成回调)
/// </summary>
/// <param name="log"></param>
void TrackPushCompletedPublicTopicAsync(TrackPushRecordDto log);
void TrackPushCompletedPublicTopic(TrackPushRecordDto log);
}

View File

@ -158,6 +158,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
}
}
// todo:多个相同code的轨迹删除,也需要考虑??
private async Task<List<TrackDetailsIndex>> DeleteTrackAsync(TrackDeleteEvent @event)
{
List<int> orderIds;

View File

@ -10,7 +10,6 @@ using SJZY.Track.Application.Helpers;
using SJZY.Track.Application.Options;
using SJZY.Track.Application.Track2InterfaceRelay;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Aggregates.TrackPushAggregate;
using SJZY.Track.Domain.Enums;
using Volo.Abp.DependencyInjection;
@ -127,7 +126,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
IsToMq = @event.IsToMq,
Extra = @event.SystemPushInfo.Extra
};
var item = await BuiltPushItem(config, log, @event.SystemPushInfo.Extra);
var item = await BuiltPushItem(config, log, @event.SystemPushInfo.CompareFields);
item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
}
@ -171,7 +170,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
IsToMq = @event.IsToMq,
Extra = @event.SystemPushInfo.Extra
};
var item = await BuiltPushItem(config, log, @event.SystemPushInfo.Extra);
var item = await BuiltPushItem(config, log, @event.SystemPushInfo.CompareFields);
item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
}
@ -223,7 +222,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
IsToMq = @event.IsToMq,
Extra = @event.SystemPushInfo.Extra
};
var item = BuiltUpdateItem(config, log, @event.SystemPushInfo.Extra);
var item = BuiltUpdateItem(config, log);
item.Log = JsonConvert.SerializeObject(log);
items.Add(item);
}
@ -247,7 +246,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
}
}
private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log, string? extraJson)
private TrackUpdateInput BuiltUpdateItem(TrackPushContentConfigDto config, TrackPushRecordIndex log)
{
var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone);
var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config);
@ -266,7 +265,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
{ "descriptionCn", config.TrackContentValue },
{ "code", config.TrackContentCodeValue },
{ "status", config.TrackStatusValue },
{ "extra", DeserializeForTextJson<object>(extraJson) }
{ "extra", log.Extra }
};
body.Data.Add(dict);
log.PushContent = body.ToJson();
@ -274,7 +273,8 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
return body;
}
private async Task<TrackPushInput> BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log, string? extraJson)
private async Task<TrackPushInput> BuiltPushItem(TrackPushContentConfigDto config, TrackPushRecordIndex log,
string? compareFields)
{
var trackDatetime = log.TrackTime.AddHours(config.TrackTimeZone ?? log.TrackTimeZone - log.TrackTimeZone);
var trackDateStr = DateTimeFormat(trackDatetime, config.TrackTimeZone ?? log.TrackTimeZone, config);
@ -283,7 +283,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
{
OrderNo = log.OrderNo,
};
var cur = new Dictionary<string, object?>()
var cur = new Dictionary<string, object?>
{
// 推真实的发生地和发生时间(时间是计算后的)
{ "location", log.TrackPlace },
@ -293,7 +293,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
{ "descriptionCn", config.TrackContentValue },
{ "code", config.TrackContentCodeValue },
{ "status", config.TrackStatusValue },
{ "extra", DeserializeForTextJson<object>(extraJson) }
{ "extra", log.Extra }
};
body.Data.Add(cur);
@ -305,10 +305,20 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe
body = DeserializeForTextJson<TrackPushInput>(history.PushContent);
if (config.IsAllPushWithLatest)
{
var last = body!.Data.Last();
if (cur["code"] == last["code"])
var old = body!.Data
.WhereIf(!compareFields.IsNullOrWhiteSpace(), x =>
{
if (x["extra"] is Dictionary<string, object> extra && extra.TryGetValue(compareFields!, out var value))
{
return value ==log.Extra![compareFields!];
}
return false;
})
.FirstOrDefault(x => x["code"] == cur["code"]);
if (old != null)
{
body.Data.Remove(last);
body.Data.Remove(old);
}
}
body!.Data.Add(cur);

View File

@ -216,6 +216,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackPlace = @event.TrackPlace,
TrackTime = @event.NewTrackTime ?? @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone,
CompareFields = @event.CompareFields,
Extra = @event.Extra
},
ForcedPush = @event.ForcedPush,
@ -231,6 +232,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
{
var orderIds = @event.OrderIdentifiers.Select(x => x.OrderId).ToArray();
// todo:条件命名写反了
// important:轨迹code相同,时间、发生地不同的,可能存在多条!!
var tracks = await _trackDetailsEsRepository.GetListAsync(orderIds, @event.TrackCode, false);
@ -239,27 +241,56 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
foreach (var order in @event.OrderIdentifiers)
{
TrackDetailsIndex? track;
// fast path: by update with es id case
if (!@event.IsAdd && !string.IsNullOrWhiteSpace(@event.EsId))
{
var trackById = tracks.FirstOrDefault(x => x.Id == @event.EsId);
if (trackById != null)
{
updateTracks.Add(BuiltUpdateTrack(@event, trackById, order, trackContent));
}
continue;
}
var existTracks = tracks.Where(x => x.OrderId == order.OrderId).ToList();
if (@event.CompareFields.IsNullOrEmpty())
{
existTracks = existTracks.Where(x => x.TrackTime == @event.TrackTime).ToList();
}
else
{
if (@event.Extra == null ||
@event.Extra.TryGetValue(@event.CompareFields, out var compareValue) == false)
{
throw new BusinessException(message: "轨迹比较字段不存在,请检查拓展字段");
}
existTracks = existTracks.Where(x =>
{
// tips:注意兼容性,历史轨迹的字段可能为空
if (x.Extra == null || !x.Extra.TryGetValue(@event.CompareFields, out var oldValue))
{
return false;
}
return oldValue == compareValue;
}).ToList();
}
var track = existTracks.FirstOrDefault();
if (!@event.IsAdd)
{
//如果命中了esId
track = string.IsNullOrWhiteSpace(@event.EsId)
? null
: tracks.FirstOrDefault(x => x.Id == @event.EsId);
if (track != null) goto TipEsIdTrack;
//同一订单同轨迹code同一轨迹时间如果有多条轨迹明细则不允许修改
var existTracks = tracks.Where(x => x.OrderId == order.OrderId
&& x.TrackTime == @event.TrackTime).ToArray();
if (existTracks.Length > 1)
if (existTracks.Count > 1)
{
// 修改轨迹时,订单存在多条轨迹不允许修改
continue;
}
track = existTracks.FirstOrDefault();
if (track == null) continue; // 不存在不让改
updateTracks.Add(BuiltUpdateTrack(@event, track, order, trackContent));
}
else
{
@ -271,149 +302,11 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
// 场景D:不允许重复,零条 => 新增
// 场景E:不允许重复,一条 => 跳过
// 场景F:不允许重复,(理想不会出现多条) => 跳过
var existTracks = tracks.Where(x => x.OrderId == order.OrderId).ToArray();
track = existTracks.FirstOrDefault();
//覆盖场景:B,C
if (trackContent.IsRepeatable && existTracks.Length >= 1)
{
if (existTracks.Any(x => x.TrackTime == @event.TrackTime))
{
//TrackCode TrackTime联合不能重复
continue;
}
// 不允许重复轨迹
if (!trackContent.IsRepeatable && existTracks.Count > 0) continue;
// 设置null后面执行新增逻辑
track = null;
}
//不允许重复,并且记录大于等于一条,跳过
//覆盖场景:E,F
if (!trackContent.IsRepeatable && existTracks.Length >= 1)
{
continue;
}
//其余情况:A,D都为新增操作,无需检查数量,track为null执行新增操作
}
//通过esId命中了轨迹
TipEsIdTrack:
if (track == default)
{
track = new TrackDetailsIndex
{
SubSystemId = @event.SubSystemId,
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OrderType = order.OrderType,
TrackCode = @event.TrackCode,
TrackPlace = @event.TrackPlace,
TrackTime = @event.NewTrackTime ?? @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone,
ServiceProviderCode = @event.TrackRefreshData.ServiceProviderCode ?? GlobalConst.EmptyString,
OriginTrackContent = @event.TrackRefreshData.OriginTrackContent ?? GlobalConst.EmptyString,
OriginTrackDataHash = @event.TrackRefreshData.OriginTrackDataHash ?? GlobalConst.EmptyString,
CreateUser = @event.OperationMan ?? GlobalConst.SystemUser,
CreateTime = DateTime.Now,
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
TrackStatusId = trackContent.TrackStatusId,
TrackStatus = trackContent.TrackStatus,
TrackStatusCode = trackContent.TrackStatusCode,
//跨子系统?
TrackContentId = trackContent.TrackContentId,
TrackContent = @event.Content ?? trackContent.TrackContent,
TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent,
//S06新增轨迹明细字段
IsVisibility = @event.IsVisibility,
Source = @event.Source,
Remarks = @event.Remarks ?? GlobalConst.EmptyString,
Files = @event.Files?.Select(x => new FileItem
{
OssKey = x.OssKey,
FileName = x.FileName
}).ToList(),
TrackPlaceCity = @event.TrackPlaceCity ?? GlobalConst.EmptyString,
TrackPlaceCityId = @event.TrackPlaceCityId ?? GlobalConst.NotExistId,
TrackPlaceProvince = @event.TrackPlaceProvince ?? GlobalConst.EmptyString,
TrackPlaceProvinceId = @event.TrackPlaceProvinceId ?? GlobalConst.NotExistId,
TrackPlaceNation = @event.TrackPlaceNation ?? GlobalConst.EmptyString,
TrackPlaceNationId = @event.TrackPlaceNationId ?? GlobalConst.NotExistId,
TrackPlacePostcode = @event.TrackPlacePostcode ?? GlobalConst.EmptyString,
DestinationTimeZone = @event.DestinationTimeZone,
EstimatedDeliveryDate = @event.EstimatedDeliveryDate,
Extra = @event.Extra
};
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
? track.TrackTime
: track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
insertTracks.Add(track);
// 写入操作日志
_ = _orderOperationRecordEsRepository.AddAsync(new OrderOperationRecordIndex
{
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OptionType = OrderOperationType.创建轨迹.ToString(),
Content = track.ToJson(),
CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now
});
}
else
{
//外部轨迹,轨迹发生地,轨迹发生时间,轨迹发生时区,不允许更改
if (track.Source != (int) TrackSourceEnum.ExternalServiceProvide)
{
track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.NewTrackTime ?? @event.TrackTime;
track.TrackTimeZone = @event.TrackTimeZone;
}
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
? track.TrackTime
: track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
track.UpdateUser = @event.OperationMan ?? GlobalConst.SystemUser;
track.UpdateTime = DateTime.Now;
//允许二次修改,在修改了轨迹内容后进行修改轨迹操作,如果输入的轨迹内容则以输入为准
//跨子系统?
track.TrackContent = @event.Content ?? trackContent.TrackContent;
track.TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent;
//S06新增
track.IsVisibility = @event.IsVisibility;
track.Remarks = @event.Remarks ?? GlobalConst.EmptyString;
track.Files = @event.Files?.Select(x => new FileItem
{
OssKey = x.OssKey,
FileName = x.FileName
}).ToList();
track.TrackPlaceCity = @event.TrackPlaceCity ?? GlobalConst.EmptyString;
track.TrackPlaceCityId = @event.TrackPlaceCityId ?? GlobalConst.NotExistId;
track.TrackPlaceProvince = @event.TrackPlaceProvince ?? GlobalConst.EmptyString;
track.TrackPlaceProvinceId = @event.TrackPlaceProvinceId ?? GlobalConst.NotExistId;
track.TrackPlaceNation = @event.TrackPlaceNation ?? GlobalConst.EmptyString;
track.TrackPlaceNationId = @event.TrackPlaceNationId ?? GlobalConst.NotExistId;
track.TrackPlacePostcode = @event.TrackPlacePostcode ?? GlobalConst.EmptyString;
track.DestinationTimeZone = @event.DestinationTimeZone;
track.EstimatedDeliveryDate = @event.EstimatedDeliveryDate;
track.Extra = @event.Extra;
updateTracks.Add(track);
// 写入操作日志
_ = _orderOperationRecordEsRepository.AddAsync(new OrderOperationRecordIndex
{
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OptionType = OrderOperationType.修改轨迹.ToString(),
Content = track.ToJson(),
CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now
});
insertTracks.Add(BuiltNewTrack(@event, order, trackContent));
}
canNextOrderIds.Add(order.OrderId);
@ -427,4 +320,125 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
return insertTracks;
}
private TrackDetailsIndex BuiltUpdateTrack(TrackUpsertEvent @event, TrackDetailsIndex track, OrderIdentifier order,
TrackContentVO trackContent)
{
//外部轨迹,轨迹发生地,轨迹发生时间,轨迹发生时区,不允许更改
if (track.Source != (int) TrackSourceEnum.ExternalServiceProvide)
{
track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.NewTrackTime ?? @event.TrackTime;
track.TrackTimeZone = @event.TrackTimeZone;
}
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
? track.TrackTime
: track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
track.UpdateUser = @event.OperationMan ?? GlobalConst.SystemUser;
track.UpdateTime = DateTime.Now;
//允许二次修改,在修改了轨迹内容后进行修改轨迹操作,如果输入的轨迹内容则以输入为准
//跨子系统?
track.TrackContent = @event.Content ?? trackContent.TrackContent;
track.TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent;
//S06新增
track.IsVisibility = @event.IsVisibility;
track.Remarks = @event.Remarks ?? GlobalConst.EmptyString;
track.Files = @event.Files?.Select(x => new FileItem
{
OssKey = x.OssKey,
FileName = x.FileName
}).ToList();
track.TrackPlaceCity = @event.TrackPlaceCity ?? GlobalConst.EmptyString;
track.TrackPlaceCityId = @event.TrackPlaceCityId ?? GlobalConst.NotExistId;
track.TrackPlaceProvince = @event.TrackPlaceProvince ?? GlobalConst.EmptyString;
track.TrackPlaceProvinceId = @event.TrackPlaceProvinceId ?? GlobalConst.NotExistId;
track.TrackPlaceNation = @event.TrackPlaceNation ?? GlobalConst.EmptyString;
track.TrackPlaceNationId = @event.TrackPlaceNationId ?? GlobalConst.NotExistId;
track.TrackPlacePostcode = @event.TrackPlacePostcode ?? GlobalConst.EmptyString;
track.DestinationTimeZone = @event.DestinationTimeZone;
track.EstimatedDeliveryDate = @event.EstimatedDeliveryDate;
track.Extra = @event.Extra;
// 写入操作日志
_ = _orderOperationRecordEsRepository.AddAsync(new OrderOperationRecordIndex
{
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OptionType = OrderOperationType.修改轨迹.ToString(),
Content = track.ToJson(),
CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now
});
return track;
}
private TrackDetailsIndex BuiltNewTrack(TrackUpsertEvent @event, OrderIdentifier order, TrackContentVO trackContent)
{
var track = new TrackDetailsIndex
{
SubSystemId = @event.SubSystemId,
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OrderType = order.OrderType,
TrackCode = @event.TrackCode,
TrackPlace = @event.TrackPlace,
TrackTime = @event.NewTrackTime ?? @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone,
ServiceProviderCode = @event.TrackRefreshData.ServiceProviderCode ?? GlobalConst.EmptyString,
OriginTrackContent = @event.TrackRefreshData.OriginTrackContent ?? GlobalConst.EmptyString,
OriginTrackDataHash = @event.TrackRefreshData.OriginTrackDataHash ?? GlobalConst.EmptyString,
CreateUser = @event.OperationMan ?? GlobalConst.SystemUser,
CreateTime = DateTime.Now,
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
TrackStatusId = trackContent.TrackStatusId,
TrackStatus = trackContent.TrackStatus,
TrackStatusCode = trackContent.TrackStatusCode,
//跨子系统?
TrackContentId = trackContent.TrackContentId,
TrackContent = @event.Content ?? trackContent.TrackContent,
TrackEnContent = @event.EnStatus ?? trackContent.TrackEnContent,
//S06新增轨迹明细字段
IsVisibility = @event.IsVisibility,
Source = @event.Source,
Remarks = @event.Remarks ?? GlobalConst.EmptyString,
Files = @event.Files?.Select(x => new FileItem
{
OssKey = x.OssKey,
FileName = x.FileName
}).ToList(),
TrackPlaceCity = @event.TrackPlaceCity ?? GlobalConst.EmptyString,
TrackPlaceCityId = @event.TrackPlaceCityId ?? GlobalConst.NotExistId,
TrackPlaceProvince = @event.TrackPlaceProvince ?? GlobalConst.EmptyString,
TrackPlaceProvinceId = @event.TrackPlaceProvinceId ?? GlobalConst.NotExistId,
TrackPlaceNation = @event.TrackPlaceNation ?? GlobalConst.EmptyString,
TrackPlaceNationId = @event.TrackPlaceNationId ?? GlobalConst.NotExistId,
TrackPlacePostcode = @event.TrackPlacePostcode ?? GlobalConst.EmptyString,
DestinationTimeZone = @event.DestinationTimeZone,
EstimatedDeliveryDate = @event.EstimatedDeliveryDate,
Extra = @event.Extra
};
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
? track.TrackTime
: track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
// 写入操作日志
_ = _orderOperationRecordEsRepository.AddAsync(new OrderOperationRecordIndex
{
OrderId = order.OrderId,
OrderNo = order.OrderNo,
OptionType = OrderOperationType.创建轨迹.ToString(),
Content = track.ToJson(),
CreateUserId = @event.OperationManId,
CreateUserName = @event.OperationMan ?? "",
CreateTime = DateTime.Now
});
return track;
}
}

View File

@ -4,6 +4,7 @@ using BSI.Stack.Rabbit.Handler;
using Newtonsoft.Json;
using RabbitMQ.Client.Events;
using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.InterfaceRelay.Application.Contracts;
using SJZY.Track.Application.Contract.Dtos.TrackPush;
using SJZY.Track.Application.Contract.Services;
@ -70,7 +71,7 @@ public class TrackPushCompletedEventHandler : ITransientDependency, IRabbitHandl
// 推送广播
if (log.IsToMq)
_broadcastingService.TrackPushCompletedPublicTopicAsync(BuildDto(log));
_broadcastingService.TrackPushCompletedPublicTopic(BuildDto(log));
// 往es 写推送日志
await _trackPushRecordEsRepository.AddAsync(log);

View File

@ -86,7 +86,7 @@ public class BroadcastingService : IBroadcastingService
/// </summary>
/// <param name="log"></param>
/// <returns></returns>
public void TrackPushCompletedPublicTopicAsync(TrackPushRecordDto log)
public void TrackPushCompletedPublicTopic(TrackPushRecordDto log)
{
var data = new TrackPushCompletedEvent
{

View File

@ -117,6 +117,7 @@ public class TrackPushService : ApplicationService, ITrackPushService
TrackPlace = track.TrackPlace,
TrackTime = track.TrackTime,
TrackTimeZone = track.TrackTimeZone,
// todo: 这里也要改,重复code问题,到底推哪个
Extra = track.Extra
}
};

View File

@ -240,6 +240,8 @@ public partial class TrackService : ApplicationService, ITrackService
throw new BusinessException(message: "存在来源于外部服务商的轨迹,不允许删除");
}
// todo:非必须不用goto,除非是在写算法,业务逻辑理论上都能通过if和方法规避
NO_DELETE_TRACK:
if (tracks.Count == 0)
{
@ -357,6 +359,9 @@ public partial class TrackService : ApplicationService, ITrackService
return new UnifyResultDto(true, true);
}
// todo:代码封装性太差了,拆小一点
/// <summary>
/// 批量新增、更新轨迹
/// </summary>
@ -436,6 +441,7 @@ public partial class TrackService : ApplicationService, ITrackService
.Where(x => x.TrackTime == input.TrackTime)
.ToList();
// todo:这块代码抽出去
//当为更新操作时发现更新的数目为0进行重试操作
if (!input.IsAdd && tracks.Count == 0)
{

View File

@ -190,5 +190,5 @@ public class TrackDetailsIndex : IdBaseIndex
/// <summary>
/// 扩展信息字段,用与轨迹推送的附加字段
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}

View File

@ -96,5 +96,5 @@ public class TrackPushRecordIndex : IdBaseIndex
/// <summary>
/// 轨迹额外信息
/// </summary>
public string? Extra { get; set; }
public Dictionary<string, object>? Extra { get; set; }
}