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  阅读(85)  评论(0)    收藏  举报