0
0

OprationLogService.cs 2.5 KB

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