fix 订餐恢复余额扣除

This commit is contained in:
2024-04-06 19:57:15 +08:00
parent 328dcdc006
commit 9632e31772

View File

@@ -96,51 +96,34 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
(menuDetail.Number < 0).ThrowIfTrue($"{menuDetail.DishesName}剩余数量不足");
//餐补 //todo 餐补暂不入账
//餐补
if (request.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies)
{
//var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
//if (mealInfo == null)
//{
// await DbContext.InsertAsync(new GainfoMealEntity
// {
// Balance = 0,
// BalanceOfRecharge = 0,
// BalanceOfSubsidies = 0,
// UserCode = gainfo.Code,
// UserNo = gainfo.No,
// Version = 0,
// });
var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
mealInfo.ThrowIfNull("余额不足,无法消费");
// (mealInfo == null).ThrowIfTrue("余额不足,无法消费");
//}
////金额+-
//mealInfo.Balance += order.Amount;
//(mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费");
//金额+-
mealInfo.Balance += order.Amount;
(mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费");
//var effectMeal = await DbContext.Updateable<GainfoMealEntity>()
// .SetColumns(x => x.Balance == mealInfo.Balance)
// .SetColumns(x => x.Version == x.Version + 1)
// .Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致
// .ExecuteCommandAsync();
//if (effectMeal <= 0) throw new VersionExceptions("更新版本冲突");
await DbContext.Updateable<GainfoMealEntity>()
.SetColumns(x => x.Balance == mealInfo.Balance)
.SetColumns(x => x.Version == x.Version + 1)
.Where(x => x.UserNo == order.UserNo && x.Version == mealInfo.Version)//必须与查询时的version一致
.ExecuteCommandThrowVersionAsync();
}
var effectMenu = await DbContext.Updateable<DishesMenuEntity>()
.SetColumns(x => x.Number == menuDetail.Number)
.SetColumns(x => x.Version == x.Version + 1)
.SetColumns(x => x.ModifiedTime == now)
.Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate
&& x.ShiftType == request.ShiftType
&& x.BusinessPlaceCode == request.BusinessPlaceCode
&& x.DishesCode == request.DishesCode
&& x.Version == menuDetail.Version
)
.ExecuteCommandAsync();
if (effectMenu <= 0) throw new VersionExceptions("更新版本冲突");
await DbContext.Updateable<DishesMenuEntity>()
.SetColumns(x => x.Number == menuDetail.Number)
.SetColumns(x => x.Version == x.Version + 1)
.SetColumns(x => x.ModifiedTime == now)
.Where(x => x.StartDate <= menuDetail.Date && menuDetail.Date <= x.EndDate
&& x.ShiftType == request.ShiftType
&& x.BusinessPlaceCode == request.BusinessPlaceCode
&& x.DishesCode == request.DishesCode
&& x.Version == menuDetail.Version
)
.ExecuteCommandThrowVersionAsync();
//写入记录
var balanceRecord = order.Adapt<BalanceRecordEntity>();
@@ -265,26 +248,20 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
.Where(x => x.No == request.No)
.ExecuteCommandAsync();
if (order.Source != BalanceRecordSourceEnumType.Cash)
if (order.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies)
{
//todo 餐补暂不入账
//await ContinueUpdateAsync(async () =>
//{
// var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
// var setBalance = mealInfo.Balance + Math.Abs(order.Amount);
// var effect = await DbContext.Updateable<GainfoMealEntity>()
// .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();
await CommonHelper.RetryAsync(async () =>
{
var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
var setBalance = mealInfo.Balance + Math.Abs(order.Amount);
await DbContext.Updateable<GainfoMealEntity>()
.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)
.ExecuteCommandThrowVersionAsync();
// if (effect <= 0)
// {
// throw new VersionExceptions("取消订单失败!");
// }
//}, 5);
}, 5);
}
}