diff --git a/src/main/java/cc/ryanc/halo/config/FreeMarkerAutoConfiguration.java b/src/main/java/cc/ryanc/halo/config/FreeMarkerAutoConfiguration.java index e854e7b85..3646c50ba 100644 --- a/src/main/java/cc/ryanc/halo/config/FreeMarkerAutoConfiguration.java +++ b/src/main/java/cc/ryanc/halo/config/FreeMarkerAutoConfiguration.java @@ -1,9 +1,10 @@ package cc.ryanc.halo.config; -import cc.ryanc.halo.model.method.RandomMethod; -import cc.ryanc.halo.model.method.RecentPostsMethod; -import cc.ryanc.halo.model.tag.ArticleTagDirective; -import cc.ryanc.halo.model.tag.CommonTagDirective; +import cc.ryanc.halo.model.freemarker.method.RandomMethod; +import cc.ryanc.halo.model.freemarker.method.RecentCommentsMethod; +import cc.ryanc.halo.model.freemarker.method.RecentPostsMethod; +import cc.ryanc.halo.model.freemarker.tag.ArticleTagDirective; +import cc.ryanc.halo.model.freemarker.tag.CommonTagDirective; import cc.ryanc.halo.service.OptionsService; import cc.ryanc.halo.service.UserService; import freemarker.template.TemplateModelException; @@ -46,6 +47,9 @@ public class FreeMarkerAutoConfiguration { @Autowired private RecentPostsMethod recentPostsMethod; + @Autowired + private RecentCommentsMethod recentCommentsMethod; + @PostConstruct public void setSharedVariable() { try { @@ -56,6 +60,7 @@ public class FreeMarkerAutoConfiguration { configuration.setSharedVariable("user", userService.findUser()); configuration.setSharedVariable("randomMethod", randomMethod); configuration.setSharedVariable("recentPostsMethod", recentPostsMethod); + configuration.setSharedVariable("recentCommentsMethod", recentCommentsMethod); } catch (TemplateModelException e) { log.error("Custom tags failed to load:{}", e.getMessage()); } diff --git a/src/main/java/cc/ryanc/halo/model/method/RandomMethod.java b/src/main/java/cc/ryanc/halo/model/freemarker/method/RandomMethod.java similarity index 95% rename from src/main/java/cc/ryanc/halo/model/method/RandomMethod.java rename to src/main/java/cc/ryanc/halo/model/freemarker/method/RandomMethod.java index 6ed1be3ac..4673a8445 100644 --- a/src/main/java/cc/ryanc/halo/model/method/RandomMethod.java +++ b/src/main/java/cc/ryanc/halo/model/freemarker/method/RandomMethod.java @@ -1,4 +1,4 @@ -package cc.ryanc.halo.model.method; +package cc.ryanc.halo.model.freemarker.method; import cn.hutool.core.util.RandomUtil; import freemarker.template.SimpleNumber; diff --git a/src/main/java/cc/ryanc/halo/model/freemarker/method/RecentCommentsMethod.java b/src/main/java/cc/ryanc/halo/model/freemarker/method/RecentCommentsMethod.java new file mode 100644 index 000000000..e18f1a221 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/freemarker/method/RecentCommentsMethod.java @@ -0,0 +1,35 @@ +package cc.ryanc.halo.model.freemarker.method; + +import cc.ryanc.halo.service.CommentService; +import freemarker.template.SimpleNumber; +import freemarker.template.TemplateMethodModelEx; +import freemarker.template.TemplateModelException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author : RYAN0UP + * @date : 2018/12/31 + */ +@Component +public class RecentCommentsMethod implements TemplateMethodModelEx { + + @Autowired + private CommentService commentService; + + /** + * 获取最近的评论 + * + * @param arguments 参数 + * @return Object + * @throws TemplateModelException TemplateModelException + */ + @Override + public Object exec(List arguments) throws TemplateModelException { + SimpleNumber argOne = (SimpleNumber) arguments.get(0); + int limit = argOne.getAsNumber().intValue(); + return commentService.getRecentComments(limit); + } +} diff --git a/src/main/java/cc/ryanc/halo/model/method/RecentPostsMethod.java b/src/main/java/cc/ryanc/halo/model/freemarker/method/RecentPostsMethod.java similarity index 95% rename from src/main/java/cc/ryanc/halo/model/method/RecentPostsMethod.java rename to src/main/java/cc/ryanc/halo/model/freemarker/method/RecentPostsMethod.java index 8575837cb..fd4abab81 100644 --- a/src/main/java/cc/ryanc/halo/model/method/RecentPostsMethod.java +++ b/src/main/java/cc/ryanc/halo/model/freemarker/method/RecentPostsMethod.java @@ -1,4 +1,4 @@ -package cc.ryanc.halo.model.method; +package cc.ryanc.halo.model.freemarker.method; import cc.ryanc.halo.service.PostService; import freemarker.template.SimpleNumber; diff --git a/src/main/java/cc/ryanc/halo/model/tag/ArticleTagDirective.java b/src/main/java/cc/ryanc/halo/model/freemarker/tag/ArticleTagDirective.java similarity index 97% rename from src/main/java/cc/ryanc/halo/model/tag/ArticleTagDirective.java rename to src/main/java/cc/ryanc/halo/model/freemarker/tag/ArticleTagDirective.java index d1cb94687..93130af48 100644 --- a/src/main/java/cc/ryanc/halo/model/tag/ArticleTagDirective.java +++ b/src/main/java/cc/ryanc/halo/model/freemarker/tag/ArticleTagDirective.java @@ -1,4 +1,4 @@ -package cc.ryanc.halo.model.tag; +package cc.ryanc.halo.model.freemarker.tag; import cc.ryanc.halo.model.enums.PostStatusEnum; import cc.ryanc.halo.model.enums.PostTypeEnum; diff --git a/src/main/java/cc/ryanc/halo/model/tag/CommonTagDirective.java b/src/main/java/cc/ryanc/halo/model/freemarker/tag/CommonTagDirective.java similarity index 98% rename from src/main/java/cc/ryanc/halo/model/tag/CommonTagDirective.java rename to src/main/java/cc/ryanc/halo/model/freemarker/tag/CommonTagDirective.java index d671d419b..577d913f4 100644 --- a/src/main/java/cc/ryanc/halo/model/tag/CommonTagDirective.java +++ b/src/main/java/cc/ryanc/halo/model/freemarker/tag/CommonTagDirective.java @@ -1,4 +1,4 @@ -package cc.ryanc.halo.model.tag; +package cc.ryanc.halo.model.freemarker.tag; import cc.ryanc.halo.service.*; import freemarker.core.Environment; diff --git a/src/main/java/cc/ryanc/halo/repository/CommentRepository.java b/src/main/java/cc/ryanc/halo/repository/CommentRepository.java index 46b7e64c3..8d57a1d4c 100644 --- a/src/main/java/cc/ryanc/halo/repository/CommentRepository.java +++ b/src/main/java/cc/ryanc/halo/repository/CommentRepository.java @@ -6,6 +6,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; @@ -78,7 +79,7 @@ public interface CommentRepository extends JpaRepository { * * @return List */ - @Query(value = "SELECT * FROM halo_comment ORDER BY comment_date DESC LIMIT 5", nativeQuery = true) + @Query(value = "SELECT * FROM HALO_COMMENT ORDER BY COMMENT_DATE DESC LIMIT 5", nativeQuery = true) List findTopFive(); /** @@ -88,4 +89,13 @@ public interface CommentRepository extends JpaRepository { * @return 评论数量 */ Integer countAllByCommentStatus(Integer status); + + /** + * 获取指定条数的评论 + * + * @param limit 条数 + * @return List + */ + @Query(value = "SELECT * FROM HALO_COMMENT WHERE COMMENT_STATUS = 0 ORDER BY COMMENT_DATE DESC LIMIT :limit",nativeQuery = true) + List getCommentsByLimit(@Param(value = "limit") int limit); } diff --git a/src/main/java/cc/ryanc/halo/repository/PostRepository.java b/src/main/java/cc/ryanc/halo/repository/PostRepository.java index eb13a587e..e6739f96c 100644 --- a/src/main/java/cc/ryanc/halo/repository/PostRepository.java +++ b/src/main/java/cc/ryanc/halo/repository/PostRepository.java @@ -27,7 +27,7 @@ public interface PostRepository extends JpaRepository { * * @return List */ - @Query(value = "SELECT * FROM halo_post where post_type='post' ORDER BY post_date DESC LIMIT 5", nativeQuery = true) + @Query(value = "SELECT * FROM HALO_POST WHERE POST_TYPE='post' ORDER BY POST_DATE DESC LIMIT 5", nativeQuery = true) List findTopFive(); /** @@ -195,7 +195,7 @@ public interface PostRepository extends JpaRepository { * @param pageable 分页信息 * @return Page */ - @Query(value = "select * from halo_post where post_status = 0 and post_type='post' and post_title like '%=:keyword%' or post_content like '%=:keyword%'", nativeQuery = true) + @Query(value = "SELECT * FROM HALO_POST WHERE POST_STATUS = 0 AND POST_TYPE='post' AND POST_TITLE LIKE '%=:keyword%' OR POST_CONTENT LIKE '%=:keyword%'", nativeQuery = true) Page findPostByPostTitleLikeOrPostContentLikeAndPostTypeAndPostStatus(String keyword, Pageable pageable); /** @@ -211,7 +211,7 @@ public interface PostRepository extends JpaRepository { * * @return Long */ - @Query(value = "select sum(post_views) from halo_post", nativeQuery = true) + @Query(value = "SELECT SUM(POST_VIEWS) FROM HALO_POST", nativeQuery = true) Long getPostViewsSum(); /** diff --git a/src/main/java/cc/ryanc/halo/service/CommentService.java b/src/main/java/cc/ryanc/halo/service/CommentService.java index 2d7f11ce9..0314ca294 100644 --- a/src/main/java/cc/ryanc/halo/service/CommentService.java +++ b/src/main/java/cc/ryanc/halo/service/CommentService.java @@ -132,4 +132,12 @@ public interface CommentService { * @return Long */ Long getCount(); + + /** + * 获取最近的评论 + * + * @param limit limit + * @return List + */ + List getRecentComments(int limit); } diff --git a/src/main/java/cc/ryanc/halo/service/impl/CommentServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/CommentServiceImpl.java index 51121efee..16db55d03 100644 --- a/src/main/java/cc/ryanc/halo/service/impl/CommentServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/CommentServiceImpl.java @@ -198,4 +198,15 @@ public class CommentServiceImpl implements CommentService { public Long getCount() { return commentRepository.count(); } + + /** + * 获取最近的评论 + * + * @param limit limit + * @return List + */ + @Override + public List getRecentComments(int limit) { + return commentRepository.getCommentsByLimit(limit); + } }