fix 订单取消需要根据支付方式
This commit is contained in:
@@ -199,54 +199,15 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
|
|||||||
|
|
||||||
public async Task UserCancelOrderAsync(OrderCancelRequest request)
|
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 bookingDeadline = await GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
|
||||||
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
|
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();
|
await ManagerCancelOrderAsync(new OrderCancelRequest
|
||||||
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 () =>
|
|
||||||
{
|
{
|
||||||
var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
No = request.No,
|
||||||
|
Reason = request.Reason,
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -275,26 +236,27 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
|
|||||||
.Where(x => x.No == request.No)
|
.Where(x => x.No == request.No)
|
||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
var amount = Math.Abs(order.Amount);
|
if (order.Source != BalanceRecordSourceEnumType.Cash)
|
||||||
|
|
||||||
//尝试5次
|
|
||||||
await ContinueUpdateAsync(async () =>
|
|
||||||
{
|
{
|
||||||
var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
//尝试5次
|
||||||
|
await ContinueUpdateAsync(async () =>
|
||||||
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("取消订单失败!");
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user