批量授权修改
continuous-integration/drone/push Build is running Details

Test_IRC_Net8
hang 2025-09-28 15:30:44 +08:00
parent fb20b1f1b2
commit 1523450b88
2 changed files with 22 additions and 17 deletions

View File

@ -175,27 +175,31 @@ public class AuditDocumentService(IRepository<AuditDocument> _auditDocumentRepos
public async Task<IResponseOutput> SetAuditRecordPermission(SetAuditRecordPermissionCommand inCommand) public async Task<IResponseOutput> SetAuditRecordPermission(SetAuditRecordPermissionCommand inCommand)
{ {
var find = await _auditRecordPermissionRepository.FirstOrDefaultAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId); var list = await _auditRecordPermissionRepository.Where(t => t.AuditRecordId == inCommand.AuditRecordId && inCommand.AuditDocumentIdList.Contains(t.AuditDocumentId)).ToListAsync();
if (find == null && inCommand.IsAuthorization) foreach (var item in list)
{
if (inCommand.IsAuthorization)
{ {
//闭包表中找到 设置Id为祖先的所有 后代 包括自己 //闭包表中找到 设置Id为祖先的所有 后代 包括自己
var matchIdList = await _auditDocumentClosureRepository.Where(t => inCommand.AuditDocumentId == t.AncestorId).Select(t => t.DescendantId).ToListAsync(); var matchIdList = await _auditDocumentClosureRepository.Where(t => item.AuditDocumentId == t.AncestorId).Select(t => t.DescendantId).ToListAsync();
foreach (var item in matchIdList) foreach (var matchItem in matchIdList)
{ {
await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = item }); await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = matchItem });
} }
await _auditRecordPermissionRepository.SaveChangesAsync(); await _auditRecordPermissionRepository.SaveChangesAsync();
} }
else else
{ {
await _auditRecordPermissionRepository.DeleteFromQueryAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId, true); await _auditRecordPermissionRepository.DeleteFromQueryAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == item.AuditDocumentId, true);
} }
}
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -80,7 +80,8 @@ public class AuditRecordQuery : PageInput
public class SetAuditRecordPermissionCommand public class SetAuditRecordPermissionCommand
{ {
public Guid AuditDocumentId { get; set; }
public List<Guid> AuditDocumentIdList { get; set; }
public Guid AuditRecordId { get; set; } public Guid AuditRecordId { get; set; }