SysLog.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.jtzx.crm.module.sys.annotation;
  2. import com.jtzx.crm.module.sys.extension.SysLogAspectExtension;
  3. import com.jtzx.crm.module.sys.extension.impl.DefaultSysLogAspectExtension;
  4. import java.lang.annotation.*;
  5. /**
  6. * 放在Controller方法上,可将操作记录至系统日志中
  7. * 需同JVM中,存在对应的SysLogAspect切面类
  8. */
  9. @Target(ElementType.METHOD)
  10. @Retention(RetentionPolicy.RUNTIME)
  11. @Documented
  12. @Inherited
  13. public @interface SysLog {
  14. /**
  15. * 操作内容(如:新增部门)
  16. */
  17. String value();
  18. /**
  19. * 是否同步保存至系统日志数据表中
  20. * true = 同步保存:如果开启了事务/事务注解,若系统日志保存失败,则会抛出异常触发回滚,使得本次操作也失败
  21. * false = 异步保存:若系统日志保存失败,不影响本次操作
  22. */
  23. boolean syncSave() default false;
  24. /**
  25. * 保存系统日志至数据表的时机
  26. * 默认为仅“成功时”
  27. * 多个输入值间默认为“或”关系
  28. */
  29. When[] when() default When.SUCCESS;
  30. enum When {
  31. /**
  32. * 成功时
  33. */
  34. SUCCESS,
  35. /**
  36. * 失败时
  37. */
  38. FAILED,
  39. }
  40. /**
  41. * 扩展点,可以增强系统日志,在保存时的动作
  42. * 示例见:SysLogAspectExtensionForSysUserLogin
  43. */
  44. Class<? extends SysLogAspectExtension> extension() default DefaultSysLogAspectExtension.class;
  45. /**
  46. * 是否查询IP地址属地
  47. * 本功能可能存在网络开销,建议仅在关键处使用,并视情况决定是否搭配异步保存(即:syncSave = false)使用
  48. */
  49. boolean queryIPLocation() default false;
  50. }