fix 配置需要tenantId
This commit is contained in:
@@ -55,10 +55,11 @@ public abstract class BaseOrderService
|
|||||||
/// 获取参数配置
|
/// 获取参数配置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <param name="tenantId"></param>
|
||||||
/// <param name="item"></param>
|
/// <param name="item"></param>
|
||||||
/// <param name="defaultValue"></param>
|
/// <param name="defaultValue"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected async Task<T> GetSettingAsync<T>(CanteenSettingItemEnumType item, T defaultValue = default)
|
protected async Task<T> GetSettingAsync<T>(string tenantId, CanteenSettingItemEnumType item, T defaultValue = default)
|
||||||
{
|
{
|
||||||
if (_settings == null)
|
if (_settings == null)
|
||||||
{
|
{
|
||||||
@@ -69,7 +70,7 @@ public abstract class BaseOrderService
|
|||||||
{
|
{
|
||||||
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == jinkoCode).FirstAsync();
|
||||||
}
|
}
|
||||||
_settings = await _canteenSettingService.GetUserSettingAsync(gainfo.No);
|
_settings = await _canteenSettingService.GetUserSettingAsync(gainfo.No, tenantId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
|
|||||||
//预定时间
|
//预定时间
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
|
|
||||||
var bookingDeadline = await GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
|
var bookingDeadline = await GetSettingAsync<TimeOnly?>(businessPlace.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
|
||||||
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
|
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
|
||||||
(now >= dealLine).ThrowIfTrue("超出订餐时间");
|
(now >= dealLine).ThrowIfTrue("超出订餐时间");
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
|
|||||||
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
||||||
SubsidiesFromMonth = now.ToString("yyyyMM"),
|
SubsidiesFromMonth = now.ToString("yyyyMM"),
|
||||||
IsOffline = false,
|
IsOffline = false,
|
||||||
IsCostCrossTenant = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowCrossTenant),
|
IsCostCrossTenant = await GetSettingAsync<bool>(businessPlace.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
|
||||||
|
|
||||||
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
||||||
|
|
||||||
@@ -211,7 +211,10 @@ public class BookingOrderService : BaseOrderService, IBookingOrderService
|
|||||||
|
|
||||||
public async Task UserCancelOrderAsync(OrderCancelRequest request)
|
public async Task UserCancelOrderAsync(OrderCancelRequest request)
|
||||||
{
|
{
|
||||||
var bookingDeadline = await GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
|
var order = await DbContext.Queryable<CanteenOrderEntity>().Where(x => x.No == request.No).FirstAsync();
|
||||||
|
order.ThrowIfNull("订单不存在");
|
||||||
|
|
||||||
|
var bookingDeadline = await GetSettingAsync<TimeOnly?>(order.TenantId, CanteenSettingItemEnumType.BookingDeadline) ?? new TimeOnly(20, 30, 00);
|
||||||
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
|
var dealLine = DateTime.Today.Add(bookingDeadline.ToTimeSpan());
|
||||||
(DateTime.Now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作");
|
(DateTime.Now >= dealLine).ThrowIfTrue("不在订单取消允许范围内,不可操作");
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
|
|
||||||
}.IsPresent1(request.CostDateTime));
|
}.IsPresent1(request.CostDateTime));
|
||||||
|
|
||||||
var switchTime = await GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BusinessSwitchTime);
|
var switchTime = await GetSettingAsync<TimeOnly?>(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
|
||||||
|
|
||||||
var shiftTimePeriod = new TimePeriod()
|
var shiftTimePeriod = new TimePeriod()
|
||||||
{
|
{
|
||||||
@@ -217,7 +217,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
||||||
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
||||||
IsOffline = request.IsOffline,
|
IsOffline = request.IsOffline,
|
||||||
IsCostCrossTenant = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowCrossTenant),
|
IsCostCrossTenant = await GetSettingAsync<bool>(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
|
||||||
|
|
||||||
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
||||||
|
|
||||||
@@ -235,7 +235,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
|
|
||||||
var orderId = await DbContext.InsertReturnIdentityAsync(order);
|
var orderId = await DbContext.InsertReturnIdentityAsync(order);
|
||||||
|
|
||||||
var allowNoBalance = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowNoBalance);
|
var allowNoBalance = await GetSettingAsync<bool>(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowNoBalance);
|
||||||
|
|
||||||
await CommonHelper.RetryAsync(async () =>
|
await CommonHelper.RetryAsync(async () =>
|
||||||
{
|
{
|
||||||
@@ -313,7 +313,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
|
|
||||||
}.IsPresent1(request.CostDateTime));
|
}.IsPresent1(request.CostDateTime));
|
||||||
|
|
||||||
var switchTime = await GetSettingAsync<TimeOnly?>(CanteenSettingItemEnumType.BusinessSwitchTime);
|
var switchTime = await GetSettingAsync<TimeOnly?>(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.BusinessSwitchTime);
|
||||||
|
|
||||||
var shiftTimePeriod = new TimePeriod()
|
var shiftTimePeriod = new TimePeriod()
|
||||||
{
|
{
|
||||||
@@ -361,7 +361,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
||||||
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
||||||
IsOffline = request.IsOffline,
|
IsOffline = request.IsOffline,
|
||||||
IsCostCrossTenant = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowCrossTenant),
|
IsCostCrossTenant = await GetSettingAsync<bool>(businessPlaceInfo.TenantId, CanteenSettingItemEnumType.AllowCrossTenant),
|
||||||
|
|
||||||
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
||||||
|
|
||||||
@@ -428,7 +428,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
|
|
||||||
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
No = SnowFlakeHelper.Instance.NextId().ToString(),
|
||||||
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
|
||||||
IsCostCrossTenant = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowCrossTenant),
|
IsCostCrossTenant = false,
|
||||||
|
|
||||||
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
OriginTenantId = gainfo.Factory,//人员可能跨基地消费
|
||||||
|
|
||||||
@@ -560,7 +560,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
//一天消费金额
|
//一天消费金额
|
||||||
var dayCostMax = await GetSettingAsync<decimal>(CanteenSettingItemEnumType.DayCostMax);
|
var dayCostMax = await GetSettingAsync<decimal>(order.TenantId, CanteenSettingItemEnumType.DayCostMax);
|
||||||
if (dayCostMax != default)
|
if (dayCostMax != default)
|
||||||
{
|
{
|
||||||
//must has business place code, use .Value is safe
|
//must has business place code, use .Value is safe
|
||||||
@@ -571,14 +571,14 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
}
|
}
|
||||||
|
|
||||||
//一次消费金额
|
//一次消费金额
|
||||||
var onceCostMax = await GetSettingAsync<decimal>(CanteenSettingItemEnumType.OnceCostMax);
|
var onceCostMax = await GetSettingAsync<decimal>(order.TenantId, CanteenSettingItemEnumType.OnceCostMax);
|
||||||
if (onceCostMax != default)
|
if (onceCostMax != default)
|
||||||
{
|
{
|
||||||
(Math.Abs(order.Amount) > onceCostMax).ThrowIfTrue($"一次消费金额不能超出{onceCostMax}");
|
(Math.Abs(order.Amount) > onceCostMax).ThrowIfTrue($"单次消费金额不能超出{onceCostMax}元");
|
||||||
}
|
}
|
||||||
|
|
||||||
//超时消费限额
|
//超时消费限额
|
||||||
var dayMarketCostMax = await GetSettingAsync<decimal>(CanteenSettingItemEnumType.DayMarketCostMax);
|
var dayMarketCostMax = await GetSettingAsync<decimal>(order.TenantId, CanteenSettingItemEnumType.DayMarketCostMax);
|
||||||
if (dayMarketCostMax != default)
|
if (dayMarketCostMax != default)
|
||||||
{
|
{
|
||||||
//current businessplace is supermarket
|
//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)
|
if (!allowRepeatInOneShift)
|
||||||
{
|
{
|
||||||
var costCount = todayAllBalanceRecords.Where(x => x.ShiftType == order.ShiftType).Count();
|
var costCount = todayAllBalanceRecords.Where(x => x.ShiftType == order.ShiftType).Count();
|
||||||
@@ -647,7 +647,7 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
//校验
|
//校验
|
||||||
await Verify(shifts, costDateTime, order);
|
await Verify(shifts, costDateTime, order);
|
||||||
|
|
||||||
var allowNoBalance = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowNoBalance);
|
var allowNoBalance = await GetSettingAsync<bool>(order.TenantId, CanteenSettingItemEnumType.AllowNoBalance);
|
||||||
|
|
||||||
await CommonHelper.RetryAsync(async () =>
|
await CommonHelper.RetryAsync(async () =>
|
||||||
{
|
{
|
||||||
@@ -709,24 +709,19 @@ public class OrderService : BaseOrderService, IOrderService
|
|||||||
await DbContext.InsertAsync(gainfoMeal);
|
await DbContext.InsertAsync(gainfoMeal);
|
||||||
}
|
}
|
||||||
|
|
||||||
var allowNoBalance = await GetSettingAsync<bool>(CanteenSettingItemEnumType.AllowNoBalance);
|
|
||||||
foreach (var order in orders)
|
foreach (var order in orders)
|
||||||
{
|
{
|
||||||
await CommonHelper.RetryAsync(async () =>
|
await CommonHelper.RetryAsync(async () =>
|
||||||
{
|
{
|
||||||
if (!allowNoBalance)
|
var gainfoMeal = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
||||||
{
|
//金额+-
|
||||||
var gainfoMeal = await DbContext.Queryable<GainfoMealEntity>().Where(x => x.UserNo == order.UserNo).FirstAsync();
|
gainfoMeal.Balance += order.Amount;
|
||||||
//金额+-
|
|
||||||
gainfoMeal.Balance += order.Amount;
|
|
||||||
|
|
||||||
await DbContext.Updateable<GainfoMealEntity>()
|
|
||||||
.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();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
await DbContext.Updateable<GainfoMealEntity>()
|
||||||
|
.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<BalanceRecordEntity>();
|
var balanceRecord = order.Adapt<BalanceRecordEntity>();
|
||||||
balanceRecord.Id = 0;
|
balanceRecord.Id = 0;
|
||||||
|
|||||||
@@ -55,16 +55,4 @@ public class SettingController : ControllerBase
|
|||||||
{
|
{
|
||||||
await _settingService.SetEnableAsync(request);
|
await _settingService.SetEnableAsync(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取用户配置
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userNo"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpGet("user")]
|
|
||||||
public async Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo)
|
|
||||||
{
|
|
||||||
return await _settingService.GetUserSettingAsync(userNo);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,9 @@ public interface ICanteenSettingService : IScopeDependency
|
|||||||
/// 获取人员的就餐配置信息
|
/// 获取人员的就餐配置信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userNo">就餐人员档案号</param>
|
/// <param name="userNo">就餐人员档案号</param>
|
||||||
|
/// <param name="tenantId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo);
|
Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo, string tenantId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,11 +82,13 @@ public class CanteenSettingService : ICanteenSettingService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo)
|
public async Task<Dictionary<CanteenSettingItemEnumType, string>> GetUserSettingAsync(string userNo, string tenantId)
|
||||||
{
|
{
|
||||||
var settings = await _context.Queryable<CanteenSettingEntity>()
|
var settings = await _context.Queryable<CanteenSettingEntity>()
|
||||||
.Where(x => x.Enable)
|
.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)
|
|| x.UniqueType == CanteenSettingUnqiueEnumType.Tenant)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user