AuditLogAppServiceBase.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. using Abp.Application.Services.Dto;
  2. using Abp.Auditing;
  3. using Abp.Authorization;
  4. using Abp.Domain.Repositories;
  5. using Abp.Linq.Extensions;
  6. using Abp.Runtime.Caching;
  7. using VberZero.AppService.AuditLogs.Dto;
  8. using VberZero.AppService.Base;
  9. using VberZero.AppService.Base.Dto;
  10. using VberZero.Auditing;
  11. using VberZero.BaseSystem;
  12. using VberZero.BaseSystem.Users;
  13. using VberZero.Tools.Lambda;
  14. using VberZero.Tools.StringModel;
  15. namespace VberZero.AppService.AuditLogs
  16. {
  17. [AbpAuthorize, AuditLog("系统日志", "日志")]
  18. public class AuditLogAppServiceBase : VzCrudAppServiceBase<AuditLog, SysLogDto, long, VzPagedRequestDto>, IAuditLogsAppServiceBase
  19. {
  20. public AuditLogAppServiceBase(ICacheManager cacheManager, IRepository<AuditLog, long> repository, IRepository<User, long> userRepository, IRepository<UserLoginAttempt, long> userLoginRepository) : base(repository)
  21. {
  22. UserRepository = userRepository;
  23. UserLoginRepository = userLoginRepository;
  24. CacheManager = cacheManager;
  25. }
  26. protected IRepository<User, long> UserRepository { get; }
  27. protected IRepository<UserLoginAttempt, long> UserLoginRepository { get; }
  28. /// <summary>
  29. /// 登录日志
  30. /// </summary>
  31. /// <param name="input"></param>
  32. /// <returns></returns>
  33. [DisableAuditing]
  34. public async Task<PagedResultDto<UserLoginDto>> GetAllLogin(VzPagedRequestDto input)
  35. {
  36. CheckGetAllPermission();
  37. var q1 = UserLoginRepository.GetAll();
  38. var query = from l in q1
  39. join u in UserRepository.GetAll() on l.UserId equals u.Id into lu
  40. from a in lu.DefaultIfEmpty()
  41. select new UserLoginDto
  42. {
  43. Id = l.Id,
  44. UserName = a.Surname + a.Name,
  45. UserId = l.UserId,
  46. TenantId = l.TenantId,
  47. TenancyName = l.TenancyName,
  48. UserNameOrEmailOrPhone = l.UserNameOrEmailOrPhone,
  49. ClientName = l.ClientName,
  50. ClientIpAddress = l.ClientIpAddress,
  51. CreationTime = l.CreationTime,
  52. BrowserInfo = l.BrowserInfo,
  53. Result = l.Result,
  54. };
  55. query = query.WhereIf(input.KeyWords.NotEmpty(),
  56. a => a.UserName.Contains(input.KeyWords) || a.UserNameOrEmailOrPhone.Contains(input.KeyWords) ||
  57. a.ClientName.Contains(input.KeyWords) ||
  58. a.ClientIpAddress.Contains(input.KeyWords) ||
  59. a.BrowserInfo.Contains(input.KeyWords));
  60. if (input.SearchList is { Count: > 0 })
  61. {
  62. List<LambdaObject> objList = new List<LambdaObject>();
  63. foreach (var o in input.SearchList)
  64. {
  65. if (o.KeyWords.Empty())
  66. continue;
  67. object keyWords = o.KeyWords;
  68. objList.Add(new LambdaObject
  69. {
  70. FieldType = (LambdaFieldType)o.FieldType,
  71. FieldName = o.KeyField,
  72. FieldValue = keyWords,
  73. ExpType = (LambdaExpType)o.ExpType
  74. });
  75. }
  76. var exp = objList.GetExp<UserLoginDto>();
  77. query = query.Where(exp);
  78. }
  79. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  80. query = query.OrderByDescending(a => a.CreationTime);
  81. query = ApplyPaging(query, input);
  82. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  83. var dtos = new PagedResultDto<UserLoginDto>(totalCount, entities.Select(MapToUserLoginDto).ToList());
  84. return dtos;
  85. }
  86. [DisableAuditing]
  87. public override async Task<PagedResultDto<SysLogDto>> GetAll(VzPagedRequestDto input)
  88. {
  89. CheckGetAllPermission();
  90. var q1 = CreateFilteredQuery(input).Where(a => a.LogType != 0);
  91. var query = from l in q1
  92. join u in UserRepository.GetAll() on l.UserId equals u.Id into lu
  93. from a in lu.DefaultIfEmpty()
  94. select new SysLogDto
  95. {
  96. Id = l.Id,
  97. UserName = a.Surname + a.Name,
  98. ExecutionTime = l.ExecutionTime,
  99. ExecutionDuration = l.ExecutionDuration,
  100. MethodName = l.MethodName,
  101. ServiceName = l.ServiceName,
  102. Parameters = l.Parameters,
  103. UserId = l.UserId,
  104. ClientName = l.ClientName,
  105. ClientIpAddress = l.ClientIpAddress,
  106. BrowserInfo = l.BrowserInfo,
  107. };
  108. query = query.WhereIf(input.KeyWords.NotEmpty(),
  109. a => a.UserName.Contains(input.KeyWords) || a.ServiceName.Contains(input.KeyWords) || a.MethodName.Contains(input.KeyWords) ||
  110. a.ClientName.Contains(input.KeyWords) ||
  111. a.ClientIpAddress.Contains(input.KeyWords) ||
  112. a.BrowserInfo.Contains(input.KeyWords));
  113. if (input.SearchList is { Count: > 0 })
  114. {
  115. List<LambdaObject> objList = new List<LambdaObject>();
  116. foreach (var o in input.SearchList)
  117. {
  118. if (o.KeyWords.Empty())
  119. continue;
  120. object keyWords = o.KeyWords;
  121. objList.Add(new LambdaObject
  122. {
  123. FieldType = (LambdaFieldType)o.FieldType,
  124. FieldName = o.KeyField,
  125. FieldValue = keyWords,
  126. ExpType = (LambdaExpType)o.ExpType
  127. });
  128. }
  129. var exp = objList.GetExp<SysLogDto>();
  130. query = query.Where(exp);
  131. }
  132. var totalCount = await AsyncQueryableExecuter.CountAsync(query);
  133. query = query.OrderByDescending(a => a.Id);
  134. query = ApplyPaging(query, input);
  135. var entities = await AsyncQueryableExecuter.ToListAsync(query);
  136. var dtos = new PagedResultDto<SysLogDto>(totalCount, entities);
  137. return dtos;
  138. }
  139. protected override SysLogDto MapToEntityDto(AuditLog entity)
  140. {
  141. var dto = base.MapToEntityDto(entity);
  142. if (dto.UserId.HasValue)
  143. {
  144. dto.UserName = CacheManager.GetCache<string, User>(VzConsts.CacheSystemUser).Get($"{dto.UserId}",
  145. () => UserRepository.FirstOrDefault(a => a.Id == dto.UserId))?.FullName ?? "";
  146. }
  147. else
  148. {
  149. dto.UserName = "";
  150. }
  151. return dto;
  152. }
  153. protected UserLoginDto MapToUserLoginDto(UserLoginDto dto)
  154. {
  155. //var dto = ObjectMapper.Map<UserLoginDto>(entity);
  156. //if (dto.UserId.HasValue)
  157. //{
  158. // dto.UserName = CacheManager.GetCache<string, User>(VzConsts.CacheSystemUser).Get($"{dto.UserId}",
  159. // () => UserRepository.FirstOrDefault(a => a.Id == dto.UserId))?.FullName ?? "";
  160. //}
  161. //else
  162. //{
  163. // dto.UserName = "";
  164. //}
  165. dto.LoginResult = dto.Result.ToString();
  166. return dto;
  167. }
  168. }
  169. }