优化BaseEntity,开启审计功能。 (#252)

保存时自动设置创建人
修改时自动设置修改人
pull/268/head
d15801543974 2020-01-16 14:30:34 +08:00 committed by elunez
parent da006624a4
commit b0db5ca3bb
3 changed files with 62 additions and 4 deletions

View File

@ -1,14 +1,20 @@
package me.zhengjie.base;
import lombok.*;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
import java.sql.Timestamp;
import java.lang.reflect.Field;
import java.sql.Timestamp;
/**
* @author Zheng Jie
@ -17,18 +23,39 @@ import java.lang.reflect.Field;
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity implements Serializable {
/** 删除标识 **/
@Column(name = "is_delete", columnDefinition = "bit default 0")
private Boolean isDelete = false;
@Column(name = "create_time")
/**
*
*/
@CreatedBy
@Column(name = "create_by", updatable = false)
private String createdBy;
/**
*
*/
@CreationTimestamp
@Column(name = "create_time", updatable = false)
private Timestamp createTime;
@Column(name = "update_time")
/**
*
*/
@LastModifiedBy
@Column(name = "update_by")
private String updatedBy;
/**
*
*/
@UpdateTimestamp
@Column(name = "update_time")
private Timestamp updateTime;
public @interface Update {}

View File

@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.GetMapping;
@ -18,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController;
*/
@EnableAsync
@RestController
/** 开启审计功能 */
@EnableJpaAuditing(auditorAwareRef = "auditorAware")
@SpringBootApplication
@EnableTransactionManagement
public class AppRun {

View File

@ -0,0 +1,28 @@
package me.zhengjie.config;
import me.zhengjie.utils.SecurityUtils;
import org.springframework.data.domain.AuditorAware;
import org.springframework.stereotype.Component;
import java.util.Optional;
/**
* @ :
* @ : Dong ZhaoYang
* @ : 2019/10/28
* @ : 10:29
*/
@Component("auditorAware")
public class AuditorConfig implements AuditorAware<String> {
/**
*
*
* @return
*/
@Override
public Optional<String> getCurrentAuditor() {
// 这里应根据实际业务情况获取具体信息
return Optional.of(SecurityUtils.getUsername());
}
}