fix 参数配置方法修改

This commit is contained in:
2024-10-24 16:51:17 +08:00
parent d1c40a7994
commit 7d322ef5f6
5 changed files with 60 additions and 48 deletions

View File

@@ -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;
/// <summary>
/// 获取参数配置
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="userNo"></param>
/// <param name="tenantId"></param>
/// <param name="item"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
protected async Task<T> GetSettingAsync<T>(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<T>();
}
return v.Adapt<T>();
}
catch (Exception)
{
return defaultValue;
}
}
return defaultValue;
}
}

View File

@@ -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<BookingOrderService> 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<TimeOnly?>(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<bool>(gainfo.No, businessPlace.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
IsCostCrossTenant = await _canteenSettingService.GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowCrossTenant, businessPlace.TenantId, gainfo.No),
OriginTenantId = gainfo.Factory, //人员可能跨基地消费
@@ -212,7 +214,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
var order = await DbContext.Queryable<CanteenOrderEntity>().Where(x => x.No == request.No).FirstAsync();
order.ThrowIfNull("订单不存在");
var bookingDeadline = await GetSettingAsync<TimeOnly?>(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("不在订单取消允许范围内,不可操作");

View File

@@ -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<OrderService> logger)
: base(canteenSettingService, dbContext, currentUser, logger)
{
_canteenSettingService = canteenSettingService;
_serviceProvider = serviceProvider;
_httpContextAccessor = httpContextAccessor;
}
@@ -198,7 +200,7 @@ public class OrderService : BaseOrderService, IOrderService
/// <returns></returns>
private async Task<DateTime> GetCostDateAsync(BusinessShiftMealRelationshipEntity shift, DateTime costDateTime)
{
var switchTime = await GetSettingAsync<TimeOnly?>(string.Empty, shift.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
var switchTime = await _canteenSettingService.GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BusinessSwitchTime, shift.TenantId, string.Empty);
var costDate = costDateTime.Date;
@@ -243,7 +245,7 @@ public class OrderService : BaseOrderService, IOrderService
.ToListAsync();
//一天消费金额
var dayCostMax = await GetSettingAsync<decimal>(order.UserNo, order.TenantId, CanteenSettingItemEnumType.DayCostMax);
var dayCostMax = await _canteenSettingService.GetSettingAsync<decimal>(CanteenSettingItemEnumType.DayCostMax, order.TenantId, order.UserNo);
if (dayCostMax != default)
{
//消费记录一定会有营业点代码!.Value是安全用法
@@ -255,7 +257,7 @@ public class OrderService : BaseOrderService, IOrderService
}
//一次消费金额
var onceCostMax = await GetSettingAsync<decimal>(order.UserNo, order.TenantId, CanteenSettingItemEnumType.OnceCostMax);
var onceCostMax = await _canteenSettingService.GetSettingAsync<decimal>(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<decimal>(order.UserNo, order.TenantId, CanteenSettingItemEnumType.DayMarketCostMax);
var dayMarketCostMax = await _canteenSettingService.GetSettingAsync<decimal>(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);

View File

@@ -7,10 +7,25 @@ namespace Dlhis.Canteen.Setting.Services;
public interface ICanteenSettingService : IScopeDependency
{
/// <summary>
/// 获取配置分页数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task<Pagination<CanteenSettingResponse>> GetPageAsync(CanteenSettingPageRequest request);
/// <summary>
/// 保存配置
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task SaveSettingAsync(CanteenSettingSaveRequest request);
/// <summary>
/// 设置配置启用开关
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
Task SetEnableAsync(CanteenSettingSetEnableRequest request);
/// <summary>
@@ -21,7 +36,13 @@ public interface ICanteenSettingService : IScopeDependency
/// <returns></returns>
Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo, string tenantId);
/// <summary>
/// 获取营业点切换时间
/// </summary>
/// <param name="tenantId"></param>
/// <returns></returns>
Task<TimeOnly?> GetBusinessSwitchTimeAsync(string tenantId);
}
Task<T> GetSettingAsync<T>(CanteenSettingItemEnumType item, string factory, string userNo , T defaultValue = default);
}

View File

@@ -114,6 +114,31 @@ public class CanteenSettingService : ICanteenSettingService
}
}
/// <inheritdoc />
public async Task<T> GetSettingAsync<T>(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<T>();
}
return v.Adapt<T>();
}
catch (Exception)
{
return defaultValue;
}
}
return defaultValue;
}
//*********************************************** help methods ***************************************************//
private async Task CheckDuplicateSettingAsync(CanteenSettingSaveRequest request)