fix【S1-更新轨迹成功后,时区没有按照传参来存储】https://www.tapd.cn/60863849/bugtrace/bugs/view?bug_id=1160863849001029832

This commit is contained in:
李鹏军 2024-03-06 10:56:00 +08:00
parent de42e9e5cf
commit 447ea8ae8f
7 changed files with 39 additions and 37 deletions

View File

@ -22,11 +22,26 @@ public class UpsertTrackInput : OrderNoInfo
/// 轨迹发生时间 /// 轨迹发生时间
/// </summary> /// </summary>
[Required] [Required]
public DateTime TrackTime { get; set; } public DateTime? TrackTime { get; set; }
/// <summary> /// <summary>
/// 轨迹发生时区 /// 轨迹发生时区
/// </summary> /// </summary>
[Required] [Required]
public float TraceTimeZone { get; set; } [Range(-12, 12)]
public float? TrackTimeZone { get; set; }
}
public class NotNullAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null)
{
return new ValidationResult(ErrorMessage ?? "The field is required.",
new[] { validationContext.MemberName });
}
return ValidationResult.Success;
}
} }

View File

@ -23,10 +23,10 @@ public class OrderAutoMapperProfile : Profile
CreateMap<TrackOrderVO, TrackOrderDto>(MemberList.None); CreateMap<TrackOrderVO, TrackOrderDto>(MemberList.None);
CreateMap<UnifyPageResultDto<TrackOrderVO>, UnifyPageResultDto<TrackOrderDto>>(MemberList.None); CreateMap<UnifyPageResultDto<TrackOrderVO>, UnifyPageResultDto<TrackOrderDto>>(MemberList.None);
CreateMap<TrackDetailsIndex, TrackOrderDetailDto>(MemberList.None).Ignore(dest => dest.TrackTimeZone) CreateMap<TrackDetailsIndex, TrackOrderDetailDto>(MemberList.None).Ignore(dest => dest.TrackTimeZone)
.ForMember(dest => dest.Id, opt => opt.Ignore()) .ForMember(dest => dest.Id, opt => opt.Ignore())
.ForMember(dest => dest.Code, opt => opt.MapFrom(m => m.TrackCode)) .ForMember(dest => dest.Code, opt => opt.MapFrom(m => m.TrackCode))
.ForMember(dest => dest.Content, opt => opt.MapFrom(m => m.TrackContent)) .ForMember(dest => dest.Content, opt => opt.MapFrom(m => m.TrackContent))
.ForMember(dest => dest.EnContent, opt => opt.MapFrom(m => m.TrackEnContent)) .ForMember(dest => dest.EnContent, opt => opt.MapFrom(m => m.TrackEnContent))
.ForMember(dest => dest.TrackTimeZoneValue, opt => opt.MapFrom(m => m.TraceTimeZone)); .ForMember(dest => dest.TrackTimeZoneValue, opt => opt.MapFrom(m => m.TrackTimeZone));
} }
} }

View File

@ -83,8 +83,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackContent = trackContent.Content, TrackContent = trackContent.Content,
TrackEnContent = trackContent.EnContent, TrackEnContent = trackContent.EnContent,
TrackPlace = @event.TrackPlace, TrackPlace = @event.TrackPlace,
TrackTime = @event.TrackTime, TrackTime = @event.TrackTime!.Value,
TraceTimeZone = @event.TraceTimeZone, TrackTimeZone = @event.TrackTimeZone!.Value,
CreateUser = CurrentUserRequest.CurrentUser.Name, CreateUser = CurrentUserRequest.CurrentUser.Name,
CreateTime = DateTime.Now CreateTime = DateTime.Now
}; };
@ -98,8 +98,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
else else
{ {
track.TrackPlace = @event.TrackPlace; track.TrackPlace = @event.TrackPlace;
track.TrackTime = @event.TrackTime; track.TrackTime = @event.TrackTime!.Value;
track.TraceTimeZone = @event.TraceTimeZone; track.TrackTimeZone = @event.TrackTimeZone!.Value;
track.UpdateUser = CurrentUserRequest.CurrentUser.Name; track.UpdateUser = CurrentUserRequest.CurrentUser.Name;
track.UpdateTime = DateTime.Now; track.UpdateTime = DateTime.Now;
} }
@ -115,7 +115,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackEnContent = track.TrackEnContent, TrackEnContent = track.TrackEnContent,
TrackPlace = track.TrackPlace, TrackPlace = track.TrackPlace,
TrackTime = track.TrackTime, TrackTime = track.TrackTime,
TrackTimeZone = track.TraceTimeZone TrackTimeZone = track.TrackTimeZone
}); });
// 根据订单关联关系异步向下刷 // 根据订单关联关系异步向下刷

View File

@ -55,7 +55,7 @@ public class TrackQueryService : ApplicationService
Status = x.TrackStatus, Status = x.TrackStatus,
Content = x.TrackContent, Content = x.TrackContent,
Location = x.TrackPlace, Location = x.TrackPlace,
Time = x.TrackTime.AddHours(input.TimeZone!.Value - x.TraceTimeZone), Time = x.TrackTime.AddHours(input.TimeZone!.Value - x.TrackTimeZone),
TimeZone = input.TimeZone!.Value TimeZone = input.TimeZone!.Value
}).ToList(); }).ToList();

View File

@ -1,13 +0,0 @@
using FluentValidation;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace SJZY.Track.Application.Validations.ProviderService;
public class UpsertTrackInputValidation : AbstractValidator<UpsertTrackInput>, IValidationEnabled
{
public UpsertTrackInputValidation()
{
RuleFor(x => x.TrackTime).NotNull();
RuleFor(x => x.TraceTimeZone).NotNull();
}
}

View File

@ -74,7 +74,7 @@ public class TrackDetailsIndex : IdBaseIndex
/// <summary> /// <summary>
/// 轨迹发生时区 /// 轨迹发生时区
/// </summary> /// </summary>
public float TraceTimeZone { get; set; } public float TrackTimeZone { get; set; }
/// <summary>删除标记 0正常 1 已删除</summary> /// <summary>删除标记 0正常 1 已删除</summary>
public bool IsDeleted { get; set; } public bool IsDeleted { get; set; }

View File

@ -3,7 +3,6 @@ using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ElasticSearch.Services; using SJZY.Expand.ElasticSearch.Services;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.TrackDetails; using SJZY.Track.Domain.Dtos.TrackDetails;
using SJZY.UserCenter.SharedModel.Dtos.PHP.User;
namespace SJZY.Track.Repository.Repositories; namespace SJZY.Track.Repository.Repositories;
@ -53,7 +52,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
var r = await Context.UpdateAsync<TrackDetailsIndex>(index.Id, u => u var r = await Context.UpdateAsync<TrackDetailsIndex>(index.Id, u => u
.Index(index.IndexName) .Index(index.IndexName)
.Doc(index) .Doc(index)
//.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
); );
if (!r.IsValid) if (!r.IsValid)
@ -75,7 +74,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
.Field(f => f.TrackContent) .Field(f => f.TrackContent)
.Field(f => f.TrackPlace) .Field(f => f.TrackPlace)
.Field(f => f.TrackTime) .Field(f => f.TrackTime)
.Field(f => f.TraceTimeZone) .Field(f => f.TrackTimeZone)
)) ))
.Query(q => .Query(q =>
q.Terms(t => t q.Terms(t => t
@ -92,8 +91,8 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<List<TrackDetailsIndex>?> GetListAsync(int orderId) public async Task<List<TrackDetailsIndex>?> GetListAsync(int orderId)
{ {
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x.Query(q => q.Term(t => t.OrderId, orderId) var data = await Context.SearchAsync<TrackDetailsIndex>(x => x.Query(q => q.Term(t => t.OrderId, orderId)
&& q.Term(a => a.Field(g => g.IsDeleted).Value(false)) && q.Term(a => a.Field(g => g.IsDeleted).Value(false))
) )
.Size(1000) .Size(1000)
.Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending))); .Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending)));
@ -102,11 +101,12 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
public async Task<List<TrackDetailsIndex>?> GetListAsync(List<int> orderIds) public async Task<List<TrackDetailsIndex>?> GetListAsync(List<int> orderIds)
{ {
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x.Query(q => q.Terms(t => t.Field(g => g.OrderId).Terms(orderIds)) var data = await Context.SearchAsync<TrackDetailsIndex>(x => x.Query(q =>
&& q.Term(a => a.Field(d => d.IsDeleted).Value(false)) q.Terms(t => t.Field(g => g.OrderId).Terms(orderIds))
) && q.Term(a => a.Field(d => d.IsDeleted).Value(false))
.Size(10000) )
.Sort(s => s.Field(c => c.TrackTime, SortOrder.Descending)) .Size(10000)
.Sort(s => s.Field(c => c.TrackTime, SortOrder.Descending))
); );
return data?.Documents?.ToList(); return data?.Documents?.ToList();
} }