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("不可重复订餐");
+ }
}