fix 分类控制菜品获取
This commit is contained in:
@@ -63,9 +63,9 @@ public class DishesMenusController : ControllerBase
|
||||
public async Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode,
|
||||
DateTime date,
|
||||
ShiftEnumType? shiftType,
|
||||
[FromQuery] List<Guid> categoryCodes)
|
||||
Guid categoryCode)
|
||||
{
|
||||
return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes);
|
||||
return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -133,6 +133,7 @@ public class DishesMenusController : ControllerBase
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("setting")]
|
||||
[IgnoreTenant]
|
||||
public async Task<DishesMenusBookingSettingResponse> GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request)
|
||||
{
|
||||
return await _dishesService.GetDishesMenusBookingSetting(request);
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
namespace Dlhis.Basic.Dishes.Request
|
||||
{
|
||||
public class GetDishesMenusBookingRequest
|
||||
{
|
||||
public string Factory { get; set; }
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
public Guid BusinessPlaceCode { get; set; }
|
||||
}
|
||||
namespace Dlhis.Basic.Dishes.Request;
|
||||
|
||||
public class GetDishesMenusBookingRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 营业点
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "请选择营业点")]
|
||||
public Guid BusinessPlaceCode { get; set; }
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public interface IDishesMenuService : IScopeDependency
|
||||
|
||||
Task<DishesMenuSaveRequest> GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date);
|
||||
|
||||
Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List<Guid> categoryCodes);
|
||||
Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode);
|
||||
|
||||
Task SaveDishesMenuAsync(DishesMenuSaveRequest request);
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ public class DishesMenuService : IDishesMenuService
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List<Guid> categoryCodes)
|
||||
public async Task<List<DishesDetailResponse>> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode)
|
||||
{
|
||||
var data = await _dbContext.Queryable<DishesMenuEntity>()
|
||||
.LeftJoin<DishesEntity>((x, dishes) => x.DishesCode == dishes.CustomCode)
|
||||
@@ -82,7 +82,7 @@ public class DishesMenuService : IDishesMenuService
|
||||
.Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day))
|
||||
.Where((x, dishes) => dishes.Enable)
|
||||
.WhereIF(shiftType.HasValue, x => x.ShiftType == shiftType)
|
||||
.WhereIF(categoryCodes.IsPresent(), (x, dishes) => categoryCodes.Contains(dishes.CategoryCode))
|
||||
.Where((x, dishes) => dishes.CategoryCode == categoryCode)
|
||||
.Select((x, dishes) => new DishesDetailResponse
|
||||
{
|
||||
BusinessPlaceCode = x.BusinessPlaceCode,
|
||||
@@ -146,20 +146,18 @@ public class DishesMenuService : IDishesMenuService
|
||||
var where = LinqExpressionExtension.False<DishesMenuEntity>();
|
||||
keys.ForEach(x =>
|
||||
{
|
||||
where = where.Or(item => item.Date == x.Date && item.ShiftType == x.ShiftType);
|
||||
where = where.Or(item => SqlFunc.DateIsSame(item.Date, x.Date, DateType.Day) && item.ShiftType == x.ShiftType);
|
||||
});
|
||||
|
||||
await _dbContext.Client.Deleteable<DishesMenuEntity>().Where(where).ExecuteCommandAsync();
|
||||
await _dbContext.InsertAsync(entities);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task<DishesMenuDetailDto> GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode)
|
||||
{
|
||||
var detail = await _dbContext.Queryable<DishesMenuEntity>()
|
||||
.LeftJoin<DishesEntity>((x, d) => x.DishesCode == d.CustomCode)
|
||||
.Where(x => x.Date == date)
|
||||
.Where(x => SqlFunc.DateIsSame(x.Date, date, DateType.Day))
|
||||
.Where(x => x.BusinessPlaceCode == businessPlaceCode)
|
||||
.Where(x => x.ShiftType == shiftType)
|
||||
.Where(x => x.DishesCode == dishesCode)
|
||||
|
||||
@@ -5,6 +5,7 @@ using Dlhis.Entity.Canteen.Entities;
|
||||
using Dlhis.Entity.Canteen.Enums;
|
||||
using Kurisu.AspNetCore.Utils.Extensions;
|
||||
using Kurisu.Core.DataAccess.Dto;
|
||||
using Kurisu.Core.User.Abstractions;
|
||||
using Kurisu.SqlSugar.Extensions;
|
||||
using Kurisu.SqlSugar.Services;
|
||||
using Mapster;
|
||||
@@ -14,10 +15,12 @@ namespace Dlhis.Basic.Dishes.Services.Implements;
|
||||
public class DishesService : IDishesService
|
||||
{
|
||||
private readonly IDbContext _dbContext;
|
||||
private readonly ICurrentUser _currentUser;
|
||||
|
||||
public DishesService(IDbContext dbContext)
|
||||
public DishesService(IDbContext dbContext, ICurrentUser currentUser)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_currentUser = currentUser;
|
||||
}
|
||||
|
||||
public async Task<Pagination<DishesResponse>> GetDishesPageAsync(DishesPageRequest request)
|
||||
@@ -60,49 +63,43 @@ public class DishesService : IDishesService
|
||||
|
||||
public async Task<DishesMenusBookingSettingResponse> GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
// 读取最晚订餐的时间
|
||||
var strDatetime = await _dbContext.Queryable<CanteenSettingEntity>()
|
||||
var value = await _dbContext.Queryable<CanteenSettingEntity>()
|
||||
.Where(x => x.UniqueType == CanteenSettingUnqiueEnumType.Tenant && x.Item == CanteenSettingItemEnumType.BookingDeadline && x.Enable)
|
||||
.Select(x => x.Value)
|
||||
.FirstAsync();
|
||||
|
||||
if (!TimeOnly.TryParse(strDatetime, out var deadline))
|
||||
if (!TimeOnly.TryParse(value, out var deadline))
|
||||
deadline = new TimeOnly(8, 30);
|
||||
|
||||
var res = new DishesMenusBookingSettingResponse
|
||||
|
||||
|
||||
var payTypes = new List<BalanceRecordSourceEnumDto>() { new() { Type = BalanceRecordSourceEnumType.Cash } };
|
||||
|
||||
var selectTenantId = await _dbContext.Queryable<BusinessPlaceEntity>()
|
||||
.Where(x => x.Code == request.BusinessPlaceCode)
|
||||
.Select(x => x.TenantId)
|
||||
.FirstAsync();
|
||||
|
||||
if (gainfo.Factory == selectTenantId)
|
||||
{
|
||||
payTypes.Add(new BalanceRecordSourceEnumDto { Type = BalanceRecordSourceEnumType.LocalTenantSubsidies });
|
||||
}
|
||||
|
||||
return new DishesMenusBookingSettingResponse
|
||||
{
|
||||
ServerTime = DateTime.Now,
|
||||
Deadline = DateTime.Today.Add(deadline.ToTimeSpan())
|
||||
Deadline = DateTime.Today.Add(deadline.ToTimeSpan()),
|
||||
PayTypes = payTypes
|
||||
};
|
||||
|
||||
var shift = await _dbContext.Queryable<BusinessPlaceShiftRelationshipEntity>()
|
||||
.Where(x => x.PlaceCode == request.PlaceCode)
|
||||
.FirstAsync();
|
||||
|
||||
var payTypes = new List<BalanceRecordSourceEnumDto>();
|
||||
var dto1 = new BalanceRecordSourceEnumDto
|
||||
{
|
||||
Type = BalanceRecordSourceEnumType.Cash
|
||||
};
|
||||
payTypes.Add(dto1);
|
||||
|
||||
if (shift != null)
|
||||
{
|
||||
|
||||
|
||||
if (shift.TenantId == request.Factory)
|
||||
{
|
||||
var dto2 = new BalanceRecordSourceEnumDto
|
||||
{
|
||||
Type = BalanceRecordSourceEnumType.LocalTenantSubsidies
|
||||
};
|
||||
payTypes.Add(dto2);
|
||||
}
|
||||
|
||||
}
|
||||
res.PayTypes = payTypes;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public async Task<DishesDetailResponse> GetDishesDetailByIdAsync(long id)
|
||||
|
||||
@@ -33,10 +33,6 @@ public abstract class BaseOrderService
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
protected BaseOrderService(ICanteenSettingService canteenSettingService)
|
||||
{
|
||||
_canteenSettingService = canteenSettingService;
|
||||
}
|
||||
|
||||
protected IDbContext DbContext => _dbContext;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user