From b0db5ca3bbcf7024a9f3a2bf54911adc8a727efb Mon Sep 17 00:00:00 2001 From: d15801543974 <1194861427@qq.com> Date: Thu, 16 Jan 2020 14:30:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?:zap:=20=E4=BC=98=E5=8C=96BaseEntity,?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=AE=A1=E8=AE=A1=E5=8A=9F=E8=83=BD=E3=80=82?= =?UTF-8?q?=20(#252)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保存时自动设置创建人 修改时自动设置修改人 --- .../java/me/zhengjie/base/BaseEntity.java | 35 ++++++++++++++++--- .../src/main/java/me/zhengjie/AppRun.java | 3 ++ .../me/zhengjie/config/AuditorConfig.java | 28 +++++++++++++++ 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/config/AuditorConfig.java diff --git a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java index d1d40045..246c3c90 100644 --- a/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java +++ b/eladmin-common/src/main/java/me/zhengjie/base/BaseEntity.java @@ -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 {} diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index 3a913697..5b3f1e76 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -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 { diff --git a/eladmin-system/src/main/java/me/zhengjie/config/AuditorConfig.java b/eladmin-system/src/main/java/me/zhengjie/config/AuditorConfig.java new file mode 100644 index 00000000..f5021707 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/config/AuditorConfig.java @@ -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 { + + /** + * 返回操作员标志信息 + * + * @return + */ + @Override + public Optional getCurrentAuditor() { + // 这里应根据实际业务情况获取具体信息 + return Optional.of(SecurityUtils.getUsername()); + } +} From 06992e06e2a7b6fad113803e6e097d09a60fb444 Mon Sep 17 00:00:00 2001 From: wtune <59522871+wtune@users.noreply.github.com> Date: Thu, 16 Jan 2020 14:32:01 +0800 Subject: [PATCH 2/3] :zap: add index on dict.name (#256) --- sql/eladmin.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 6184b3b7..ec2126ee 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -103,7 +103,8 @@ CREATE TABLE `dict` ( `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字典名称', `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - PRIMARY KEY (`id`) USING BTREE + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_name` (`name`) ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据字典' ROW_FORMAT = Compact; -- ---------------------------- From 5f8fa1f2a744722298525c7836351f57e5a8a9db Mon Sep 17 00:00:00 2001 From: wtune <59522871+wtune@users.noreply.github.com> Date: Thu, 16 Jan 2020 14:32:17 +0800 Subject: [PATCH 3/3] :zap: add index on dept.pid (#254) --- sql/eladmin.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/eladmin.sql b/sql/eladmin.sql index ec2126ee..c2215f27 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -80,7 +80,8 @@ CREATE TABLE `dept` ( `pid` bigint(20) NOT NULL COMMENT '上级部门', `enabled` bit(1) NOT NULL COMMENT '状态', `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', - PRIMARY KEY (`id`) USING BTREE + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_pid` (`pid`) ) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门' ROW_FORMAT = Compact; -- ----------------------------