Merge branch 'S01-轨迹中台' of http://192.168.80.50:3000/Dotnet/SJZY.Track.Api into S01-轨迹中台
This commit is contained in:
commit
6d03e3b786
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
|
||||||
});
|
});
|
||||||
|
|
||||||
// 根据订单关联关系异步向下刷
|
// 根据订单关联关系异步向下刷
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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; }
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user