Audit.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.szwl.annotation;
  2. import com.szwl.constant.AuditEnum;
  3. import java.lang.annotation.*;
  4. /**
  5. * 审计日志
  6. *
  7. * @author wuhs
  8. * @date 2022-05-17 11:40
  9. */
  10. @Target({ElementType.METHOD})
  11. @Retention(RetentionPolicy.RUNTIME)
  12. @Documented
  13. public @interface Audit {
  14. /**
  15. * 日志内容,支持SPEL,使用 #作为标识符
  16. * 使用说明:
  17. * 一、获取登录用户:
  18. * 1、#loginUser 即可获取登录的DefaultUserDetails对象,如果使用了@IgnoreToken,则获取到一个new DefaultUserDetails()
  19. *
  20. * 二、获取方法参数:
  21. * 1、接口参数为int、String等基本数据类型的,参数名为id,直接使用 #id则可以获取到值
  22. * 2、接口参数为对象的,如 #obj.propertyA、#obj.propertyB
  23. *
  24. * 三、获取方法返回值对象:
  25. * 1、#returnObj 为该方法的返回值对象
  26. *
  27. * 四、引用Bean
  28. * 1、使用@beanId可以获取spring中注册了的bean,例如:@sysUserServiceImpl.getById(#loginUser.userId)可以获取到SysUserService对象,使用里面的方法
  29. *
  30. * 五、综合使用:
  31. * 1、@Audit(content = "#loginUser.userRealName + '禁用了用户' + #banUserId")
  32. * 解析结果为:测试用户禁用了用户202205180000001
  33. * 2、@Audit(content = "#loginUser.userRealName + '给用户组[' + @sysUserGroupServiceImpl.getById(#req.userGroupId).userGroupName + ']添加了用户:' + #req.userIds")
  34. * 解析结果为:张三给用户组[测试组]添加了用户:202109151538040291a2d37fb9ef641398
  35. */
  36. String content();
  37. /**
  38. * 业务编号,支持SPEL
  39. */
  40. String bizNo() default "";
  41. /**
  42. * 业务类型
  43. */
  44. AuditEnum type();
  45. }