diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index f177f75f..2eda9fbd 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -199,54 +199,15 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService public async Task UserCancelOrderAsync(OrderCancelRequest request) { - //预定时间 - var now = DateTime.Now; - var userId = CurrentUser.GetIntSubjectId(); - var bookingDeadline = await GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00); var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan()); - (now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作"); + (DateTime.Now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作"); - var order = await DbContext.Queryable().Where(x => x.No == request.No).FirstAsync(); - order.ThrowIfNull("订单不存在"); - - await DbContext.Updateable() - .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Cancel) - .SetColumns(x => x.Remark == request.Reason) - .SetColumns(x => x.ModifiedTime == now) - .SetColumns(x => x.ModifiedBy == userId) - .Where(x => x.No == request.No) - .ExecuteCommandAsync(); - - var balance = await DbContext.Queryable().Where(x => x.No == request.No).SingleAsync(); - await DbContext.Updateable() - .SetColumns(x => x.Status == BalanceRecordStatusEnumType.Obsolute) - .SetColumns(x => x.Remark == request.Reason) - .SetColumns(x => x.ModifiedTime == now) - .SetColumns(x => x.ModifiedBy == userId) - .Where(x => x.No == request.No) - .ExecuteCommandAsync(); - - var amount = Math.Abs(order.Amount); - - //尝试5次 - await ContinueUpdateAsync(async () => + await ManagerCancelOrderAsync(new OrderCancelRequest { - var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - - var effect = await DbContext.Updateable() - .SetColumns(x => x.Balance == x.Balance + amount) - .SetColumns(x => x.ModifiedTime == now) - .SetColumns(x => x.ModifiedBy == userId) - .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) - .ExecuteCommandAsync(); - - if (effect <= 0) - { - throw new VersionExceptions("取消订单失败!"); - } - - }, 5); + No = request.No, + Reason = request.Reason, + }); } @@ -275,26 +236,27 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService .Where(x => x.No == request.No) .ExecuteCommandAsync(); - var amount = Math.Abs(order.Amount); - - //尝试5次 - await ContinueUpdateAsync(async () => + if (order.Source != BalanceRecordSourceEnumType.Cash) { - var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - - var effect = await DbContext.Updateable() - .SetColumns(x => x.Balance == x.Balance + amount) - .SetColumns(x => x.ModifiedTime == now) - .SetColumns(x => x.ModifiedBy == userId) - .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) - .ExecuteCommandAsync(); - - if (effect <= 0) + //尝试5次 + await ContinueUpdateAsync(async () => { - throw new VersionExceptions("取消订单失败!"); - } + var mealInfo = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var setBalance = mealInfo.Balance + Math.Abs(order.Amount); + var effect = await DbContext.Updateable() + .SetColumns(x => x.Balance == setBalance) + .SetColumns(x => x.ModifiedTime == now) + .SetColumns(x => x.ModifiedBy == userId) + .Where(x => x.Id == mealInfo.Id && x.Version == mealInfo.Version) + .ExecuteCommandAsync(); - }, 5); + if (effect <= 0) + { + throw new VersionExceptions("取消订单失败!"); + } + + }, 5); + } }