RuoYi框架-aspect切面记录CRUD操作人操作时间

RuoYi框架-aspect切面记录CRUD操作人操作时间

传参继承BaseEntity,每次在执行crud(service中含有insert/update/delete)方法的时候,都会从LoginHelper中获取到当前用户,可以存入到操作人字段(createBy / updateBy),当前时间存入到操作时间(create_time / update_time)

切面代码:

package com.ruoyi.framework.aspectj;

import com.fasterxml.jackson.databind.ser.Serializers;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.UniversityBaseEntity;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.LoginHelper;
import com.ruoyi.common.utils.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
* 操作人操作时间切面
*
* @author sky
*/
@Aspect
@Component
public class AutoFillAspect {

@Before("execution(* com.ruoyi..service...insert(..))")
public void beforeInsert(JoinPoint joinPoint) {
fillCreateFields(joinPoint);
}

@Before("execution(* com.ruoyi..service...update(..)) || " +
"execution(* com.ruoyi..service...delete(..))")
public void beforeUpdateOrDelete(JoinPoint joinPoint) {
fillUpdateFields(joinPoint);
}

private void fillCreateFields(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
if (args != null && args.length > 0) {
for (Object arg : args) {
if (arg instanceof BaseEntity) {
BaseEntity entity = (BaseEntity) arg;
String username = LoginHelper.getUsername();
if (StringUtils.isNotEmpty(username)) {
entity.setCreateBy(username);
entity.setCreateTime(DateUtils.getNowDate());
// 新增时也设置更新字段
entity.setUpdateBy(username);
entity.setUpdateTime(DateUtils.getNowDate());
}
}
}
}
}

private void fillUpdateFields(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
if (args != null && args.length > 0) {
for (Object arg : args) {
if (arg instanceof UniversityBaseEntity) {
UniversityBaseEntity entity = (UniversityBaseEntity) arg;
String username = LoginHelper.getUsername();
if (StringUtils.isNotEmpty(username)) {
entity.setUpdateBy(username);
entity.setUpdateTime(DateUtils.getNowDate());
}
}
}
}
}
}

BaseEntity代码

package com.ruoyi.common.core.domain;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class BaseEntity implements Serializable {

/**
* 创建时间
*/
private Date createTime;

/**
* 修改时间
*/
private Date updateTime;

/**
* 创建人
*/
private String createBy;

/**
* 修改人
*/
private String updateBy;

/**
* 删除标识 0否 1是
*/
private Integer isDelete;

/**
* 禁用标识 0否 1是
*/
private Integer isDisabled;

/**
* 冗余字段01
*/
private String ext01;

/**
* 冗余字段02
*/
private String ext02;

/**
* 冗余字段03
*/
private String ext03;

/**
* 冗余字段04
*/
private String ext04;

/**
* 冗余字段05
*/
private String ext05;

/**
* 冗余字段06
*/
private String ext06;

/**
* 冗余字段07
*/
private String ext07;

/**
* 冗余字段08
*/
private String ext08;

/**
* 冗余字段09
*/
private String ext09;

/**
* 冗余字段10
*/
private String ext10;

/**
* 冗余字段11
*/
private String ext11;

/**
* 冗余字段12
*/
private String ext12;

/**
* 冗余字段13
*/
private String ext13;

/**
* 冗余字段14
*/
private String ext14;

/**
* 冗余字段15
*/
private String ext15;

}

posted @ 2025-05-09 08:08  skystrivegao  阅读(153)  评论(0)    收藏  举报