fix 处理已知异常
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -186,7 +202,7 @@ public class GainfoFaceService : IGainfoFaceService
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
face.Face = request.Face;
|
||||
face.ModifiedBy = 1;
|
||||
face.ModifiedTime = DateTime.Now;
|
||||
|
||||
@@ -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;
|
||||
@@ -310,39 +314,44 @@ public class DeviceUploadLogService : IDeviceUploadLogService
|
||||
_logger.LogInformation("MCB未开启, userCode:{userCode} directionType:{directionType}", userCode, directionType);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user