fix 二维码校验设备权限

This commit is contained in:
2024-11-22 15:20:49 +08:00
parent 39257b0825
commit 405acce916
19 changed files with 201 additions and 423 deletions

View File

@@ -1,4 +1,5 @@
using Dlhis.Canteen.Order.Dto;
using Dlhis.Basic.Api;
using Dlhis.Canteen.Order.Dto;
using Dlhis.Canteen.Order.Repository;
using Dlhis.Canteen.Setting.Services;
using Dlhis.Entity.Basic.Entity;
@@ -31,6 +32,7 @@ public class OrderService : IOrderService
private readonly IBalanceRepository _balanceRepository;
private readonly IOrderRepository _orderRepository;
private readonly RedisCache _redisCache;
private readonly IGainfoPermissionApi _gainfoPermissionApi;
private readonly ILogger<OrderService> _logger;
public OrderService(ICanteenSettingService canteenSettingService,
@@ -40,6 +42,7 @@ public class OrderService : IOrderService
IBalanceRepository balanceRepository,
IOrderRepository orderRepository,
RedisCache redisCache,
IGainfoPermissionApi gainfoPermissionApi,
ILogger<OrderService> logger)
{
_canteenSettingService = canteenSettingService;
@@ -49,6 +52,7 @@ public class OrderService : IOrderService
_balanceRepository = balanceRepository;
_orderRepository = orderRepository;
_redisCache = redisCache;
_gainfoPermissionApi = gainfoPermissionApi;
_logger = logger;
}
@@ -126,6 +130,19 @@ public class OrderService : IOrderService
//******************************************************* help methods ************************************************************/
private async Task CheckPermissionAsync(string userCode, string deviceUniqueNo)
{
var r = await _gainfoPermissionApi.GetPermissionsDeviceCodesAsync(userCode);
if (r.Code != Kurisu.RemoteCall.Default.ApiStateCode.Success)
{
true.ThrowIfTrue(r.Msg);
}
var code = await _dbContext.Queryable<DeviceEntity>().Where(x => x.UniqueNo == deviceUniqueNo).Select(x => x.Code).SingleAsync();
r.Data.Contains(code).ThrowIfFalse("无权消费");
}
/// <summary>
/// 获取当前消费人员
/// </summary>
@@ -142,6 +159,7 @@ public class OrderService : IOrderService
if (request.UserUniqueNo.StartsWith("01"))
{
gainfo = await GetUserByQrCodeAsync(request.UserUniqueNo);
await CheckPermissionAsync(gainfo.Code, request.DeviceUniqueNo);
}
else if (request.UserUniqueNo.StartsWith("02"))
{