using System.Linq; using System.Threading.Tasks; using NCC.Common.Core.Manager; using NCC.Common.Filter; using NCC.Dependency; using NCC.DynamicApiController; using NCC.Extend.Entitys.lq_user_profile_audit; using NCC.Common.Enum; using NCC.FriendlyException; using Microsoft.AspNetCore.Mvc; using NCC.System.Entitys.Permission; using SqlSugar; namespace NCC.Extend { /// /// 用户主档字段级审计查询(R-001) /// [ApiDescriptionSettings(Tag = "绿纤用户主档审计", Name = "LqUserProfileAudit", Order = 200)] [Route("api/Extend/[controller]")] public class LqUserProfileAuditService : IDynamicApiController, ITransient { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; public LqUserProfileAuditService(ISqlSugarClient db, IUserManager userManager) { _db = db; _userManager = userManager; } /// /// 分页查询指定用户的字段级变更记录(需具备目标用户所在机构的数据权限或管理员)。 /// [HttpGet("logs")] public async Task GetLogs([FromQuery] string targetUserId, [FromQuery] PageInputBase page) { if (string.IsNullOrWhiteSpace(targetUserId)) { throw NCCException.Oh("targetUserId 不能为空"); } page ??= new PageInputBase(); var userInfo = await _userManager.GetUserInfo(); var target = await _db.Queryable() .Where(x => x.Id == targetUserId && x.DeleteMark == null) .FirstAsync(); if (target == null) { throw NCCException.Oh("目标用户不存在"); } if (!userInfo.isAdministrator && !userInfo.dataScope.Any(it => it.organizeId == target.OrganizeId && it.Edit == true)) { throw NCCException.Oh(ErrorCode.D1013); } var q = _db.Queryable() .Where(x => x.TargetUserId == targetUserId) .OrderBy(x => x.OperateTime, OrderByType.Desc); var data = await q.ToPagedListAsync(page.currentPage, page.pageSize); return PageResult.SqlSugarPageResult(data); } } }