fix 订餐恢复余额扣除
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user