diff --git a/src/main/java/cc/ryanc/halo/model/dto/AttachmentAdminOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/AttachmentAdminOutputDTO.java new file mode 100644 index 000000000..f2b433de5 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/AttachmentAdminOutputDTO.java @@ -0,0 +1,19 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.domain.Attachment; +import cc.ryanc.halo.model.dto.base.AbstractOutputConverter; +import lombok.Data; + +/** + * @author : RYAN0UP + * @date : 2019-03-10 + */ +@Data +public class AttachmentAdminOutputDTO extends AbstractOutputConverter { + + private Long attachId; + + private String attachPath; + + private String attachSmallPath; +} diff --git a/src/main/java/cc/ryanc/halo/model/dto/CommentAdminOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/CommentAdminOutputDTO.java new file mode 100644 index 000000000..8d380928f --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/CommentAdminOutputDTO.java @@ -0,0 +1,34 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.domain.Comment; +import cc.ryanc.halo.model.domain.Post; +import cc.ryanc.halo.model.dto.base.AbstractOutputConverter; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * @author : RYAN0UP + * @date : 2019-03-09 + */ +@Data +public class CommentAdminOutputDTO extends AbstractOutputConverter { + + private Long commentId; + + private Post post; + + private String commentAuthor; + + private String commentAuthorUrl; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date commentDate; + + private String commentContent; + + private Integer commentStatus; + + private Integer isAdmin; +} diff --git a/src/main/java/cc/ryanc/halo/model/dto/PostAdminOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/PostAdminOutputDTO.java new file mode 100644 index 000000000..0bcaccb0a --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/PostAdminOutputDTO.java @@ -0,0 +1,44 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.domain.Category; +import cc.ryanc.halo.model.domain.Comment; +import cc.ryanc.halo.model.domain.Post; +import cc.ryanc.halo.model.domain.Tag; +import cc.ryanc.halo.model.dto.base.AbstractOutputConverter; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * Post admin output dto. + * + * @author johnniang + */ +@Data +public class PostAdminOutputDTO extends AbstractOutputConverter { + + private Long postId; + + private String postTitle; + + private String postType; + + private String postUrl; + + private List categories; + + private List tags; + + private List comments; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date postDate; + + private Integer postStatus; + + private Long postViews; + + private Integer postPriority; +} diff --git a/src/main/java/cc/ryanc/halo/model/dto/PostListOutputDTO.java b/src/main/java/cc/ryanc/halo/model/dto/PostListOutputDTO.java new file mode 100644 index 000000000..f77ad4098 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/model/dto/PostListOutputDTO.java @@ -0,0 +1,48 @@ +package cc.ryanc.halo.model.dto; + +import cc.ryanc.halo.model.domain.*; +import cc.ryanc.halo.model.dto.base.AbstractOutputConverter; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * Post output dto for post list + * + * @author johnniang + */ +@Data +public class PostListOutputDTO extends AbstractOutputConverter { + + private Long postId; + + private User user; + + private String postTitle; + + private String postUrl; + + private String postSummary; + + private List categories; + + private List tags; + + private List comments; + + private String postThumbnail; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date postDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date postUpdate; + + private Long postViews; + + private Integer allowComment; + + private Integer postPriority; +} diff --git a/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java b/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java index 41d74d711..f7ccec401 100755 --- a/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/admin/AttachmentController.java @@ -1,6 +1,7 @@ package cc.ryanc.halo.web.controller.admin; import cc.ryanc.halo.model.domain.Attachment; +import cc.ryanc.halo.model.dto.AttachmentAdminOutputDTO; import cc.ryanc.halo.model.enums.PostTypeEnum; import cc.ryanc.halo.model.enums.ResultCodeEnum; import cc.ryanc.halo.model.support.JsonResult; @@ -60,7 +61,8 @@ public class AttachmentController { @GetMapping public String attachments(Model model, @PageableDefault(size = 18, sort = "attachId", direction = Sort.Direction.DESC) Pageable pageable) { - final Page attachments = attachmentService.listAll(pageable); + final Page attachments = attachmentService.listAll(pageable) + .map(attachment -> new AttachmentAdminOutputDTO().convertFrom(attachment)); model.addAttribute("attachments", attachments); return "admin/admin_attachment"; } @@ -76,7 +78,8 @@ public class AttachmentController { @PageableDefault(size = 18, sort = "attachId", direction = Sort.Direction.DESC) Pageable pageable, @RequestParam(value = "id", defaultValue = "none") String id, @RequestParam(value = "type", defaultValue = "normal") String type) { - final Page attachments = attachmentService.listAll(pageable); + final Page attachments = attachmentService.listAll(pageable) + .map(attachment -> new AttachmentAdminOutputDTO().convertFrom(attachment)); model.addAttribute("attachments", attachments); model.addAttribute("id", id); if (StrUtil.equals(type, PostTypeEnum.POST_TYPE_POST.getDesc())) { 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 4d4c24e3b..1f3cbc49a 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 @@ -3,6 +3,7 @@ package cc.ryanc.halo.web.controller.admin; import cc.ryanc.halo.model.domain.Comment; import cc.ryanc.halo.model.domain.Post; import cc.ryanc.halo.model.domain.User; +import cc.ryanc.halo.model.dto.CommentAdminOutputDTO; import cc.ryanc.halo.model.support.JsonResult; import cc.ryanc.halo.model.enums.*; import cc.ryanc.halo.service.CommentService; @@ -67,7 +68,8 @@ public class CommentController extends BaseController { public String comments(Model model, @PageableDefault(sort = "commentDate", direction = Sort.Direction.DESC) Pageable pageable, @RequestParam(value = "status", defaultValue = "0") Integer status) { - final Page comments = commentService.findAll(status, pageable); + final Page comments = commentService.findAll(status, pageable) + .map(comment -> new CommentAdminOutputDTO().convertFrom(comment)); model.addAttribute("comments", comments); model.addAttribute("publicCount", commentService.getCountByStatus(CommentStatusEnum.PUBLISHED.getCode())); model.addAttribute("checkCount", commentService.getCountByStatus(CommentStatusEnum.CHECKING.getCode())); 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 1ded78839..beaaaa50e 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 @@ -2,13 +2,14 @@ package cc.ryanc.halo.web.controller.admin; import cc.ryanc.halo.model.domain.Post; import cc.ryanc.halo.model.domain.User; +import cc.ryanc.halo.model.dto.PostAdminOutputDTO; import cc.ryanc.halo.model.dto.PostViewOutputDTO; -import cc.ryanc.halo.model.support.JsonResult; -import cc.ryanc.halo.model.support.LogsRecord; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.model.enums.PostStatusEnum; import cc.ryanc.halo.model.enums.PostTypeEnum; import cc.ryanc.halo.model.enums.ResultCodeEnum; +import cc.ryanc.halo.model.support.JsonResult; +import cc.ryanc.halo.model.support.LogsRecord; import cc.ryanc.halo.service.LogsService; import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.utils.BeanUtils; @@ -22,9 +23,10 @@ import cn.hutool.crypto.SecureUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.propertyeditors.CustomDateEditor; -import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.data.web.PageableDefault; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.SortDefault; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; @@ -92,11 +94,14 @@ public class PostController extends BaseController { @GetMapping public String posts(Model model, @RequestParam(value = "status", defaultValue = "0") Integer status, - @PageableDefault(sort = "postDate", direction = DESC) Pageable pageable) { - final Page posts = postService.findPostByStatus(status, PostTypeEnum.POST_TYPE_POST.getDesc(), pageable); - - Page postViewOutputDTOS = posts.map(post -> new PostViewOutputDTO().convertFrom(post)); - + @RequestParam(value = "page", defaultValue = "0") Integer page, + @SortDefault.SortDefaults({ + @SortDefault(sort = "postPriority", direction = DESC), + @SortDefault(sort = "postDate", direction = DESC) + }) Sort sort) { + final Pageable pageable = PageRequest.of(page, 10, sort); + final Page posts = postService.findPostByStatus(status, PostTypeEnum.POST_TYPE_POST.getDesc(), pageable) + .map(post -> new PostAdminOutputDTO().convertFrom(post)); model.addAttribute("posts", posts); model.addAttribute("publishCount", postService.getCountByStatus(PostStatusEnum.PUBLISHED.getCode())); model.addAttribute("draftCount", postService.getCountByStatus(PostStatusEnum.DRAFT.getCode())); @@ -260,6 +265,22 @@ public class PostController extends BaseController { return "redirect:/admin/page"; } + /** + * 置顶/取消置顶文章 + * + * @param postId postId + * @param priority priority + * @return JsonResult + */ + @GetMapping(value = "/topPost") + public String topPost(@RequestParam("postId") Long postId, + @RequestParam("priority") Integer priority) { + Post post = postService.getById(postId); + post.setPostPriority(priority); + postService.update(post); + return "redirect:/admin/posts"; + } + /** * 更新所有摘要 * diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java index a744f034b..62ad6ea74 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontArchiveController.java @@ -3,8 +3,9 @@ package cc.ryanc.halo.web.controller.front; import cc.ryanc.halo.model.domain.Comment; import cc.ryanc.halo.model.domain.Post; import cc.ryanc.halo.model.domain.Tag; -import cc.ryanc.halo.model.support.ListPage; +import cc.ryanc.halo.model.dto.PostListOutputDTO; import cc.ryanc.halo.model.enums.*; +import cc.ryanc.halo.model.support.ListPage; import cc.ryanc.halo.service.CommentService; import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.utils.CommentUtil; @@ -79,7 +80,8 @@ public class FrontArchiveController extends BaseController { @SortDefault(sort = "postDate", direction = DESC) Sort sort) { //所有文章数据,分页,material主题适用 final Pageable pageable = PageRequest.of(page - 1, 5, sort); - final Page posts = postService.findPostByStatus(PostStatusEnum.PUBLISHED.getCode(), PostTypeEnum.POST_TYPE_POST.getDesc(), pageable); + final Page posts = postService.findPostByStatus(PostStatusEnum.PUBLISHED.getCode(), PostTypeEnum.POST_TYPE_POST.getDesc(), pageable) + .map(post -> new PostListOutputDTO().convertFrom(post)); if (null == posts) { return this.renderNotFound(); } @@ -100,7 +102,8 @@ public class FrontArchiveController extends BaseController { public String archives(Model model, @PathVariable(value = "year") String year, @PathVariable(value = "month") String month) { - final Page posts = postService.findPostByYearAndMonth(year, month, null); + final Page posts = postService.findPostByYearAndMonth(year, month, null) + .map(post -> new PostListOutputDTO().convertFrom(post)); if (null == posts) { return this.renderNotFound(); } diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java index 0600d1a33..de785eb67 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontCategoryController.java @@ -2,6 +2,7 @@ package cc.ryanc.halo.web.controller.front; import cc.ryanc.halo.model.domain.Category; import cc.ryanc.halo.model.domain.Post; +import cc.ryanc.halo.model.dto.PostListOutputDTO; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.service.CategoryService; import cc.ryanc.halo.service.PostService; @@ -91,7 +92,8 @@ public class FrontCategoryController extends BaseController { size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp())); } final Pageable pageable = PageRequest.of(page - 1, size, sort); - final Page posts = postService.findPostByCategories(category, pageable); + final Page posts = postService.findPostByCategories(category, pageable) + .map(post -> new PostListOutputDTO().convertFrom(post)); final int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3); model.addAttribute("is_categories", true); model.addAttribute("posts", posts); diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java index 071dab368..ee244ce93 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontIndexController.java @@ -1,6 +1,6 @@ package cc.ryanc.halo.web.controller.front; -import cc.ryanc.halo.model.domain.Post; +import cc.ryanc.halo.model.dto.PostListOutputDTO; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.web.controller.core.BaseController; @@ -71,7 +71,8 @@ public class FrontIndexController extends BaseController { } //所有文章数据,分页 final Pageable pageable = PageRequest.of(page - 1, size, sort); - final Page posts = postService.findPostByStatus(pageable); + final Page posts = postService.findPostByStatus(pageable) + .map(post -> new PostListOutputDTO().convertFrom(post)); if (null == posts) { return this.renderNotFound(); } diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java index 5df89a9b5..9c13fcebd 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontSearchController.java @@ -1,7 +1,7 @@ package cc.ryanc.halo.web.controller.front; import cc.ryanc.halo.logging.Logger; -import cc.ryanc.halo.model.domain.Post; +import cc.ryanc.halo.model.dto.PostListOutputDTO; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.model.enums.PostStatusEnum; import cc.ryanc.halo.model.enums.PostTypeEnum; @@ -74,7 +74,8 @@ public class FrontSearchController extends BaseController { size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp())); } final Pageable pageable = PageRequest.of(page - 1, size, sort); - final Page posts = postService.searchPosts(HtmlUtil.escape(keyword), PostTypeEnum.POST_TYPE_POST.getDesc(), PostStatusEnum.PUBLISHED.getCode(), pageable); + final Page posts = postService.searchPosts(HtmlUtil.escape(keyword), PostTypeEnum.POST_TYPE_POST.getDesc(), PostStatusEnum.PUBLISHED.getCode(), pageable) + .map(post -> new PostListOutputDTO().convertFrom(post)); final int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3); model.addAttribute("is_search", true); model.addAttribute("keyword", keyword); diff --git a/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java b/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java index 8fee4c85b..ce7de3999 100644 --- a/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java +++ b/src/main/java/cc/ryanc/halo/web/controller/front/FrontTagController.java @@ -2,6 +2,7 @@ package cc.ryanc.halo.web.controller.front; import cc.ryanc.halo.model.domain.Post; import cc.ryanc.halo.model.domain.Tag; +import cc.ryanc.halo.model.dto.PostListOutputDTO; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.service.PostService; import cc.ryanc.halo.service.TagService; @@ -86,7 +87,8 @@ public class FrontTagController extends BaseController { size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp())); } final Pageable pageable = PageRequest.of(page - 1, size, sort); - final Page posts = postService.findPostsByTags(tag, pageable); + final Page posts = postService.findPostsByTags(tag, pageable) + .map(post -> new PostListOutputDTO().convertFrom(post)); final int[] rainbow = PageUtil.rainbow(page, posts.getTotalPages(), 3); model.addAttribute("is_tags", true); model.addAttribute("posts", posts); diff --git a/src/main/resources/templates/admin/admin_comment.ftl b/src/main/resources/templates/admin/admin_comment.ftl index b272f8b28..8e0e22c2d 100755 --- a/src/main/resources/templates/admin/admin_comment.ftl +++ b/src/main/resources/templates/admin/admin_comment.ftl @@ -64,16 +64,16 @@ <#switch comment.commentStatus> <#case 0> - + <#break > <#case 1> <@spring.message code="common.btn.pass" /> - + <#break > <#case 2> <@spring.message code="common.btn.reduction" /> - + <#break > @@ -164,7 +164,7 @@ maxHeight: '210px', api:"/static/halo-common/OwO/OwO.min.json" }); - function modelShow(url,message) { + function modalShow(url,message) { $('#url').val(url); $('#message').html(message); $('#removeCommentModal').modal(); diff --git a/src/main/resources/templates/admin/admin_menu.ftl b/src/main/resources/templates/admin/admin_menu.ftl index 1d46ed6c9..28425479f 100644 --- a/src/main/resources/templates/admin/admin_menu.ftl +++ b/src/main/resources/templates/admin/admin_menu.ftl @@ -176,7 +176,7 @@ <#else> <@spring.message code='common.btn.modify' /> - + @@ -209,7 +209,7 @@ <@footer>