From fb20b1f1b27f2a52b6f7236939e9179dfca1c498 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Sun, 28 Sep 2025 15:22:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A8=BD=E6=9F=A5=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E8=AE=BE=E7=BD=AE=E6=8E=88=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/AuditDocumentService.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs b/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs index 6cd39dc14..5f8b2e5a3 100644 --- a/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs @@ -133,7 +133,7 @@ public class AuditDocumentService(IRepository _auditDocumentRepos return ResponseOutput.NotOk(_localizer["AuditDocument_RepeatAuditRecord"]); } - var find = _auditRecordRepository.Where(t => t.Id == addOrEditAuditRecord.Id, true).Include(t=>t.AuditRecordIdentityUserList).FirstOrDefault(); + var find = _auditRecordRepository.Where(t => t.Id == addOrEditAuditRecord.Id, true).Include(t => t.AuditRecordIdentityUserList).FirstOrDefault(); _mapper.Map(addOrEditAuditRecord, find); find.UpdateTime = DateTime.Now; @@ -175,10 +175,22 @@ public class AuditDocumentService(IRepository _auditDocumentRepos public async Task SetAuditRecordPermission(SetAuditRecordPermissionCommand inCommand) { - var find = _auditRecordPermissionRepository.FirstOrDefaultAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId); + var find = await _auditRecordPermissionRepository.FirstOrDefaultAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId); + if (find == null && inCommand.IsAuthorization) { - await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = inCommand.AuditDocumentId }, true); + + //闭包表中找到 设置Id为祖先的所有 后代 包括自己 + var matchIdList = await _auditDocumentClosureRepository.Where(t => inCommand.AuditDocumentId == t.AncestorId).Select(t => t.DescendantId).ToListAsync(); + + + foreach (var item in matchIdList) + { + await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = item }); + } + + await _auditRecordPermissionRepository.SaveChangesAsync(); + } else {