fix 分类控制菜品获取

This commit is contained in:
2024-03-21 11:01:14 +08:00
parent 96c5c5feba
commit 02084be82b
7 changed files with 67 additions and 71 deletions

View File

@@ -19,11 +19,12 @@ namespace Dlhis.Canteen.Order.Services.Implements;
public class BookingOrderService : BaseOrderService, IBookingOrderService
{
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly IDisheMenuApi _disheMenuApi;
public BookingOrderService(ICanteenSettingService canteenSettingService, IDisheMenuApi disheMenuApi) : base(canteenSettingService)
public BookingOrderService(ICanteenSettingService canteenSettingService, IDbContext dbContext,
IDisheMenuApi disheMenuApi,
ICurrentUser currentUser, IDevicePermissionApi devicePermissionApi, ILogger<BookingOrderService> logger)
: base(canteenSettingService, dbContext, currentUser, devicePermissionApi, logger)
{
_disheMenuApi = disheMenuApi;
}
@@ -32,7 +33,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
{
var gainfo = await CheckExistsMyBookingsAsync(request.BookingDate, request.ShiftType);
var businessPlace = await _dbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
var businessPlace = await DbContext.Queryable<BusinessPlaceEntity>().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync();
//预定时间
var now = DateTime.Now;
@@ -82,7 +83,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
TenantId = businessPlace.TenantId,
};
var orderId = await _dbContext.InsertReturnIdentityAsync(order);
var orderId = await DbContext.InsertReturnIdentityAsync(order);
await ContinueUpdateAsync(async () =>
{
await _disheMenuApi.GetBookingDishesDetailAsync(request.BookingDate, request.BusinessPlaceCode, (int)request.ShiftType, request.DishesCode);
@@ -96,10 +97,10 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
if (request.Source == BalanceRecordSourceEnumType.LocalTenantSubsidies)
{
var mealInfo = await _dbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
var mealInfo = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
if (mealInfo == null)
{
await _dbContext.InsertAsync(new GainfoMealEntity
await DbContext.InsertAsync(new GainfoMealEntity
{
Balance = 0,
BalanceOfRecharge = 0,
@@ -115,7 +116,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
mealInfo.Balance += order.Amount;
(mealInfo.Balance < 0).ThrowIfTrue("余额不足,无法消费");
var effectMeal = await _dbContext.Updateable<GainfoMealEntity>()
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一致
@@ -125,7 +126,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
}
var effectMenu = await _dbContext.Updateable<DishesMenuEntity>()
var effectMenu = await DbContext.Updateable<DishesMenuEntity>()
.SetColumns(x => x.Number == menuDetail.Number)
.SetColumns(x => x.Version == x.Version + 1)
.SetColumns(x => x.ModifiedTime == now)
@@ -141,9 +142,9 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
//写入记录
var balanceRecord = order.Adapt<BalanceRecordEntity>();
await _dbContext.InsertAsync(balanceRecord);
await DbContext.InsertAsync(balanceRecord);
await _dbContext.InsertAsync(new CanteenOrderDetailEntity
await DbContext.InsertAsync(new CanteenOrderDetailEntity
{
OrderNo = order.No,
DishesCode = request.DishesCode,
@@ -167,7 +168,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
public async Task<Pagination<OrderBookingResponse>> GetBookingPageAsync(OrderBookingPageRequest request)
{
var page = await _dbContext.Queryable<CanteenOrderEntity>()
var page = await DbContext.Queryable<CanteenOrderEntity>()
.LeftJoin<GainfoEntity>((x, ga) => x.UserNo == ga.No)
.Select(x => new OrderBookingResponse
{
@@ -200,18 +201,18 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
/// <returns></returns>
private async Task<GainfoEntity> CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType)
{
var subjectId = _currentUser.GetIntSubjectId();
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty;
var subjectId = CurrentUser.GetIntSubjectId();
var gainfo = await DbContext.Queryable<GainfoEntity>().Where(x => x.IdentityUserId == subjectId).FirstAsync();
var jinkoCode = CurrentUser.GetUserClaim("jinko-code") ?? string.Empty;
if (jinkoCode.IsPresent())
{
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
gainfo = await DbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
}
var start = bookingDate.Date.AddDays(-1);
var end = start.AddDays(1).AddSeconds(-1);
var exists = await _dbContext.Queryable<CanteenOrderEntity>()
var exists = await DbContext.Queryable<CanteenOrderEntity>()
.Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking)
.Where(x => x.ShiftType == shiftType)
.Where(x => x.UserNo == gainfo.No)