diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs
index c081c53c..b92f47de 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BaseOrderService.cs
@@ -55,10 +55,11 @@ public abstract class BaseOrderService
/// 获取参数配置
///
///
+ ///
///
///
///
- protected async Task GetSettingAsync(CanteenSettingItemEnumType item, T defaultValue = default)
+ protected async Task GetSettingAsync(string tenantId, CanteenSettingItemEnumType item, T defaultValue = default)
{
if (_settings == null)
{
@@ -69,7 +70,7 @@ public abstract class BaseOrderService
{
gainfo = await _dbContext.Queryable().Where(x => x.Code == jinkoCode).FirstAsync();
}
- _settings = await _canteenSettingService.GetUserSettingAsync(gainfo.No);
+ _settings = await _canteenSettingService.GetUserSettingAsync(gainfo.No, tenantId);
}
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
index cc5b0c85..e1d6ed97 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
@@ -41,7 +41,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
//预定时间
var now = DateTime.Now;
- var bookingDeadline = await GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
+ var bookingDeadline = await GetSettingAsync(businessPlace.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
(now >= dealLine).ThrowIfTrue("超出订餐时间");
@@ -73,7 +73,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = now.ToString("yyyyMM"),
IsOffline = false,
- IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant),
+ IsCostCrossTenant = await GetSettingAsync(businessPlace.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
@@ -211,7 +211,10 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
public async Task UserCancelOrderAsync(OrderCancelRequest request)
{
- var bookingDeadline = await GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
+ var order = await DbContext.Queryable().Where(x => x.No == request.No).FirstAsync();
+ order.ThrowIfNull("订单不存在");
+
+ var bookingDeadline = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
(DateTime.Now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作");
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
index 416d510a..47addce2 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
@@ -169,7 +169,7 @@ public class OrderService : BaseOrderService, IOrderService
}.IsPresent1(request.CostDateTime));
- var switchTime = await GetSettingAsync(CanteenSettingItemEnumType.BusinessSwitchTime);
+ var switchTime = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
var shiftTimePeriod = new TimePeriod()
{
@@ -217,7 +217,7 @@ public class OrderService : BaseOrderService, IOrderService
No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
IsOffline = request.IsOffline,
- IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant),
+ IsCostCrossTenant = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
@@ -235,7 +235,7 @@ public class OrderService : BaseOrderService, IOrderService
var orderId = await DbContext.InsertReturnIdentityAsync(order);
- var allowNoBalance = await GetSettingAsync(CanteenSettingItemEnumType.AllowNoBalance);
+ var allowNoBalance = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowNoBalance);
await CommonHelper.RetryAsync(async () =>
{
@@ -313,7 +313,7 @@ public class OrderService : BaseOrderService, IOrderService
}.IsPresent1(request.CostDateTime));
- var switchTime = await GetSettingAsync(CanteenSettingItemEnumType.BusinessSwitchTime);
+ var switchTime = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
var shiftTimePeriod = new TimePeriod()
{
@@ -361,7 +361,7 @@ public class OrderService : BaseOrderService, IOrderService
No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
IsOffline = request.IsOffline,
- IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant),
+ IsCostCrossTenant = await GetSettingAsync(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
@@ -428,7 +428,7 @@ public class OrderService : BaseOrderService, IOrderService
No = SnowFlakeHelper.Instance.NextId().ToString(),
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
- IsCostCrossTenant = await GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant),
+ IsCostCrossTenant = false,
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
@@ -560,7 +560,7 @@ public class OrderService : BaseOrderService, IOrderService
.ToListAsync();
//一天消费金额
- var dayCostMax = await GetSettingAsync(CanteenSettingItemEnumType.DayCostMax);
+ var dayCostMax = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.DayCostMax);
if (dayCostMax != default)
{
//must has business place code, use .Value is safe
@@ -571,14 +571,14 @@ public class OrderService : BaseOrderService, IOrderService
}
//一次消费金额
- var onceCostMax = await GetSettingAsync(CanteenSettingItemEnumType.OnceCostMax);
+ var onceCostMax = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.OnceCostMax);
if (onceCostMax != default)
{
- (Math.Abs(order.Amount) > onceCostMax).ThrowIfTrue($"一次消费金额不能超出{onceCostMax}");
+ (Math.Abs(order.Amount) > onceCostMax).ThrowIfTrue($"单次消费金额不能超出{onceCostMax}元");
}
//超时消费限额
- var dayMarketCostMax = await GetSettingAsync(CanteenSettingItemEnumType.DayMarketCostMax);
+ var dayMarketCostMax = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.DayMarketCostMax);
if (dayMarketCostMax != default)
{
//current businessplace is supermarket
@@ -593,7 +593,7 @@ public class OrderService : BaseOrderService, IOrderService
}
//重复餐次消费
- var allowRepeatInOneShift = await GetSettingAsync(CanteenSettingItemEnumType.AllowRepeatInOneShift, true);
+ var allowRepeatInOneShift = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.AllowRepeatInOneShift, true);
if (!allowRepeatInOneShift)
{
var costCount = todayAllBalanceRecords.Where(x => x.ShiftType == order.ShiftType).Count();
@@ -647,7 +647,7 @@ public class OrderService : BaseOrderService, IOrderService
//校验
await Verify(shifts, costDateTime, order);
- var allowNoBalance = await GetSettingAsync(CanteenSettingItemEnumType.AllowNoBalance);
+ var allowNoBalance = await GetSettingAsync(order.TenantId, CanteenSettingItemEnumType.AllowNoBalance);
await CommonHelper.RetryAsync(async () =>
{
@@ -709,24 +709,19 @@ public class OrderService : BaseOrderService, IOrderService
await DbContext.InsertAsync(gainfoMeal);
}
- var allowNoBalance = await GetSettingAsync(CanteenSettingItemEnumType.AllowNoBalance);
foreach (var order in orders)
{
await CommonHelper.RetryAsync(async () =>
{
- if (!allowNoBalance)
- {
- var gainfoMeal = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync();
- //金额+-
- gainfoMeal.Balance += order.Amount;
-
- await DbContext.Updateable()
- .SetColumns(x => x.Balance == gainfoMeal.Balance)
- .SetColumns(x => x.Version == x.Version + 1)
- .Where(x => x.UserNo == order.UserNo && x.Version == gainfoMeal.Version)//必须与查询时的version一致
- .ExecuteCommandThrowVersionAsync();
- }
+ var gainfoMeal = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync();
+ //金额+-
+ gainfoMeal.Balance += order.Amount;
+ await DbContext.Updateable()
+ .SetColumns(x => x.Balance == gainfoMeal.Balance)
+ .SetColumns(x => x.Version == x.Version + 1)
+ .Where(x => x.UserNo == order.UserNo && x.Version == gainfoMeal.Version)//必须与查询时的version一致
+ .ExecuteCommandThrowVersionAsync();
//写入记录
var balanceRecord = order.Adapt();
balanceRecord.Id = 0;
diff --git a/Src/Dlhis.Canteen/Setting/Controllers/SettingController.cs b/Src/Dlhis.Canteen/Setting/Controllers/SettingController.cs
index 1bb4bd93..b9b89d8c 100644
--- a/Src/Dlhis.Canteen/Setting/Controllers/SettingController.cs
+++ b/Src/Dlhis.Canteen/Setting/Controllers/SettingController.cs
@@ -55,16 +55,4 @@ public class SettingController : ControllerBase
{
await _settingService.SetEnableAsync(request);
}
-
- ///
- /// 获取用户配置
- ///
- ///
- ///
- [HttpGet("user")]
- public async Task> GetUserSettingAsync(string userNo)
- {
- return await _settingService.GetUserSettingAsync(userNo);
- }
-
}
diff --git a/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
index 7b2a47cf..218ea68e 100644
--- a/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
+++ b/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
@@ -17,8 +17,9 @@ public interface ICanteenSettingService : IScopeDependency
/// 获取人员的就餐配置信息
///
/// 就餐人员档案号
+ ///
///
- Task> GetUserSettingAsync(string userNo);
+ Task> GetUserSettingAsync(string userNo, string tenantId);
}
diff --git a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
index 3e06e324..206eeb40 100644
--- a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
+++ b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
@@ -82,11 +82,13 @@ public class CanteenSettingService : ICanteenSettingService
}
- public async Task> GetUserSettingAsync(string userNo)
+ public async Task> GetUserSettingAsync(string userNo, string tenantId)
{
var settings = await _context.Queryable()
.Where(x => x.Enable)
- .Where(x => (x.UniqueType == CanteenSettingUnqiueEnumType.Person && x.UniqueValue == userNo)
+ .Where(x => x.TenantId == tenantId)
+ .Where(x =>
+ (x.UniqueType == CanteenSettingUnqiueEnumType.Person && x.UniqueValue == userNo)
|| x.UniqueType == CanteenSettingUnqiueEnumType.Tenant)
.ToListAsync();