SysOperLogService.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using ZR.Infrastructure.Constant;
  4. using ZR.Infrastructure.Helper;
  5. using ZR.Model;
  6. using ZR.Model.System;
  7. using ZR.Model.System.Dto;
  8. using ZR.Model.System.Generate;
  9. using ZR.Repository;
  10. namespace ZR.ServiceCore.Services
  11. {
  12. /// <summary>
  13. /// 操作日志
  14. /// </summary>
  15. [AppService(ServiceType = typeof(ISysOperLogService), ServiceLifetime = LifeTime.Transient)]
  16. public class SysOperLogService : BaseService<SysOperLog>, ISysOperLogService
  17. {
  18. /// <summary>
  19. /// 新增操作日志操作
  20. /// </summary>
  21. /// <param name="operLog">日志对象</param>
  22. public void InsertOperlog(SysOperLog operLog)
  23. {
  24. if (operLog.OperParam != null && operLog.OperParam.Length >= 1000)
  25. {
  26. operLog.OperParam = operLog.OperParam[..1000];
  27. }
  28. //sysOperLogRepository.AddSysOperLog(operLog);
  29. Insert(operLog);
  30. }
  31. /// <summary>
  32. /// 查询系统操作日志集合
  33. /// </summary>
  34. /// <param name="sysOper">操作日志对象</param>
  35. /// <returns>操作日志集合</returns>
  36. public PagedInfo<SysOperLog> SelectOperLogList(SysOperLogQueryDto sysOper)
  37. {
  38. var exp = Expressionable.Create<SysOperLog>();
  39. exp.AndIF(sysOper.BeginTime == null, it => it.OperTime >= DateTime.Now.ToShortDateString().ParseToDateTime());
  40. exp.AndIF(sysOper.BeginTime != null, it => it.OperTime >= sysOper.BeginTime && it.OperTime <= sysOper.EndTime);
  41. exp.AndIF(sysOper.Title.IfNotEmpty(), it => it.Title.Contains(sysOper.Title));
  42. exp.AndIF(sysOper.OperName.IfNotEmpty(), it => it.OperName.Contains(sysOper.OperName));
  43. exp.AndIF(sysOper.BusinessType != null, it => it.BusinessType == sysOper.BusinessType);
  44. exp.AndIF(sysOper.Status != null, it => it.Status == sysOper.Status);
  45. exp.AndIF(sysOper.OperParam != null, it => it.OperParam.Contains(sysOper.OperParam));
  46. exp.AndIF(sysOper.BusinessTypes != null, it => sysOper.BusinessTypes.Contains(it.BusinessType));
  47. var list = Queryable()
  48. .Where(exp.ToExpression())
  49. .OrderBy(x => x.OperId, OrderByType.Desc)
  50. .ToPage(sysOper);
  51. foreach (var item in list.Result)
  52. {
  53. if (!HttpContextExtension.HasSensitivePerm(App.HttpContext, SensitivePerms.ViewRealIP))
  54. {
  55. item.OperIp = MaskUtil.MaskIp(item.OperIp);
  56. }
  57. }
  58. return list;
  59. }
  60. /// <summary>
  61. /// 清空操作日志
  62. /// </summary>
  63. public void CleanOperLog()
  64. {
  65. var newTableName = $"sys_oper_log_{DateTime.Now:yyyyMMdd}";
  66. if (Queryable().Any() && !Context.DbMaintenance.IsAnyTable(newTableName))
  67. {
  68. Context.DbMaintenance.BackupTable("sys_oper_log", newTableName);
  69. }
  70. Truncate();
  71. }
  72. /// <summary>
  73. /// 批量删除系统操作日志
  74. /// </summary>
  75. /// <param name="operIds">需要删除的操作日志ID</param>
  76. /// <returns>结果</returns>
  77. public int DeleteOperLogByIds(long[] operIds)
  78. {
  79. return Delete(operIds);
  80. }
  81. /// <summary>
  82. /// 查询操作日志详细
  83. /// </summary>
  84. /// <param name="operId">操作ID</param>
  85. /// <returns>操作日志对象</returns>
  86. public SysOperLog SelectOperLogById(long operId)
  87. {
  88. return GetById(operId);
  89. }
  90. }
  91. }