Merge branch 'S07' into test

This commit is contained in:
hardstylewyl 2025-04-23 14:45:23 +08:00
commit 27e5524369
2 changed files with 49 additions and 15 deletions

View File

@ -295,14 +295,29 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
// tips:如果没传时区则使用+8兜底进行过滤
var timezone = Math.Abs(@event.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 0.01f ? 8.0f : @event.TrackTimeZone;
// 根据时间过滤
existTracks = @event.IsAdd
? existTracks.Where(x => x.GetUtc0TrackTime() == (@event.NewTrackTime ?? @event.TrackTime).Subtract(TimeSpan.FromHours(timezone))).ToList()
: existTracks.Where(x =>
x.GetUtc0TrackTime() == @event.TrackTime.Subtract(TimeSpan.FromHours(timezone))
// 修改了时间,要校验修改后的时间是否存在
|| (@event.NewTrackTime != null && x.GetUtc0TrackTime() == @event.NewTrackTime.Value.Subtract(TimeSpan.FromHours(timezone)))
).ToList();
// todo-remove:为了照顾FBA老逻辑,暂时特殊处理一下
var trackFirst = tracks.First();
if (trackFirst.SubSystemId == 9517)
{
existTracks = @event.IsAdd
? tracks.Where(x => x.TrackTime == (@event.NewTrackTime ?? @event.TrackTime)).ToList()
: tracks.Where(x =>
x.TrackTime == @event.TrackTime
// 修改了时间,要校验修改后的时间是否存在
|| (@event.NewTrackTime != null && x.TrackTime == @event.NewTrackTime)
).ToList();
}
else
{
// 根据时间过滤
existTracks = @event.IsAdd
? existTracks.Where(x => x.GetUtc0TrackTime() == (@event.NewTrackTime ?? @event.TrackTime).Subtract(TimeSpan.FromHours(timezone))).ToList()
: existTracks.Where(x =>
x.GetUtc0TrackTime() == @event.TrackTime.Subtract(TimeSpan.FromHours(timezone))
// 修改了时间,要校验修改后的时间是否存在
|| (@event.NewTrackTime != null && x.GetUtc0TrackTime() == @event.NewTrackTime.Value.Subtract(TimeSpan.FromHours(timezone)))
).ToList();
}
// 根据扩展信息过滤
existTracks = @event.IsAdd

View File

@ -620,13 +620,32 @@ public partial class TrackService : ApplicationService, ITrackService
// 如果不允许重复,则直接返回
if (!isRepeatable) return tracks;
tracks = isAdd
? tracks.Where(x => x.GetUtc0TrackTime() == (newTrackTime ?? trackTime).Subtract(TimeSpan.FromHours(trackTimezone))).ToList()
: tracks.Where(x =>
x.GetUtc0TrackTime() == trackTime.Subtract(TimeSpan.FromHours(trackTimezone))
// 修改了时间,要校验修改后的时间是否存在
|| (newTrackTime != null && x.GetUtc0TrackTime() == newTrackTime.Value.Subtract(TimeSpan.FromHours(trackTimezone)))
).ToList();
// 没有任何轨迹,也直接返回
if (tracks.Count == 0)
return tracks;
// todo-remove:为了照顾FBA老逻辑,暂时特殊处理一下
var trackFirst = tracks.First();
if (trackFirst.SubSystemId == 9517)
{
tracks = isAdd
? tracks.Where(x => x.TrackTime == (newTrackTime ?? trackTime)).ToList()
: tracks.Where(x =>
x.TrackTime == trackTime
// 修改了时间,要校验修改后的时间是否存在
|| (newTrackTime != null && x.TrackTime == newTrackTime)
).ToList();
}
else
{
tracks = isAdd
? tracks.Where(x => x.GetUtc0TrackTime() == (newTrackTime ?? trackTime).Subtract(TimeSpan.FromHours(trackTimezone))).ToList()
: tracks.Where(x =>
x.GetUtc0TrackTime() == trackTime.Subtract(TimeSpan.FromHours(trackTimezone))
// 修改了时间,要校验修改后的时间是否存在
|| (newTrackTime != null && x.GetUtc0TrackTime() == newTrackTime.Value.Subtract(TimeSpan.FromHours(trackTimezone)))
).ToList();
}
return isAdd
? tracks.Where(x => x.Extra == (newExtra ?? extra)).ToList()