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