From 21c18d4b9a20597d137aea4aafd7b9aa026df484 Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:33:25 +0800 Subject: [PATCH] feat: add approvedTime for comment and reply (#2746) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind feature /milestone 2.0.0-rc.1 /kind api-change /area core #### What this PR does / why we need it: 评论和回复新增 approvedTime 属性 1. 此属性在创建时如果是不需要审核就公开的则会填充当前时间 2. 目前没有审核功能,审核是 Console 端去更新的 approved 字段,因此需要更新 approved 时判断有没有设置 approvedTime 没有则填充当前时间,后续有审核功能后则再由后端处理 #### Which issue(s) this PR fixes: Fixes #2738 #### Special notes for your reviewer: /cc @halo-dev/sig-halo #### Does this PR introduce a user-facing change? ```release-note 评论和回复新增 approvedTime 属性 ``` --- .../run/halo/app/content/comment/CommentServiceImpl.java | 6 ++++++ .../java/run/halo/app/content/comment/ReplyServiceImpl.java | 6 ++++++ src/main/java/run/halo/app/core/extension/Comment.java | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/main/java/run/halo/app/content/comment/CommentServiceImpl.java b/src/main/java/run/halo/app/content/comment/CommentServiceImpl.java index 1023860d7..231b2acdc 100644 --- a/src/main/java/run/halo/app/content/comment/CommentServiceImpl.java +++ b/src/main/java/run/halo/app/content/comment/CommentServiceImpl.java @@ -2,10 +2,12 @@ package run.halo.app.content.comment; import static run.halo.app.extension.router.selector.SelectorUtil.labelAndFieldSelectorToPredicate; +import java.time.Instant; import java.util.Comparator; import java.util.Objects; import java.util.function.Function; import java.util.function.Predicate; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.security.core.context.ReactiveSecurityContextHolder; import org.springframework.stereotype.Component; @@ -81,6 +83,10 @@ public class CommentServiceImpl implements CommentService { } comment.getSpec() .setApproved(Boolean.FALSE.equals(commentSetting.getRequireReviewForNew())); + if (BooleanUtils.isTrue(comment.getSpec().getApproved()) + && comment.getSpec().getApprovedTime() == null) { + comment.getSpec().setApprovedTime(Instant.now()); + } comment.getSpec().setHidden(false); if (comment.getSpec().getOwner() != null) { return Mono.just(comment); diff --git a/src/main/java/run/halo/app/content/comment/ReplyServiceImpl.java b/src/main/java/run/halo/app/content/comment/ReplyServiceImpl.java index dedd85ae0..0863116f5 100644 --- a/src/main/java/run/halo/app/content/comment/ReplyServiceImpl.java +++ b/src/main/java/run/halo/app/content/comment/ReplyServiceImpl.java @@ -6,6 +6,7 @@ import java.time.Instant; import java.util.Comparator; import java.util.function.Function; import java.util.function.Predicate; +import org.apache.commons.lang3.BooleanUtils; import org.springframework.security.core.context.ReactiveSecurityContextHolder; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; @@ -62,6 +63,11 @@ public class ReplyServiceImpl implements ReplyService { reply.getSpec().setApproved( Boolean.FALSE.equals(commentSetting.getRequireReviewForNew())); reply.getSpec().setHidden(!reply.getSpec().getApproved()); + + if (BooleanUtils.isTrue(reply.getSpec().getApproved()) + && reply.getSpec().getApprovedTime() == null) { + reply.getSpec().setApprovedTime(Instant.now()); + } return reply; }); }) diff --git a/src/main/java/run/halo/app/core/extension/Comment.java b/src/main/java/run/halo/app/core/extension/Comment.java index 666da8708..42a0f08c4 100644 --- a/src/main/java/run/halo/app/core/extension/Comment.java +++ b/src/main/java/run/halo/app/core/extension/Comment.java @@ -65,6 +65,8 @@ public class Comment extends AbstractExtension { private String ipAddress; + private Instant approvedTime; + @Schema(required = true, defaultValue = "0") private Integer priority;