diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index c4bb48b0..6eeb6479 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -14,6 +14,7 @@ using Dlhis.Basic.Api; using Kurisu.SqlSugar.Extensions; using SqlSugar; using Mapster; +using MySqlX.XDevAPI.Relational; namespace Dlhis.Canteen.Order.Services.Implements; @@ -297,6 +298,37 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService }, 5); } + 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 () => + { + 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); + } + /// /// 检查我的订餐是否存在,存在抛出异常