diff --git a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs index 1fe322e6..99ac821c 100644 --- a/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs +++ b/Src/Dlhis.Basic/BusinessPlace/Controllers/BusinessPlacePermissionsController.cs @@ -10,7 +10,7 @@ namespace Dlhis.Basic.BusinessPlace.Controllers; /// /// 营业点管理 /// -[Authorize(Roles = "admin")] +[Authorize] [Route("api/[controller]")] [ApiController] public class BusinessPlacePermissionsController @@ -27,6 +27,7 @@ public class BusinessPlacePermissionsController /// /// /// + [Authorize(Roles = "admin,tenant-admin")] [HttpGet("page")] public async Task> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request) { @@ -49,6 +50,7 @@ public class BusinessPlacePermissionsController /// /// /// + [Authorize(Roles = "admin,tenant-admin")] [HttpPost("save")] public async Task SaveBusinessPlacePermissionAsync(SaveBusinessPlacePermissionRequest request) { diff --git a/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs index 5977e98e..4494f433 100644 --- a/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs +++ b/Src/Dlhis.Basic/Dishes/Request/DisheMenuPageRequest.cs @@ -5,6 +5,11 @@ namespace Dlhis.Basic.Dishes.Request; public class DisheMenuPageRequest : PageDto { + /// + /// 营业点code + /// + public Guid BusinessPlaceCode { get; set; } + /// /// 餐次 /// diff --git a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs index d9649ab1..9872a497 100644 --- a/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/BookingMealRequest.cs @@ -41,6 +41,11 @@ public class BookingMealRequest : IValidatableObject { BookingDate = BookingDate.Date; + if (DateTime.Now.Date >= BookingDate) + { + yield return new ValidationResult("订餐日期小于当天", new[] { nameof(BookingDate) }); + } + yield break; } } diff --git a/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs b/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs deleted file mode 100644 index 423ddb92..00000000 --- a/Src/Dlhis.Canteen/Order/Response/GetMiniProgramOrderResponse.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Dlhis.Entity.Canteen.Enums; -using Kurisu.AspNetCore.Utils.Extensions; - -namespace Dlhis.Canteen.Order.Response; - -public class GetMiniProgramOrderResponse -{ - /// - /// 订单号 - /// - public string No { get; set; } - - /// - /// 姓名 - /// - public string Name { get; set; } - - /// - /// 工号 - /// - public string Code { get; set; } - - /// - /// 人事范围 - /// - public string Werks { get; set; } - - /// - /// 部门编码 - /// - public string DepartmentNo { get; set; } - - /// - /// 部门名称 - /// - public string DepartmentName { get; set; } - - /// - /// 成本中心 - /// - public string CostId { get; set; } - - /// - /// 工作地 - /// - public string Workplace { get; set; } - - /// - /// 厂区 - /// - public string Factory { get; set; } - - /// - /// 营业点 - /// - public Guid PlaceCode { get; set; } - - /// - /// 营业名称 - /// - public string PlaceName { get; set; } - - /// - /// 餐次 - /// - public ShiftEnumType ShiftType { get; set; } - - /// - /// 餐次CN - /// - public string ShiftTypeCN => ShiftType.GetDescription(); - - /// - /// 菜品 - /// - public Guid DishesCode { get; set; } - - /// - /// 菜品名称 - /// - public string DishesName { get; set; } - - /// - /// 手机号码 - /// - public string Phone { get; set; } - - /// - /// 用餐日期 - /// - public DateOnly SysDate { get; set; } - - /// - /// 下单时间 - /// - public DateTime CostDate { get; set; } - - /// - /// 支付方式 - /// - public BalanceRecordSourceEnumType PayType { get; set; } - - /// - /// 支付方式CN - /// - public string PayTypeCN => PayType.GetDescription(); - - /// - /// 订单状态 - /// - public MiniProgramOrderStatusEnumType OrderStatus { get; set; } - - /// - /// 订单状态CN - /// - public string OrderStatusCN => OrderStatus.GetDescription(); - - - - /// - /// 总金额 - /// - public decimal TotalAmount { get; set; } - -} diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 2abe09aa..e390d2ca 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -64,6 +64,8 @@ public class OrderService : IOrderService public async Task Booking(BookingMealRequest request) { + await CheckExistsMyBookingsAsync(request.BookingDate); + var jinkoCode = _currentUser.GetUserClaim("jinko-code"); var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); @@ -87,6 +89,7 @@ public class OrderService : IOrderService RequestJson = request.ToJson(), ThirdNo = string.Empty, Type = BalanceRecordTypeEnumType.Out, + ApplicationType = CanteenApplicaitonTypeEnumType.Booking, Name = gainfo.Name, Source = request.Source, UserNo = gainfo.No, @@ -129,10 +132,7 @@ public class OrderService : IOrderService var canteenUser = await _dbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); //金额+- canteenUser.Balance += order.Amount; - if (canteenUser.Balance < 0) - { - throw new UserFriendlyException("余额不足,无法消费"); - } + (canteenUser.Balance < 0).ThrowIfTrue("余额不足,无法消费"); var effect = await _dbContext.Updateable() .SetColumns(x => x.Balance == canteenUser.Balance) @@ -168,6 +168,7 @@ public class OrderService : IOrderService }, 10); } + public async Task DeviceConsume(OrderAddRequest request) { return await AddAsync(request); @@ -303,6 +304,7 @@ public class OrderService : IOrderService RequestJson = request.ToJson(), ThirdNo = request.ThirdNo, Type = BalanceRecordTypeEnumType.Out, + ApplicationType = CanteenApplicaitonTypeEnumType.Device, Name = gainfo.Name, Source = request.Source, UserNo = gainfo.No, @@ -643,4 +645,25 @@ public class OrderService : IOrderService }, 5); } + + /// + /// 检查我的订餐是否存在,存在抛出异常 + /// + /// + /// + private async Task CheckExistsMyBookingsAsync(DateTime bookingDate) + { + var jinkoCode = _currentUser.GetUserClaim("jinko-code"); + var gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync(); + + var start = bookingDate.Date; + var end = start.AddDays(1).AddSeconds(-1); + + var exists = await _dbContext.Queryable().Where(x => x.ApplicationType == CanteenApplicaitonTypeEnumType.Booking) + .Where(x => x.UserNo == gainfo.No) + .Where(x => x.CreateTime >= start && x.CreateTime <= end) + .AnyAsync(); + + exists.ThrowIfTrue("不可重复订餐"); + } }