diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs index b4ed8f6e..bb4b0066 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/EditTrackPushConfigInput.cs @@ -1,4 +1,6 @@ -namespace SJZY.Track.Application.Contract.Dtos.TrackPush; +using SJZY.Track.Domain.Enums; + +namespace SJZY.Track.Application.Contract.Dtos.TrackPush; public class EditTrackPushConfigInput { @@ -48,4 +50,19 @@ public class EditTrackPushConfigInput /// 是否全量推送 /// public bool? IsAllPush { get; set; } + + /// + /// 时间格式枚举 + /// + public DateTimeFormatEnum DateTimeFormatType { get; set; } + + /// + /// 日期时间格式模板 + /// + public string? DateTimeFormat { get; set; } + + /// + /// 时区格式格式模板 + /// + public string? TimezoneFormat { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs index c2bcf867..f778ada8 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushContentConfigDto.cs @@ -1,4 +1,6 @@ -namespace SJZY.Track.Application.Contract.Dtos.TrackPush; +using SJZY.Track.Domain.Enums; + +namespace SJZY.Track.Application.Contract.Dtos.TrackPush; public class TrackPushContentConfigDto { @@ -71,4 +73,20 @@ public class TrackPushContentConfigDto /// 扩展字段参数值 /// public string? ExpandFieldsValue { get; set; } + + + /// + /// 时间格式枚举 + /// + public DateTimeFormatEnum DateTimeFormatType { get; set; } + + /// + /// 日期时间格式模板 + /// + public string? DateTimeFormat { get; set; } + + /// + /// 时区格式格式模板 + /// + public string? TimezoneFormat { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs index 734246eb..cd7ec8f7 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackPushEventHandler.cs @@ -86,7 +86,9 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (config == null) continue; if (!config.IsAutoPush) continue; if (config.OrderType != order.OrderType) continue; - + + // todo 确认是不是这里转换 + DateTimeFormat( @event.SystemPushInfo.TrackTime,"yyyy-MM-dd HH:mm:ss"); var log = new TrackPushRecordIndex { OptionType = @event.OptionType.ToString(), @@ -159,6 +161,12 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe throw new BusinessException(message: $"requestId: {r.RequestId}; {r.Msg}"); } } + + + private string DateTimeFormat(DateTime dateTime,string format) + { + return dateTime.ToString("yyyy-MM-dd HH:mm:ss"); + } private async Task DoUpdateAsync(TrackPushEvent @event) { @@ -250,6 +258,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe if (config.IsAllPush) { + //todo 这个是指每次都带上之前的轨迹嘛 var history = await _trackPushRecordsRepository.GetLatestTrackPushRecordAsync(log.OrderId); if (history != default) { diff --git a/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs b/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs new file mode 100644 index 00000000..b0f3e0bd --- /dev/null +++ b/src/SJZY.Track.Application/Helpers/DateTimeHelper.cs @@ -0,0 +1,36 @@ +namespace SJZY.Track.Application.Helpers; + +public static class DateTimeHelper +{ + /// + /// Generates a Unix timestamp from a DateTime object. + /// + /// The DateTime object to convert to a Unix timestamp. + /// The Unix timestamp as a long. + public static long GenerateUnixTimestamp(DateTime dateTime) + { + return new DateTimeOffset(dateTime).ToUnixTimeSeconds(); + } + + /// + /// Formats a DateTime object into a specified format. + /// + /// The DateTime object to format. + /// The format string. + /// The formatted date string. + public static string FormatDateTime(DateTime dateTime, string format) + { + return dateTime.ToString(format); + } + + /// + /// 时区格式化 + /// + /// + /// + /// + public static string TimezoneFormat(float timezone, string format) + { + return string.Format(format, timezone); + } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs index dfda8279..31e38468 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs @@ -48,7 +48,7 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc var trackPushConfig = await _trackPushConfigRepository.GetFirstAsync( x => x.SubSystemId == subSystemId && x.CustomId == customId, x => new { - x.Id, x.IsAutoPush, x.IsAllPush, x.IsCanDelete, x.IsCanUpdate, x.SubSystemId, x.CustomId + x.Id, x.IsAutoPush, x.IsAllPush, x.IsCanDelete, x.IsCanUpdate, x.SubSystemId, x.CustomId,x.DateTimeFormatType,x.DateTimeFormat,x.TimezoneFormat }); if (trackPushConfig == null) { @@ -68,6 +68,9 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc IsCanUpdate = trackPushConfig.IsCanUpdate, IsAllPush = trackPushConfig.IsAllPush, IsCanDelete = trackPushConfig.IsCanDelete, + DateTimeFormatType = trackPushConfig.DateTimeFormatType, + DateTimeFormat = trackPushConfig.DateTimeFormat, + TimezoneFormat = trackPushConfig.TimezoneFormat, ServiceProviderCode = item.ServiceProviderCode, OrderType = item.OrderType, TrackCode = item.TrackCode, diff --git a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs index 659e3281..8398a0bf 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackPushAggregate/TrackPushConfigEntity.cs @@ -1,4 +1,6 @@ -namespace SJZY.Track.Domain.Aggregates.TrackPushAggregate; +using SJZY.Track.Domain.Enums; + +namespace SJZY.Track.Domain.Aggregates.TrackPushAggregate; /// /// 轨迹推送配置表 @@ -53,4 +55,22 @@ public class TrackPushConfigEntity : IFullAuditedBasicEntitys, IAggregateRoot /// [SugarColumn(ColumnName = "IsAllPush")] public bool IsAllPush { get; set; } + + /// + /// 日期时间格式类型 + /// + [SugarColumn(ColumnName = "DateTimeFormatType")] + public DateTimeFormatEnum DateTimeFormatType { get; set; } + + /// + /// 日期时间格式模板 + /// + [SugarColumn(ColumnName = "DateTimeFormat")] + public string? DateTimeFormat { get; set; } + + /// + /// 时区格式格式模板 + /// + [SugarColumn(ColumnName = "TimezoneFormat")] + public string? TimezoneFormat { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs b/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs new file mode 100644 index 00000000..37e3c4fc --- /dev/null +++ b/src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs @@ -0,0 +1,17 @@ +namespace SJZY.Track.Domain.Enums; + +/// +/// 时间样式枚举 +/// +public enum DateTimeFormatEnum +{ + /// + /// 时间戳 + /// + Timestamp=1, + + /// + /// 时间加时区 + /// + DateTimeAndTimezone =2 +} \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Enums/TimezoneSourceEnum.cs b/src/SJZY.Track.Domain/Enums/TimezoneSourceEnum.cs new file mode 100644 index 00000000..70aca24a --- /dev/null +++ b/src/SJZY.Track.Domain/Enums/TimezoneSourceEnum.cs @@ -0,0 +1,37 @@ +namespace SJZY.Track.Domain.Enums; + +/// +/// 推送轨迹时区来源 +/// +public enum TimezoneSourceEnum +{ + /// + /// 起运城市 + /// + DeliverCity = 1, + + /// + /// 接收城市 + /// + ReceiveCity = 2, + + /// + /// 起运港口 + /// + DeliverPort = 3, + + /// + /// 接收港口 + /// + ReceivePort = 4, + + /// + /// 起运国家 + /// + DeliverCountry = 5, + + /// + /// 接收国家 + /// + ReceiveCountry = 6 +} \ No newline at end of file