{"id":1460,"date":"2021-10-21T14:28:37","date_gmt":"2021-10-21T06:28:37","guid":{"rendered":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=1460"},"modified":"2021-10-21T14:28:37","modified_gmt":"2021-10-21T06:28:37","slug":"%e8%ae%be%e7%bd%ae%e5%ae%a1%e8%ae%a1%e5%ad%97%e6%ae%b5","status":"publish","type":"post","link":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=1460","title":{"rendered":"\u8bbe\u7f6e\u5ba1\u8ba1\u5b57\u6bb5"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">1.Application\u4e0a\u589e\u52a0\u6ce8\u89e3\n@EnableJpaAuditing(auditorAwareRef = \"auditorAware\")\npublic class AdminServiceApplication {}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">2.baseEntity\u8bbe\u7f6e<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import io.swagger.annotations.ApiModelProperty;\nimport lombok.Getter;\nimport lombok.Setter;\nimport org.apache.commons.lang3.builder.ToStringBuilder;\nimport org.hibernate.annotations.CreationTimestamp;\nimport org.hibernate.annotations.UpdateTimestamp;\nimport org.springframework.data.annotation.CreatedBy;\nimport org.springframework.data.annotation.LastModifiedBy;\nimport org.springframework.data.jpa.domain.support.AuditingEntityListener;\n\nimport javax.persistence.Column;\nimport javax.persistence.EntityListeners;\nimport javax.persistence.MappedSuperclass;\nimport java.io.Serializable;\nimport java.lang.reflect.Field;\nimport java.sql.Timestamp;\n\n\/**\n * \u901a\u7528\u5b57\u6bb5\uff0c is_del \u6839\u636e\u9700\u6c42\u81ea\u884c\u6dfb\u52a0\n * @author\n * @Date 2019\u5e7410\u670824\u65e520:46:32\n *\/\n@Getter\n@Setter\n@MappedSuperclass\n@EntityListeners(AuditingEntityListener.class)\npublic class BaseEntity implements Serializable {\n\n    @CreatedBy\n    @Column(name = \"create_by\", updatable = false)\n    @ApiModelProperty(value = \"\u521b\u5efa\u4eba\", hidden = true)\n    private String createBy;\n\n    @LastModifiedBy\n    @Column(name = \"update_by\")\n    @ApiModelProperty(value = \"\u66f4\u65b0\u4eba\", hidden = true)\n    private String updatedBy;\n\n    @CreationTimestamp\n    @Column(name = \"create_time\", updatable = false)\n    @ApiModelProperty(value = \"\u521b\u5efa\u65f6\u95f4\", hidden = true)\n    private Timestamp createTime;\n\n    @UpdateTimestamp\n    @Column(name = \"update_time\")\n    @ApiModelProperty(value = \"\u66f4\u65b0\u65f6\u95f4\", hidden = true)\n    private Timestamp updateTime;\n\n    \/* \u5206\u7ec4\u6821\u9a8c *\/\n    public @interface Create {}\n\n    \/* \u5206\u7ec4\u6821\u9a8c *\/\n    public @interface Update {}\n\n    @Override\n    public String toString() {\n        ToStringBuilder builder = new ToStringBuilder(this);\n        Field&#91;] fields = this.getClass().getDeclaredFields();\n        try {\n            for (Field f : fields) {\n                f.setAccessible(true);\n                builder.append(f.getName(), f.get(this)).append(\"\\n\");\n            }\n        } catch (Exception e) {\n            builder.append(\"toString builder encounter an error\");\n        }\n        return builder.toString();\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>3.\u589e\u52a0\u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import org.springframework.data.domain.AuditorAware;\nimport org.springframework.stereotype.Component;\n\nimport java.util.Optional;\n\n@Component(\"auditorAware\")\npublic class AuditorConfig implements AuditorAware&lt;String> {\n\n    \/**\n     * \u8fd4\u56de\u64cd\u4f5c\u5458\u6807\u5fd7\u4fe1\u606f\n     *\n     * @return \/\n     *\/\n    @Override\n    public Optional&lt;String> getCurrentAuditor() {\n        try {\n            \/\/ \u8fd9\u91cc\u5e94\u6839\u636e\u5b9e\u9645\u4e1a\u52a1\u60c5\u51b5\u83b7\u53d6\u5177\u4f53\u4fe1\u606f\n            return Optional.of(SecurityUtils.getCurrentUsername());\n        }catch (Exception ignored){}\n        \/\/ \u7528\u6237\u5b9a\u65f6\u4efb\u52a1\uff0c\u6216\u8005\u65e0Token\u8c03\u7528\u7684\u60c5\u51b5\n        return Optional.of(\"System\");\n    }\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.Application\u4e0a\u589e\u52a0\u6ce8\u89e3 @EnableJpaAuditing(auditorAwareRef = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[114,115],"tags":[],"_links":{"self":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1460"}],"collection":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1460"}],"version-history":[{"count":3,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1460\/revisions"}],"predecessor-version":[{"id":1463,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1460\/revisions\/1463"}],"wp:attachment":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}