From d67c7ce820ed5f3e4047a6e8b299b54dbf7a73e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=9F=E5=96=9C=E6=97=BA?= Date: Thu, 25 Jul 2024 09:26:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=A8=E8=BF=B9=E6=98=A0=E5=B0=84?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=9A=84=E6=8E=A8=E9=80=81=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=A8=E9=80=81=E6=97=B6=E9=97=B4=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrackPush/EditTrackPushConfigInput.cs | 19 +++++++++- .../TrackPush/TrackPushContentConfigDto.cs | 20 +++++++++- .../EventHandlers/TrackPushEventHandler.cs | 11 +++++- .../Helpers/DateTimeHelper.cs | 36 ++++++++++++++++++ .../TrackPush/TrackPushCacheService.cs | 5 ++- .../TrackPushConfigEntity.cs | 22 ++++++++++- .../Enums/DateTimeFormatEnum.cs | 17 +++++++++ .../Enums/TimezoneSourceEnum.cs | 37 +++++++++++++++++++ 8 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 src/SJZY.Track.Application/Helpers/DateTimeHelper.cs create mode 100644 src/SJZY.Track.Domain/Enums/DateTimeFormatEnum.cs create mode 100644 src/SJZY.Track.Domain/Enums/TimezoneSourceEnum.cs 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