基于注解和aspect记录修改操作日志

工作中遇到一个需求,管理员修改用户个人信息后,要通过邮件通知给超级管理员本次修改的列以及修改前后对应的值。首先想到的方法是遍历每个字段,逐一比较,后面发现工作量巨大,直接放弃。后来经过思考,参考swagger的实现方式,自己造轮子实现了一套基于注解和切面的操作日志记录功能。

关键maven依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

展示效果

在这里插入图片描述

具体实现

创建自定义注解
@Target({
   ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface OperateLogParam {
   

    /**
     *  名称
     * @return
     */
    String name() default "";

    /**
     *  连接字符
     * @return
     */
    String limit() default "";

    /**
     * 映射关系
     * @see 1-转正;0-试用期
     * @return
     */
    String map() default "";

    /**
     * 类型   可以根据需要制定默认值 处理逻辑见OperateLogEvent
     * @return
     */
    OperateLogEnum operateType() default OperateLogEnum.UPDATE_AFTER;


}
操作类型枚举类
public enum OperateLogEnum {
   

    UPDATE_AROUND,UPDATE_BEFORE,UPDATE_AFTER;

}
日志信息
@Data
@NoArgsConstructor
public class OperateLog {
   

    @TableId(value = "id",type = IdType.AUTO)
    private Long id;

    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    @ApiModelProperty(name = "optTime",value = "操作时间")
    private Date optTime;

    @ApiModelProperty(name = "field",value = "操作列")
    private String field;

    @ApiModelProperty(name = "value",value = "操作内容")
    private String value;

    @ApiModelProperty(name = "operator",value = "操作人")
    private String operator;

    private Long employeeId;

    public OperateLog(String field, String value, String operator, Long employeeId) {
   
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值