From f2142de40753853cfcd7ebb15208c0062169c9fb Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Fri, 20 Feb 2026 09:17:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8E=92=E7=8F=AD=E4=BA=8B=E5=8A=A1?= =?UTF-8?q?=E5=85=BC=E5=AE=B9ef=E9=87=8D=E8=AF=95=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/StoreStaffController.cs | 42 +++++++++++++++---- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreStaffController.cs b/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreStaffController.cs index e49312c..7782928 100644 --- a/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreStaffController.cs +++ b/src/Api/TakeoutSaaS.TenantApi/Controllers/StoreStaffController.cs @@ -816,16 +816,44 @@ public sealed class StoreStaffController( IReadOnlyCollection nextRows, CancellationToken cancellationToken) { - await using var transaction = await dbContext.Database.BeginTransactionAsync(cancellationToken); - await deleteQuery.ExecuteDeleteAsync(cancellationToken); + var nextRowPayloads = nextRows + .Select(x => new + { + x.StoreId, + x.StaffId, + x.DayOfWeek, + x.ShiftType, + x.StartTime, + x.EndTime + }) + .ToList(); - if (nextRows.Count > 0) + var executionStrategy = dbContext.Database.CreateExecutionStrategy(); + await executionStrategy.ExecuteAsync(async () => { - await dbContext.StoreStaffWeeklySchedules.AddRangeAsync(nextRows, cancellationToken); - await dbContext.SaveChangesAsync(cancellationToken); - } + dbContext.ChangeTracker.Clear(); - await transaction.CommitAsync(cancellationToken); + await using var transaction = await dbContext.Database.BeginTransactionAsync(cancellationToken); + await deleteQuery.ExecuteDeleteAsync(cancellationToken); + + if (nextRowPayloads.Count > 0) + { + var insertRows = nextRowPayloads.Select(x => new StoreStaffWeeklySchedule + { + StoreId = x.StoreId, + StaffId = x.StaffId, + DayOfWeek = x.DayOfWeek, + ShiftType = x.ShiftType, + StartTime = x.StartTime, + EndTime = x.EndTime + }).ToList(); + + await dbContext.StoreStaffWeeklySchedules.AddRangeAsync(insertRows, cancellationToken); + await dbContext.SaveChangesAsync(cancellationToken); + } + + await transaction.CommitAsync(cancellationToken); + }); } private static List CreateOffWeekShifts()