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);
}
}
}