From 6687db022c235272548c99fbe1020da479e8cf52 Mon Sep 17 00:00:00 2001 From: johnniang <1340692778@qq.com> Date: Wed, 20 Feb 2019 11:16:17 +0800 Subject: [PATCH] Refactor PostService --- .../cc/ryanc/halo/service/PostService.java | 26 +---------- .../halo/service/impl/OptionsServiceImpl.java | 3 +- .../halo/service/impl/PostServiceImpl.java | 44 +++++++++---------- .../java/cc/ryanc/halo/task/PostSyncTask.java | 5 +-- .../web/controller/admin/AdminController.java | 2 +- .../controller/admin/CommentController.java | 2 +- .../web/controller/admin/PageController.java | 6 +-- .../web/controller/admin/PostController.java | 12 ++--- .../controller/api/ApiCommentController.java | 2 +- .../web/controller/api/ApiMetaWeBlog.java | 8 ++-- .../controller/core/InstallController.java | 2 +- .../front/FrontCommentController.java | 2 +- 12 files changed, 44 insertions(+), 70 deletions(-) diff --git a/src/main/java/cc/ryanc/halo/service/PostService.java b/src/main/java/cc/ryanc/halo/service/PostService.java index 7e9a2e20f..adfc418a2 100755 --- a/src/main/java/cc/ryanc/halo/service/PostService.java +++ b/src/main/java/cc/ryanc/halo/service/PostService.java @@ -4,6 +4,7 @@ import cc.ryanc.halo.model.domain.Category; import cc.ryanc.halo.model.domain.Post; import cc.ryanc.halo.model.domain.Tag; import cc.ryanc.halo.model.dto.Archive; +import cc.ryanc.halo.service.base.CrudService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.lang.NonNull; @@ -22,23 +23,7 @@ import java.util.Optional; * @author : RYAN0UP * @date : 2017/11/14 */ -public interface PostService { - - /** - * 新增文章 - * - * @param post Post - * @return Post - */ - Post save(Post post); - - /** - * 根据编号删除文章 - * - * @param postId postId - * @return Post - */ - Post remove(Long postId); +public interface PostService extends CrudService { /** * 修改文章状态 @@ -104,13 +89,6 @@ public interface PostService { */ List findPostByStatus(Integer status, String postType); - /** - * 根据编号查询文章 - * - * @param postId postId - * @return Post - */ - Optional findByPostId(Long postId); /** * 根据编号和类型查询文章 diff --git a/src/main/java/cc/ryanc/halo/service/impl/OptionsServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/OptionsServiceImpl.java index 2f5ba6f10..1276232e9 100755 --- a/src/main/java/cc/ryanc/halo/service/impl/OptionsServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/OptionsServiceImpl.java @@ -8,6 +8,7 @@ import cc.ryanc.halo.utils.ServiceUtils; import cn.hutool.core.util.StrUtil; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.HashMap; import java.util.List; @@ -41,7 +42,7 @@ public class OptionsServiceImpl extends AbstractCrudService imp @Override @CacheEvict(value = POSTS_CACHE_NAME, allEntries = true, beforeInvocation = true) public void saveOptions(Map options) { - if (null != options && !options.isEmpty()) { + if (!CollectionUtils.isEmpty(options)) { options.forEach(this::saveOption); } } diff --git a/src/main/java/cc/ryanc/halo/service/impl/PostServiceImpl.java b/src/main/java/cc/ryanc/halo/service/impl/PostServiceImpl.java index 99a75d87b..7c7eb411c 100755 --- a/src/main/java/cc/ryanc/halo/service/impl/PostServiceImpl.java +++ b/src/main/java/cc/ryanc/halo/service/impl/PostServiceImpl.java @@ -11,9 +11,9 @@ import cc.ryanc.halo.repository.PostRepository; import cc.ryanc.halo.service.CategoryService; import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.service.TagService; +import cc.ryanc.halo.service.base.AbstractCrudService; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HtmlUtil; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; @@ -41,20 +41,27 @@ import static cc.ryanc.halo.model.dto.HaloConst.POSTS_VIEWS; * @date : 2017/11/14 */ @Service -public class PostServiceImpl implements PostService { +public class PostServiceImpl extends AbstractCrudService implements PostService { private static final String POSTS_CACHE_NAME = "posts"; private static final String COMMENTS_CACHE_NAME = "comments"; - @Autowired - private PostRepository postRepository; + private final PostRepository postRepository; - @Autowired - private CategoryService categoryService; + private final CategoryService categoryService; + + private final TagService tagService; + + public PostServiceImpl(PostRepository postRepository, + CategoryService categoryService, + TagService tagService) { + super(postRepository); + this.postRepository = postRepository; + this.categoryService = categoryService; + this.tagService = tagService; + } - @Autowired - private TagService tagService; /** * 保存文章 @@ -64,7 +71,7 @@ public class PostServiceImpl implements PostService { */ @Override @CacheEvict(value = {POSTS_CACHE_NAME, COMMENTS_CACHE_NAME}, allEntries = true, beforeInvocation = true) - public Post save(Post post) { + public Post create(Post post) { int postSummary = 50; if (StrUtil.isNotEmpty(OPTIONS.get(BlogPropertiesEnum.POST_SUMMARY.getProp()))) { postSummary = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.POST_SUMMARY.getProp())); @@ -76,7 +83,7 @@ public class PostServiceImpl implements PostService { } else { post.setPostSummary(summaryText); } - return postRepository.save(post); + return super.create(post); } /** @@ -87,8 +94,8 @@ public class PostServiceImpl implements PostService { */ @Override @CacheEvict(value = {POSTS_CACHE_NAME, COMMENTS_CACHE_NAME}, allEntries = true, beforeInvocation = true) - public Post remove(Long postId) { - final Optional post = this.findByPostId(postId); + public Post removeById(Long postId) { + final Optional post = fetchById(postId); postRepository.delete(post.get()); return post.get(); } @@ -103,7 +110,7 @@ public class PostServiceImpl implements PostService { @Override @CacheEvict(value = POSTS_CACHE_NAME, allEntries = true, beforeInvocation = true) public Post updatePostStatus(Long postId, Integer status) { - final Optional post = this.findByPostId(postId); + final Optional post = fetchById(postId); post.get().setPostStatus(status); return postRepository.save(post.get()); } @@ -199,17 +206,6 @@ public class PostServiceImpl implements PostService { return postRepository.findPostsByPostStatusAndPostType(status, postType); } - /** - * 根据编号查询文章 - * - * @param postId postId - * @return Optional - */ - @Override - public Optional findByPostId(Long postId) { - return postRepository.findById(postId); - } - /** * 根据编号和类型查询文章 * diff --git a/src/main/java/cc/ryanc/halo/task/PostSyncTask.java b/src/main/java/cc/ryanc/halo/task/PostSyncTask.java index 0a40111fc..16e7da299 100644 --- a/src/main/java/cc/ryanc/halo/task/PostSyncTask.java +++ b/src/main/java/cc/ryanc/halo/task/PostSyncTask.java @@ -19,13 +19,12 @@ public class PostSyncTask { */ public void postSync() { final PostService postService = SpringUtil.getBean(PostService.class); - Post post = null; int count = 0; for (Long key : POSTS_VIEWS.keySet()) { - post = postService.findByPostId(key).orElse(null); + Post post = postService.getNullableById(key); if (null != post) { post.setPostViews(post.getPostViews() + POSTS_VIEWS.get(key)); - postService.save(post); + postService.create(post); count++; } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java index 3a7db1484..d59d217dc 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/AdminController.java @@ -341,7 +341,7 @@ public class AdminController extends BaseController { if (null == post.getPostUpdate()) { post.setPostUpdate(new Date()); } - postService.save(post); + postService.create(post); return new JsonResult(ResultCodeEnum.SUCCESS.getCode()); } } diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java index ca9ca1043..c968d8dc5 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/CommentController.java @@ -152,7 +152,7 @@ public class CommentController extends BaseController { HttpServletRequest request, HttpSession session) { try { - final Post post = postService.findByPostId(postId).orElse(new Post()); + final Post post = postService.fetchById(postId).orElse(new Post()); //博主信息 final User user = (User) session.getAttribute(USER_SESSION_KEY); diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java index 05d3b8f38..52f275bd3 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/PageController.java @@ -243,7 +243,7 @@ public class PageController { post.setUser(user); post.setPostType(PostTypeEnum.POST_TYPE_PAGE.getDesc()); if (null != post.getPostId()) { - final Post oldPost = postService.findByPostId(post.getPostId()).get(); + final Post oldPost = postService.fetchById(post.getPostId()).get(); if (null == post.getPostDate()) { post.setPostDate(DateUtil.date()); } @@ -255,7 +255,7 @@ public class PageController { if (StrUtil.equals(post.getPostThumbnail(), BlogPropertiesEnum.DEFAULT_THUMBNAIL.getProp())) { post.setPostThumbnail("/static/halo-frontend/images/thumbnail/thumbnail-" + RandomUtil.randomInt(1, 11) + ".jpg"); } - postService.save(post); + postService.create(post); logsService.save(LogsRecord.PUSH_PAGE, post.getPostTitle(), request); return new JsonResult(ResultCodeEnum.SUCCESS.getCode(), msg); } catch (Exception e) { @@ -273,7 +273,7 @@ public class PageController { */ @GetMapping(value = "/edit") public String editPage(@RequestParam("pageId") Long pageId, Model model) { - final Optional post = postService.findByPostId(pageId); + final Optional post = postService.fetchById(pageId); final List customTpls = HaloUtils.getCustomTpl(OPTIONS.get(BlogPropertiesEnum.THEME.getProp())); model.addAttribute("post", post.orElse(new Post())); model.addAttribute("customTpls", customTpls); diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java index 803b773af..011e88c84 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/PostController.java @@ -118,7 +118,7 @@ public class PostController extends BaseController { */ @GetMapping(value = "/edit") public String editPost(@RequestParam("postId") Long postId, Model model) { - final Optional post = postService.findByPostId(postId); + final Optional post = postService.fetchById(postId); model.addAttribute("post", post.orElse(new Post())); return "admin/admin_post_edit"; } @@ -152,7 +152,7 @@ public class PostController extends BaseController { if (StrUtil.equals(post.getPostThumbnail(), BlogPropertiesEnum.DEFAULT_THUMBNAIL.getProp())) { post.setPostThumbnail("/static/halo-frontend/images/thumbnail/thumbnail-" + RandomUtil.randomInt(1, 11) + ".jpg"); } - postService.save(post); + postService.create(post); logsService.save(LogsRecord.PUSH_POST, post.getPostTitle(), request); return new JsonResult(ResultCodeEnum.SUCCESS.getCode(), localeMessageUtil.getMessage("code.admin.common.save-success")); } catch (Exception e) { @@ -176,7 +176,7 @@ public class PostController extends BaseController { @RequestParam("cateList") List cateList, @RequestParam("tagList") String tagList) { //old data - final Post oldPost = postService.findByPostId(post.getPostId()).orElse(new Post()); + final Post oldPost = postService.fetchById(post.getPostId()).orElse(new Post()); post.setPostViews(oldPost.getPostViews()); post.setPostContent(MarkdownUtils.renderMarkdown(post.getPostContentMd())); post.setUser(oldPost.getUser()); @@ -191,7 +191,7 @@ public class PostController extends BaseController { if (StrUtil.equals(post.getPostThumbnail(), BlogPropertiesEnum.DEFAULT_THUMBNAIL.getProp())) { post.setPostThumbnail("/static/halo-frontend/images/thumbnail/thumbnail-" + RandomUtil.randomInt(1, 11) + ".jpg"); } - post = postService.save(post); + post = postService.create(post); if (null != post) { return new JsonResult(ResultCodeEnum.SUCCESS.getCode(), localeMessageUtil.getMessage("code.admin.common.update-success")); } else { @@ -243,8 +243,8 @@ public class PostController extends BaseController { @GetMapping(value = "/remove") public String removePost(@RequestParam("postId") Long postId, @RequestParam("postType") String postType) { try { - final Optional post = postService.findByPostId(postId); - postService.remove(postId); + final Optional post = postService.fetchById(postId); + postService.removeById(postId); logsService.save(LogsRecord.REMOVE_POST, post.get().getPostTitle(), request); } catch (Exception e) { log.error("Delete article failed: {}", e.getMessage()); diff --git a/src/main/java/cc/ryanc/halo/web/controller/api/ApiCommentController.java b/src/main/java/cc/ryanc/halo/web/controller/api/ApiCommentController.java index 89ee62ed1..eaa95cae0 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/api/ApiCommentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/api/ApiCommentController.java @@ -66,7 +66,7 @@ public class ApiCommentController { } try { Comment lastComment = null; - final Post post = postService.findByPostId(postId).orElse(new Post()); + final Post post = postService.fetchById(postId).orElse(new Post()); comment.setCommentAuthorEmail(HtmlUtil.escape(comment.getCommentAuthorEmail()).toLowerCase()); comment.setPost(post); comment.setCommentAuthorIp(ServletUtil.getClientIP(request)); diff --git a/src/main/java/cc/ryanc/halo/web/controller/api/ApiMetaWeBlog.java b/src/main/java/cc/ryanc/halo/web/controller/api/ApiMetaWeBlog.java index 65443b453..bceff2eab 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/api/ApiMetaWeBlog.java +++ b/src/main/java/cc/ryanc/halo/web/controller/api/ApiMetaWeBlog.java @@ -87,7 +87,7 @@ public class ApiMetaWeBlog { } else if ("metaWeblog.newPost".equals(methodName)) { Post post = parsetPost(methodCall); post.setUser(user); - post = postService.save(post); + post = postService.create(post); final StrBuilder strBuilder = new StrBuilder(""); strBuilder.append(""); strBuilder.append(post.getPostId()); @@ -101,7 +101,7 @@ public class ApiMetaWeBlog { final Long postId = Long.parseLong(params.getJSONObject(0).getJSONObject("value").optString("string")); post.setPostId(postId); post.setUser(user); - postService.save(post); + postService.create(post); final StrBuilder strBuilder = new StrBuilder(""); strBuilder.append(""); strBuilder.append(postId); @@ -109,7 +109,7 @@ public class ApiMetaWeBlog { responseContent = strBuilder.toString(); } else if ("blogger.deletePost".equals(methodName)) { final Long postId = Long.parseLong(params.getJSONObject(0).getJSONObject("value").optString("string")); - postService.remove(postId); + postService.removeById(postId); final StrBuilder strBuilder = new StrBuilder(""); strBuilder.append(""); strBuilder.append(true); @@ -180,7 +180,7 @@ public class ApiMetaWeBlog { */ private String buildPost(final Long postId) { final StrBuilder strBuilder = new StrBuilder(); - final Post post = postService.findByPostId(postId).orElse(new Post()); + final Post post = postService.fetchById(postId).orElse(new Post()); strBuilder.append(""); strBuilder.append("dateCreated"); strBuilder.append(""); diff --git a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java index 68da0ce0b..9ff6dab38 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/core/InstallController.java @@ -140,7 +140,7 @@ public class InstallController { post.setCategories(categories); post.setAllowComment(AllowCommentEnum.ALLOW.getCode()); post.setPostThumbnail("/static/halo-frontend/images/thumbnail/thumbnail-" + RandomUtil.randomInt(1, 11) + ".jpg"); - postService.save(post); + postService.create(post); //第一个评论 final Comment comment = new Comment(); diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java index 5876bc7c0..c366677b5 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCommentController.java @@ -80,7 +80,7 @@ public class FrontCommentController { } try { Comment lastComment = null; - post = postService.findByPostId(post.getPostId()).orElse(new Post()); + post = postService.fetchById(post.getPostId()).orElse(new Post()); comment.setCommentAuthorEmail(HtmlUtil.escape(comment.getCommentAuthorEmail()).toLowerCase()); comment.setPost(post); comment.setCommentAuthorIp(ServletUtil.getClientIP(request));