0
0

OprationLogService.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Threading.Tasks;
  2. using Microsoft.AspNetCore.Http;
  3. using AutoMapper;
  4. using Admin.Core.Common.Auth;
  5. using Admin.Core.Common.Input;
  6. using Admin.Core.Common.Output;
  7. using Admin.Core.Model.Admin;
  8. using Admin.Core.Repository.Admin;
  9. using Admin.Core.Service.Admin.OprationLog.Input;
  10. using Admin.Core.Service.Admin.OprationLog.Output;
  11. using Admin.Core.Common.Helpers;
  12. using Admin.Core.Common.Dbs;
  13. namespace Admin.Core.Service.Admin.OprationLog
  14. {
  15. public class OprationLogService : IOprationLogService
  16. {
  17. private readonly IUser _user;
  18. private readonly IMapper _mapper;
  19. private readonly IHttpContextAccessor _context;
  20. private readonly IOprationLogRepository _oprationLogRepository;
  21. public OprationLogService(
  22. IUser user,
  23. IMapper mapper,
  24. IHttpContextAccessor context,
  25. IOprationLogRepository oprationLogRepository
  26. )
  27. {
  28. _user = user;
  29. _mapper = mapper;
  30. _context = context;
  31. _oprationLogRepository = oprationLogRepository;
  32. }
  33. public async Task<IResponseOutput> PageAsync(PageInput<OprationLogEntity> input)
  34. {
  35. var userName = input.Filter?.CreatedUserName;
  36. var list = await _oprationLogRepository.Select
  37. .WhereIf(userName.NotNull(), a => a.CreatedUserName.Contains(userName))
  38. .Count(out var total)
  39. .OrderByDescending(true, c => c.Id)
  40. .Page(input.CurrentPage, input.PageSize)
  41. .ToListAsync<OprationLogListOutput>();
  42. var data = new PageOutput<OprationLogListOutput>()
  43. {
  44. List = list,
  45. Total = total
  46. };
  47. return ResponseOutput.Ok(data);
  48. }
  49. public async Task<IResponseOutput> AddAsync(OprationLogAddInput input)
  50. {
  51. string ua = _context.HttpContext.Request.Headers["User-Agent"];
  52. var client = UAParser.Parser.GetDefault().Parse(ua);
  53. var device = client.Device.Family;
  54. device = device.ToLower() == "other" ? "" : device;
  55. input.Browser = client.UA.Family;
  56. input.Os = client.OS.Family;
  57. input.Device = device;
  58. input.BrowserInfo = ua;
  59. input.NickName = _user.NickName;
  60. input.IP = IPHelper.GetIP(_context?.HttpContext?.Request);
  61. var entity = _mapper.Map<OprationLogEntity>(input);
  62. var id = (await _oprationLogRepository.InsertAsync(entity)).Id;
  63. return ResponseOutput.Result(id > 0);
  64. }
  65. }
  66. }