diff --git a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs index fa8bb2fd..d3dfde7c 100644 --- a/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs +++ b/Src/Dlhis.Canteen/Setting/Services/Implements/CanteenSettingService.cs @@ -50,7 +50,8 @@ public class CanteenSettingService : ICanteenSettingService public async Task SaveSettingAsync(CanteenSettingSaveRequest request) { - Inspection(request);//校验参数 + //校验参数 + Inspection(request); await CheckDuplicateSettingAsync(request); if (!request.Id.HasValue) @@ -69,42 +70,31 @@ public class CanteenSettingService : ICanteenSettingService private void Inspection(CanteenSettingSaveRequest request) { - switch (request.Item) - { - case CanteenSettingItemEnumType.BusinessSwitchTime: - ValidateBusinessSwitchTime(request); - break; + var value = request.Value; - case CanteenSettingItemEnumType.InitBalance: - case CanteenSettingItemEnumType.DayCostMax: - case CanteenSettingItemEnumType.DayMarketCostMax: - case CanteenSettingItemEnumType.OnceCostMax: - ValidateDecimal(request); - break; - } - } - - private void ValidateBusinessSwitchTime(CanteenSettingSaveRequest request) - { - // 对 BusinessSwitchTime 进行时间格式验证 - if (string.IsNullOrEmpty(request.Value) || !IsValidTimeFormat(request.Value)) + var result = request.Item switch { - throw new UserFriendlyException("BusinessSwitchTime 参数无效。它应该是 HH:00:00 格式"); - } - } - // 用于验证时间格式 - private bool IsValidTimeFormat(string time) - { - return DateTime.TryParseExact(time, "HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out _); - } + //TimeOnly + CanteenSettingItemEnumType.BusinessSwitchTime => IsValidFormat(value), - private void ValidateDecimal(CanteenSettingSaveRequest request) - { - // 对 InitBalance 进行 decimal 转换验证 - if (!decimal.TryParse(request.Value, out _)) - { - throw new UserFriendlyException($"{request.Item} 参数无效。它应该是 decimal 类型"); - } + //int + CanteenSettingItemEnumType.DayEVoucherUseCountMax => IsValidFormat(value), + + //decimal + CanteenSettingItemEnumType.OnceCostMax => IsValidFormat(value), + CanteenSettingItemEnumType.DayCostMax => IsValidFormat(value), + CanteenSettingItemEnumType.DayMarketCostMax => IsValidFormat(value), + CanteenSettingItemEnumType.Subsidies => IsValidFormat(value), + CanteenSettingItemEnumType.InitBalance => IsValidFormat(value), + + //bool + CanteenSettingItemEnumType.AllowSendAtMeal => IsValidFormat(value), + CanteenSettingItemEnumType.AllowRepeatInOneShift => IsValidFormat(value), + CanteenSettingItemEnumType.AllowCrossTenant => IsValidFormat(value), + _ => throw new NotImplementedException(), + }; + + result.ThrowIfFalse($"{request.Item.GetDescription()},参数值为[{value}],格式错误"); } public async Task SetEnableAsync(CanteenSettingSetEnableRequest request) @@ -158,4 +148,28 @@ public class CanteenSettingService : ICanteenSettingService exists.ThrowIfTrue("配置项重复,请检查."); } + + + + /// + /// 检验参数 + /// + /// + /// + /// + /// + private static bool IsValidFormat(string value, CanteenSettingItemEnumType? type = null) + { + try + { + //mapster + value.Adapt(); + } + catch (Exception) + { + return false; + } + + return true; + } } diff --git a/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs b/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs index 28c29ef6..32077607 100644 --- a/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs +++ b/Src/Dlhis.Entity/Canteen/Entities/BalanceRecordEntity.cs @@ -70,7 +70,7 @@ public class BalanceRecordEntity : SugarBaseEntity, ITenantId /// /// 餐次 /// - [SugarColumn(ColumnDescription = "餐次")] + [SugarColumn(ColumnDescription = "餐次", IsNullable = true)] public Guid? BusinessShiftCode { get; set; } /// @@ -82,7 +82,7 @@ public class BalanceRecordEntity : SugarBaseEntity, ITenantId /// /// 消费机器唯一信息 /// - [SugarColumn(ColumnDescription = "消费机器唯一信息")] + [SugarColumn(ColumnDescription = "消费机器唯一信息", IsNullable = true)] public string DeviceInfo { get; set; } /// diff --git a/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs b/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs index 8dfbaded..d24dc5bd 100644 --- a/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs +++ b/Src/Dlhis.Entity/Canteen/Enums/CanteenSettingItemEnumType.cs @@ -40,7 +40,7 @@ public enum CanteenSettingItemEnumType /// /// 允许就餐下发 /// - [Description("允许就餐下发(T/F)")] + [Description("允许就餐下发(0/1)")] AllowSendAtMeal, /// @@ -58,7 +58,7 @@ public enum CanteenSettingItemEnumType /// /// 允许一餐次多次消费 /// - [Description("允许一餐次多次消费(1/0)")] + [Description("允许一餐次多次消费(0/1)")] AllowRepeatInOneShift, /// @@ -71,7 +71,7 @@ public enum CanteenSettingItemEnumType /// /// 允许跨基地消费 /// - [Description("允许跨基地消费(1/0)")] + [Description("允许跨基地消费(0/1)")] AllowCrossTenant, ///