diff --git a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs index b7f768ff..a5537dd4 100644 --- a/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs +++ b/Src/Dlhis.Basic/Dishes/Controller/DishesMenusController.cs @@ -63,9 +63,9 @@ public class DishesMenusController : ControllerBase public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, - [FromQuery] List categoryCodes) + Guid categoryCode) { - return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCodes); + return await _dishesMenuService.GetDishesUnderCurrentMenuAsync(businessPlaceCode, date, shiftType, categoryCode); } /// @@ -133,6 +133,7 @@ public class DishesMenusController : ControllerBase /// /// [HttpGet("setting")] + [IgnoreTenant] public async Task GetDishesMenusBookingSetting([FromQuery] GetDishesMenusBookingRequest request) { return await _dishesService.GetDishesMenusBookingSetting(request); diff --git a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs index 38cefe11..5c5f7f30 100644 --- a/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/GetDishesMenusBookingRequest.cs @@ -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 +{ + /// + /// 营业点 + /// + [Required(ErrorMessage = "请选择营业点")] + public Guid BusinessPlaceCode { get; set; } } diff --git a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs index da96b3cc..b3256deb 100644 --- a/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/IDishesMenuService.cs @@ -12,7 +12,7 @@ public interface IDishesMenuService : IScopeDependency Task GetDishesMenuDetailAsync(Guid businessPlaceCode, string customCode, DateTime date); - Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes); + Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode); Task SaveDishesMenuAsync(DishesMenuSaveRequest request); diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs index 4625543a..a8f2b277 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesMenuService.cs @@ -74,7 +74,7 @@ public class DishesMenuService : IDishesMenuService }; } - public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, List categoryCodes) + public async Task> GetDishesUnderCurrentMenuAsync(Guid businessPlaceCode, DateTime date, ShiftEnumType? shiftType, Guid categoryCode) { var data = await _dbContext.Queryable() .LeftJoin((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(); 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().Where(where).ExecuteCommandAsync(); await _dbContext.InsertAsync(entities); } - - public async Task GetBookingDishesDetailAsync(DateTime date, Guid businessPlaceCode, ShiftEnumType shiftType, string dishesCode) { var detail = await _dbContext.Queryable() .LeftJoin((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) diff --git a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs index f8518ff8..d3fbf30c 100644 --- a/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs +++ b/Src/Dlhis.Basic/Dishes/Services/Implements/DishesService.cs @@ -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> GetDishesPageAsync(DishesPageRequest request) @@ -60,49 +63,43 @@ public class DishesService : IDishesService public async Task GetDishesMenusBookingSetting(GetDishesMenusBookingRequest request) { + var subjectId = _currentUser.GetIntSubjectId(); + var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + if (jinkoCode.IsPresent()) + { + gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + } + // 读取最晚订餐的时间 - var strDatetime = await _dbContext.Queryable() + var value = await _dbContext.Queryable() .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() { new() { Type = BalanceRecordSourceEnumType.Cash } }; + + var selectTenantId = await _dbContext.Queryable() + .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() - .Where(x => x.PlaceCode == request.PlaceCode) - .FirstAsync(); - - var payTypes = new List(); - 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 GetDishesDetailByIdAsync(long id) diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs index ce759c46..33ee4ffc 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs @@ -33,10 +33,6 @@ public abstract class BaseOrderService _logger = logger; } - protected BaseOrderService(ICanteenSettingService canteenSettingService) - { - _canteenSettingService = canteenSettingService; - } protected IDbContext DbContext => _dbContext; diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs index 2c346e53..5de1673d 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs @@ -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 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().Where(x => x.Code == request.BusinessPlaceCode).FirstAsync(); + var businessPlace = await DbContext.Queryable().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().Where(x => x.UserNo == order.UserNo).FirstAsync(); + var mealInfo = await DbContext.Queryable().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() + var effectMeal = await DbContext.Updateable() .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() + var effectMenu = await DbContext.Updateable() .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(); - 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> GetBookingPageAsync(OrderBookingPageRequest request) { - var page = await _dbContext.Queryable() + var page = await DbContext.Queryable() .LeftJoin((x, ga) => x.UserNo == ga.No) .Select(x => new OrderBookingResponse { @@ -200,18 +201,18 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService /// private async Task CheckExistsMyBookingsAsync(DateTime bookingDate, ShiftEnumType shiftType) { - var subjectId = _currentUser.GetIntSubjectId(); - var gainfo = await _dbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); - var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + var subjectId = CurrentUser.GetIntSubjectId(); + var gainfo = await DbContext.Queryable().Where(x => x.IdentityUserId == subjectId).FirstAsync(); + var jinkoCode = CurrentUser.GetUserClaim("jinko-code") ?? string.Empty; if (jinkoCode.IsPresent()) { - gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + gainfo = await DbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); } var start = bookingDate.Date.AddDays(-1); var end = start.AddDays(1).AddSeconds(-1); - var exists = await _dbContext.Queryable() + var exists = await DbContext.Queryable() .Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) .Where(x => x.ShiftType == shiftType) .Where(x => x.UserNo == gainfo.No)