fix 订单取消需要根据支付方式

This commit is contained in:
2024-03-23 01:41:21 +08:00
parent 89db005f0d
commit 7d18c8ea55

View File

@@ -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<TimeOnly?>(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<CanteenOrderEntity>().Where(x => x.No == request.No).FirstAsync();
order.ThrowIfNull("订单不存在");
await DbContext.Updateable<CanteenOrderEntity>()
.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<BalanceRecordEntity>().Where(x => x.No == request.No).SingleAsync();
await DbContext.Updateable<BalanceRecordEntity>()
.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<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
var effect = await DbContext.Updateable<GainfoMealEntity>()
.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<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
var effect = await DbContext.Updateable<GainfoMealEntity>()
.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<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();
}, 5);
if (effect <= 0)
{
throw new VersionExceptions("取消订单失败!");
}
}, 5);
}
}