diff --git a/Src/Dlhis.Canteen/Order/Services/BaseOrderService.cs b/Src/Dlhis.Canteen/Order/Services/BaseOrderService.cs
index 16ed5fee..df521389 100644
--- a/Src/Dlhis.Canteen/Order/Services/BaseOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/BaseOrderService.cs
@@ -1,16 +1,12 @@
using Dlhis.Canteen.Setting.Services;
-using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Enums;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
-using Kurisu.AspNetCore.Utils.Extensions;
-using Mapster;
namespace Dlhis.Canteen.Order.Services;
public abstract class BaseOrderService
{
- private readonly ICanteenSettingService _canteenSettingService;
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly ILogger _logger;
@@ -21,7 +17,6 @@ public abstract class BaseOrderService
ICurrentUser currentUser,
ILogger logger)
{
- _canteenSettingService = canteenSettingService;
_dbContext = dbContext;
_currentUser = currentUser;
_logger = logger;
@@ -32,37 +27,4 @@ public abstract class BaseOrderService
protected IDbContext DbContext => _dbContext;
protected ICurrentUser CurrentUser => _currentUser;
-
- ///
- /// 获取参数配置
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- protected async Task GetSettingAsync(string userNo, string tenantId, CanteenSettingItemEnumType item, T defaultValue = default)
- {
- _settings ??= await _canteenSettingService.GetUserSettingAsync(userNo, tenantId);
-
- if (_settings.TryGetValue(item, out var v))
- {
- try
- {
- if (int.TryParse(v, out var n))
- {
- return n.Adapt();
- }
-
- return v.Adapt();
- }
- catch (Exception)
- {
- return defaultValue;
- }
- }
-
- return defaultValue;
- }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
index e149c83b..a39482e4 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/BookingOrderService.cs
@@ -19,6 +19,7 @@ namespace Dlhis.Canteen.Order.Services.Implements;
public class BookingOrderService : BaseOrderService, IBookingOrderService
{
+ private readonly ICanteenSettingService _canteenSettingService;
private readonly IDishesMenuApi _dishesMenuApi;
private readonly IBusinessPlacePermissionsApi _businessPlacePermissionsApi;
@@ -28,6 +29,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
ICurrentUser currentUser, ILogger logger)
: base(canteenSettingService, dbContext, currentUser, logger)
{
+ _canteenSettingService = canteenSettingService;
_dishesMenuApi = dishesMenuApi;
_businessPlacePermissionsApi = businessPlacePermissionsApi;
}
@@ -41,7 +43,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
//预定时间
var now = DateTime.Now;
- var bookingDeadline = await GetSettingAsync(gainfo.No, businessPlace.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
+ var bookingDeadline = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline, businessPlace.TenantId, gainfo.No, new TimeOnly(20, 30, 00));
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
(now >= dealLine).ThrowIfTrue("超出订餐时间");
@@ -72,7 +74,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
No = SnowFlakeHelper.Instance.NextId().ToString(),
IsOffline = false,
- IsCostCrossTenant = await GetSettingAsync(gainfo.No, businessPlace.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
+ IsCostCrossTenant = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.AllowCrossTenant, businessPlace.TenantId, gainfo.No),
OriginTenantId = gainfo.Factory, //人员可能跨基地消费
@@ -212,7 +214,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
var order = await DbContext.Queryable().Where(x => x.No == request.No).FirstAsync();
order.ThrowIfNull("订单不存在");
- var bookingDeadline = await GetSettingAsync(order.No, order.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
+ var bookingDeadline = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.BookingDeadline, order.TenantId, order.No, 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 59585d0b..6b45062f 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
@@ -22,6 +22,7 @@ namespace Dlhis.Canteen.Order.Services.Implements;
public class OrderService : BaseOrderService, IOrderService
{
+ private readonly ICanteenSettingService _canteenSettingService;
private readonly IServiceProvider _serviceProvider;
private readonly IHttpContextAccessor _httpContextAccessor;
@@ -33,6 +34,7 @@ public class OrderService : BaseOrderService, IOrderService
ILogger logger)
: base(canteenSettingService, dbContext, currentUser, logger)
{
+ _canteenSettingService = canteenSettingService;
_serviceProvider = serviceProvider;
_httpContextAccessor = httpContextAccessor;
}
@@ -198,7 +200,7 @@ public class OrderService : BaseOrderService, IOrderService
///
private async Task GetCostDateAsync(BusinessShiftMealRelationshipEntity shift, DateTime costDateTime)
{
- var switchTime = await GetSettingAsync(string.Empty, shift.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
+ var switchTime = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.BusinessSwitchTime, shift.TenantId, string.Empty);
var costDate = costDateTime.Date;
@@ -243,7 +245,7 @@ public class OrderService : BaseOrderService, IOrderService
.ToListAsync();
//一天消费金额
- var dayCostMax = await GetSettingAsync(order.UserNo, order.TenantId, CanteenSettingItemEnumType.DayCostMax);
+ var dayCostMax = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.DayCostMax, order.TenantId, order.UserNo);
if (dayCostMax != default)
{
//消费记录一定会有营业点代码!.Value是安全用法
@@ -255,7 +257,7 @@ public class OrderService : BaseOrderService, IOrderService
}
//一次消费金额
- var onceCostMax = await GetSettingAsync(order.UserNo, order.TenantId, CanteenSettingItemEnumType.OnceCostMax);
+ var onceCostMax = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.OnceCostMax, order.TenantId, order.UserNo);
if (onceCostMax != default)
{
(Math.Abs(order.Amount) > onceCostMax).ThrowIfTrue($"单次消费金额不能超出{onceCostMax}元");
@@ -264,7 +266,7 @@ public class OrderService : BaseOrderService, IOrderService
//超市消费限额
if (order.BusinessPlaceCode.HasValue && supermarketCodes.Contains(order.BusinessPlaceCode.Value))
{
- var dayMarketCostMax = await GetSettingAsync(order.UserNo, order.TenantId, CanteenSettingItemEnumType.DayMarketCostMax);
+ var dayMarketCostMax = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.DayMarketCostMax, order.TenantId, order.UserNo);
if (dayMarketCostMax != default)
{
var cost = todayAllBalanceRecords.Where(x => x.BusinessPlaceCode.HasValue)
@@ -276,7 +278,7 @@ public class OrderService : BaseOrderService, IOrderService
}
//重复餐次消费
- var allowRepeatInOneShift = await GetSettingAsync(order.UserNo, order.TenantId, CanteenSettingItemEnumType.AllowRepeatInOneShift, true);
+ var allowRepeatInOneShift = await _canteenSettingService.GetSettingAsync(CanteenSettingItemEnumType.AllowRepeatInOneShift, order.TenantId, order.UserNo, true);
if (!allowRepeatInOneShift)
{
var costCount = todayAllBalanceRecords.Count(x => x.ShiftType == order.ShiftType);
diff --git a/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
index ecd8d69d..9872d134 100644
--- a/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
+++ b/Src/Dlhis.Canteen/Setting/Services/ICanteenSettingService.cs
@@ -7,10 +7,25 @@ namespace Dlhis.Canteen.Setting.Services;
public interface ICanteenSettingService : IScopeDependency
{
+ ///
+ /// 获取配置分页数据
+ ///
+ ///
+ ///
Task> GetPageAsync(CanteenSettingPageRequest request);
+ ///
+ /// 保存配置
+ ///
+ ///
+ ///
Task SaveSettingAsync(CanteenSettingSaveRequest request);
+ ///
+ /// 设置配置启用开关
+ ///
+ ///
+ ///
Task SetEnableAsync(CanteenSettingSetEnableRequest request);
///
@@ -21,7 +36,13 @@ public interface ICanteenSettingService : IScopeDependency
///
Task> GetUserSettingAsync(string userNo, string tenantId);
-
+ ///
+ /// 获取营业点切换时间
+ ///
+ ///
+ ///
Task GetBusinessSwitchTimeAsync(string tenantId);
-}
+
+ Task GetSettingAsync(CanteenSettingItemEnumType item, string factory, string userNo , T defaultValue = default);
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
index 39300afe..41f3791b 100644
--- a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
+++ b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs
@@ -114,6 +114,31 @@ public class CanteenSettingService : ICanteenSettingService
}
}
+ ///
+ public async Task GetSettingAsync(CanteenSettingItemEnumType item, string factory, string userNo, T defaultValue = default)
+ {
+ var settings = await GetUserSettingAsync(userNo, factory);
+
+ if (settings.TryGetValue(item, out var v))
+ {
+ try
+ {
+ if (int.TryParse(v, out var n))
+ {
+ return n.Adapt();
+ }
+
+ return v.Adapt();
+ }
+ catch (Exception)
+ {
+ return defaultValue;
+ }
+ }
+
+ return defaultValue;
+ }
+
//*********************************************** help methods ***************************************************//
private async Task CheckDuplicateSettingAsync(CanteenSettingSaveRequest request)