fix 处理已知异常

This commit is contained in:
2025-10-28 11:14:28 +08:00
parent d273610214
commit ad144a9e16
2 changed files with 51 additions and 26 deletions

View File

@@ -76,6 +76,22 @@ public class GainfoFaceService : IGainfoFaceService
public async Task<GainfoFacePageSummaryResponse> GetPageAsync(GainfoFacePageRequest request)
{
var tenantIds = _currentUser.GetUserClaim("tenants").Split(",").ToList();
if (tenantIds.IsEmpty())
{
return new GainfoFacePageSummaryResponse
{
Total = 0,
Exists = 0,
Page = new Pagination<GainfoFacePageResponse>
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Total = 0,
Data = null
}
};
}
var factories = request.Factories;
factories = factories.Where(x => tenantIds.Contains(x)).ToList();

View File

@@ -14,6 +14,7 @@ using Dlhis.Jip.Api.Requests;
using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.Cache;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
@@ -25,6 +26,7 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Services.Implements;
public class DeviceUploadLogService : IDeviceUploadLogService
{
private readonly IDbContext _dbContext;
private readonly RedisCache _redisCache;
private readonly IDormitoryRoomPowerSwitchApi _dormitoryRoomPowerSwitchApi;
private readonly ICurrentUser _currentUser;
private readonly IJinkoJipApi _jinkoJipApi;
@@ -32,6 +34,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
private readonly IDingTalkApi _dingTalkApi;
public DeviceUploadLogService(IDbContext dbContext,
RedisCache redisCache,
IDormitoryRoomPowerSwitchApi dormitoryRoomPowerSwitchApi,
ICurrentUser currentUser,
IJinkoJipApi jinkoJipApi,
@@ -39,6 +42,7 @@ public class DeviceUploadLogService : IDeviceUploadLogService
IDingTalkApi dingTalkApi)
{
_dbContext = dbContext;
_redisCache = redisCache;
_dormitoryRoomPowerSwitchApi = dormitoryRoomPowerSwitchApi;
_currentUser = currentUser;
_jinkoJipApi = jinkoJipApi;
@@ -314,35 +318,40 @@ public class DeviceUploadLogService : IDeviceUploadLogService
var room = await _dbContext.Queryable<DormitoryRoomEntity>().Where(x => x.RoomId == roomInfo.RoomId).SingleAsync();
if (room == null)
{
room = new DormitoryRoomEntity
//这里会有并发问题,加分布式锁
await using var lockHandler = await _redisCache.LockAsync("dormitory_room_key_" + roomInfo.RoomId, TimeSpan.FromSeconds(10), retryCount: 5);
if (lockHandler.Acquired)
{
EFenceCode = eFenceCode,
RoomId = roomInfo.RoomId,
RoomNo = roomInfo.RoomNo,
HotelId = roomInfo.HotelId,
PowerSwitch = true
};
await _dbContext.InsertAsync(room);
var personEntities = roomInfo.Persons.Select(x => new DormitoryRoomPersonEntity
room = new DormitoryRoomEntity
{
EFenceCode = eFenceCode,
RoomId = roomInfo.RoomId,
UserCode = x.UserCode,
UserName = x.UserName,
In = true,
IsDeleted = false
})
.ToList();
RoomNo = roomInfo.RoomNo,
HotelId = roomInfo.HotelId,
PowerSwitch = true
};
await _dbContext.InsertAsync(personEntities);
await _dbContext.InsertAsync(room);
var person = await _dbContext.Queryable<DormitoryRoomPersonEntity>()
.Where(x => x.RoomId != roomInfo.RoomId && x.UserCode == userCode)
.FirstAsync();
if (person != null)
{
await _dbContext.DeleteAsync(person);
var personEntities = roomInfo.Persons.Select(x => new DormitoryRoomPersonEntity
{
RoomId = roomInfo.RoomId,
UserCode = x.UserCode,
UserName = x.UserName,
In = true,
IsDeleted = false
})
.ToList();
await _dbContext.InsertAsync(personEntities);
var person = await _dbContext.Queryable<DormitoryRoomPersonEntity>()
.Where(x => x.RoomId != roomInfo.RoomId && x.UserCode == userCode)
.FirstAsync();
if (person != null)
{
await _dbContext.DeleteAsync(person);
}
}
}
else