Blame view

netcore/src/Modularity/Extend/NCC.Extend/LqUserProfileAuditService.cs 2.37 KB
db9c79c0   “wangming”   feat: punch-based...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
  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
  {
      /// <summary>
      /// 用户主档字段级审计查询(R-001
      /// </summary>
      [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;
          }
  
          /// <summary>
          /// 分页查询指定用户的字段级变更记录(需具备目标用户所在机构的数据权限或管理员)。
          /// </summary>
          [HttpGet("logs")]
          public async Task<dynamic> 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<UserEntity>()
                  .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<LqUserProfileAuditEntity>()
                  .Where(x => x.TargetUserId == targetUserId)
                  .OrderBy(x => x.OperateTime, OrderByType.Desc);
  
              var data = await q.ToPagedListAsync(page.currentPage, page.pageSize);
              return PageResult<LqUserProfileAuditEntity>.SqlSugarPageResult(data);
          }
      }
  }