feat: create theme content api. (#503)

pull/816/head
Ryan Wang 2020-01-17 12:47:55 +08:00 committed by John Niang
parent 89086dd345
commit bd6cb393ff
27 changed files with 123 additions and 109 deletions

View File

@ -69,7 +69,7 @@ public class HaloConfiguration {
case "level": case "level":
stringCacheStore = new LevelCacheStore(); stringCacheStore = new LevelCacheStore();
break; break;
case "memory": case "memory":
default: default:
//memory or default //memory or default

View File

@ -1,8 +1,6 @@
package run.halo.app.controller.content; package run.halo.app.controller.content;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.PageUtil;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;

View File

@ -59,7 +59,7 @@ public class ContentContentController {
this.sheetService = sheetService; this.sheetService = sheetService;
} }
@GetMapping("{prefix}") // @GetMapping("{prefix}")
public String content(@PathVariable("prefix") String prefix, public String content(@PathVariable("prefix") String prefix,
Model model) { Model model) {
String archivesPrefix = optionService.getByPropertyOrDefault(PermalinkProperties.ARCHIVES_PREFIX, String.class, PermalinkProperties.ARCHIVES_PREFIX.defaultValue()); String archivesPrefix = optionService.getByPropertyOrDefault(PermalinkProperties.ARCHIVES_PREFIX, String.class, PermalinkProperties.ARCHIVES_PREFIX.defaultValue());
@ -89,7 +89,7 @@ public class ContentContentController {
} }
} }
@GetMapping("{prefix}/{url}") // @GetMapping("{prefix}/{url}")
public String content(@PathVariable("prefix") String prefix, public String content(@PathVariable("prefix") String prefix,
@PathVariable("url") String url, @PathVariable("url") String url,
@RequestParam(value = "token", required = false) String token, @RequestParam(value = "token", required = false) String token,
@ -132,7 +132,7 @@ public class ContentContentController {
} }
} }
// @GetMapping("{year:^[^A-Za-z]*$}/{month:^[^A-Za-z]*$}/{url}") // @GetMapping("{year:^[^A-Za-z]*$}/{month:^[^A-Za-z]*$}/{url}")
public String content(@PathVariable("year") Integer year, public String content(@PathVariable("year") Integer year,
@PathVariable("month") Integer month, @PathVariable("month") Integer month,
@PathVariable("url") String url, @PathVariable("url") String url,
@ -147,7 +147,7 @@ public class ContentContentController {
} }
} }
// @GetMapping("{year:^[^A-Za-z]*$}/{month:^[^A-Za-z]*$}/{day:^[^A-Za-z]*$}/{url}") // @GetMapping("{year:^[^A-Za-z]*$}/{month:^[^A-Za-z]*$}/{day:^[^A-Za-z]*$}/{url}")
public String content(@PathVariable("year") Integer year, public String content(@PathVariable("year") Integer year,
@PathVariable("month") Integer month, @PathVariable("month") Integer month,
@PathVariable("day") Integer day, @PathVariable("day") Integer day,

View File

@ -64,7 +64,7 @@ public class ContentIndexController {
* Render blog index * Render blog index
* *
* @param model model * @param model model
* @param page current page number * @param page current page number
* @return template path: themes/{theme}/index.ftl * @return template path: themes/{theme}/index.ftl
*/ */
@GetMapping(value = "page/{page}") @GetMapping(value = "page/{page}")

View File

@ -10,10 +10,10 @@ import run.halo.app.service.PostService;
import java.util.List; import java.util.List;
/** /**
* Archive portal controller. * Content archive controller.
* *
* @author johnniang * @author johnniang
* @date 4/2/19 * @date 2019-04-02
*/ */
@RestController("ApiContentArchiveController") @RestController("ApiContentArchiveController")
@RequestMapping("/api/content/archives") @RequestMapping("/api/content/archives")

View File

@ -21,10 +21,10 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Category portal controller. * Content category controller.
* *
* @author ryanwang * @author ryanwang
* @date 6/9/19 * @date 2019-06-09
*/ */
@RestController("ApiContentCategoryController") @RestController("ApiContentCategoryController")
@RequestMapping("/api/content/categories") @RequestMapping("/api/content/categories")

View File

@ -29,7 +29,7 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Content Journal controller. * Content journal controller.
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang

View File

@ -15,11 +15,11 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Portal link controller. * Content link controller.
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 4/3/19 * @date 2019-04-03
*/ */
@RestController("ApiContentLinkController") @RestController("ApiContentLinkController")
@RequestMapping("/api/content/links") @RequestMapping("/api/content/links")

View File

@ -15,11 +15,11 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Portal menu controller. * Content menu controller.
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 4/3/19 * @date 2019-04-03
*/ */
@RestController("ApiContentMenuController") @RestController("ApiContentMenuController")
@RequestMapping("/api/content/menus") @RequestMapping("/api/content/menus")

View File

@ -13,10 +13,10 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* Portal option controller. * Content option controller.
* *
* @author johnniang * @author johnniang
* @date 4/3/19 * @date 2019-04-03
*/ */
@RestController("ApiContentOptionController") @RestController("ApiContentOptionController")
@RequestMapping("/api/content/options") @RequestMapping("/api/content/options")

View File

@ -26,10 +26,10 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Portal post controller. * Content post controller.
* *
* @author johnniang * @author johnniang
* @date 4/2/19 * @date 2019-04-02
*/ */
@RestController("ApiContentPostController") @RestController("ApiContentPostController")
@RequestMapping("/api/content/posts") @RequestMapping("/api/content/posts")

View File

@ -25,11 +25,11 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Sheet controller. * Content sheet controller.
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 19-4-26 * @date 2019-04-26
*/ */
@RestController("ApiContentSheetController") @RestController("ApiContentSheetController")
@RequestMapping("/api/content/sheets") @RequestMapping("/api/content/sheets")

View File

@ -9,7 +9,7 @@ import run.halo.app.model.dto.StatisticWithUserDTO;
import run.halo.app.service.StatisticService; import run.halo.app.service.StatisticService;
/** /**
* Statistic controller. * Content statistic controller.
* *
* @author ryan0up * @author ryan0up
* @date 2019-12-16 * @date 2019-12-16

View File

@ -22,11 +22,11 @@ import java.util.List;
import static org.springframework.data.domain.Sort.Direction.DESC; import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Portal tag controller. * Content tag controller.
* *
* @author johnniang * @author johnniang
* @author ryanwang * @author ryanwang
* @date 4/2/19 * @date 2019-04-02
*/ */
@RestController("ApiContentTagController") @RestController("ApiContentTagController")
@RequestMapping("/api/content/tags") @RequestMapping("/api/content/tags")

View File

@ -0,0 +1,43 @@
package run.halo.app.controller.content.api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import run.halo.app.handler.theme.config.support.ThemeProperty;
import run.halo.app.service.ThemeService;
import run.halo.app.service.ThemeSettingService;
import java.util.Map;
/**
* Content theme controller.
*
* @author ryanwang
* @date 2020-01-17
*/
@RestController("ApiContentThemeController")
@RequestMapping("/api/content/themes")
public class ThemeController {
private final ThemeService themeService;
private final ThemeSettingService themeSettingService;
public ThemeController(ThemeService themeService, ThemeSettingService themeSettingService) {
this.themeService = themeService;
this.themeSettingService = themeSettingService;
}
@GetMapping("activation")
@ApiOperation("Gets activated theme property")
public ThemeProperty getBy() {
return themeService.getThemeOfNonNullBy(themeService.getActivatedThemeId());
}
@GetMapping("activation/settings")
@ApiOperation("Lists activated theme settings")
public Map<String, Object> listSettingsBy() {
return themeSettingService.listAsMapBy(themeService.getActivatedThemeId());
}
}

View File

@ -8,10 +8,10 @@ import run.halo.app.model.dto.UserDTO;
import run.halo.app.service.UserService; import run.halo.app.service.UserService;
/** /**
* Portal user controller. * Content user controller.
* *
* @author johnniang * @author johnniang
* @date 4/3/19 * @date 2019-04-03
*/ */
@RestController("ApiContentUserController") @RestController("ApiContentUserController")
@RequestMapping("/api/content/users") @RequestMapping("/api/content/users")

View File

@ -1,7 +1,6 @@
package run.halo.app.controller.content.model; package run.halo.app.controller.content.model;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
@ -51,14 +50,14 @@ public class PostModel {
private final StringCacheStore cacheStore; private final StringCacheStore cacheStore;
public PostModel(PostService postService, public PostModel(PostService postService,
ThemeService themeService, ThemeService themeService,
PostCategoryService postCategoryService, PostCategoryService postCategoryService,
CategoryService categoryService, CategoryService categoryService,
PostMetaService postMetaService, PostMetaService postMetaService,
PostTagService postTagService, PostTagService postTagService,
TagService tagService, TagService tagService,
OptionService optionService, OptionService optionService,
StringCacheStore cacheStore) { StringCacheStore cacheStore) {
this.postService = postService; this.postService = postService;
this.themeService = themeService; this.themeService = themeService;
this.postCategoryService = postCategoryService; this.postCategoryService = postCategoryService;

View File

@ -4,6 +4,7 @@ import lombok.Getter;
/** /**
* *
*
* @author Lei XinXin * @author Lei XinXin
* @date 2020/1/5 * @date 2020/1/5
*/ */
@ -12,9 +13,11 @@ public enum BanStatusEnum {
/** /**
* *
*/ */
NORMAL(0),; NORMAL(0),
;
private int status; private int status;
BanStatusEnum(int status) { BanStatusEnum(int status) {
this.status = status; this.status = status;
} }

View File

@ -21,6 +21,7 @@ public enum CommentViolationTypeEnum {
; ;
private int type; private int type;
CommentViolationTypeEnum(int type) { CommentViolationTypeEnum(int type) {
this.type = type; this.type = type;
} }

View File

@ -32,7 +32,6 @@ public enum CommentProperties implements PropertyEnum {
COMMENT_RANGE("comment_range", Integer.class, "30"); COMMENT_RANGE("comment_range", Integer.class, "30");
private final String value; private final String value;
private final Class<?> type; private final Class<?> type;

View File

@ -1,12 +1,13 @@
package run.halo.app.model.vo; package run.halo.app.model.vo;
import java.util.Optional;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import run.halo.app.model.entity.Post; import run.halo.app.model.entity.Post;
import java.util.Optional;
/** /**
* AdjacentPost class * AdjacentPost class
* *
@ -22,7 +23,7 @@ public class AdjacentPostVO {
private Post prePost; private Post prePost;
private Post nextPost; private Post nextPost;
public Optional<Post> getOptionalPrePost(){ public Optional<Post> getOptionalPrePost() {
return Optional.ofNullable(this.getPrePost()); return Optional.ofNullable(this.getPrePost());
} }

View File

@ -7,7 +7,6 @@ import run.halo.app.model.projection.CommentChildrenCountProjection;
import run.halo.app.model.projection.CommentCountProjection; import run.halo.app.model.projection.CommentCountProjection;
import run.halo.app.repository.base.BaseCommentRepository; import run.halo.app.repository.base.BaseCommentRepository;
import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;

View File

@ -1,8 +1,5 @@
package run.halo.app.repository.base; package run.halo.app.repository.base;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
@ -13,6 +10,10 @@ import org.springframework.lang.NonNull;
import run.halo.app.model.entity.BasePost; import run.halo.app.model.entity.BasePost;
import run.halo.app.model.enums.PostStatus; import run.halo.app.model.enums.PostStatus;
import java.util.Date;
import java.util.List;
import java.util.Optional;
/** /**
* Base post repository. * Base post repository.
* *

View File

@ -4,6 +4,7 @@ import run.halo.app.model.enums.CommentViolationTypeEnum;
/** /**
* Comment BlackList Service * Comment BlackList Service
*
* @author Lei XinXin * @author Lei XinXin
* @date 2020/1/3 * @date 2020/1/3
*/ */

View File

@ -1,6 +1,5 @@
package run.halo.app.service; package run.halo.app.service;
import javax.validation.constraints.NotNull;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
@ -9,13 +8,10 @@ import run.halo.app.model.entity.Post;
import run.halo.app.model.entity.PostMeta; import run.halo.app.model.entity.PostMeta;
import run.halo.app.model.enums.PostStatus; import run.halo.app.model.enums.PostStatus;
import run.halo.app.model.params.PostQuery; import run.halo.app.model.params.PostQuery;
import run.halo.app.model.vo.AdjacentPostVO; import run.halo.app.model.vo.*;
import run.halo.app.model.vo.ArchiveMonthVO;
import run.halo.app.model.vo.ArchiveYearVO;
import run.halo.app.model.vo.PostDetailVO;
import run.halo.app.model.vo.PostListVO;
import run.halo.app.service.base.BasePostService; import run.halo.app.service.base.BasePostService;
import javax.validation.constraints.NotNull;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -234,6 +230,7 @@ public interface PostService extends BasePostService<Post> {
/** /**
* Gets pre && next post. * Gets pre && next post.
*
* @param currentPost post must not be null * @param currentPost post must not be null
* @return AdjacentPostVO. it contains prePost and nextPost. * @return AdjacentPostVO. it contains prePost and nextPost.
* AdjacentPostVO will not be null. But prePost and nextPost may be null. * AdjacentPostVO will not be null. But prePost and nextPost may be null.
@ -243,8 +240,9 @@ public interface PostService extends BasePostService<Post> {
/** /**
* Get Post Pageable default sort * Get Post Pageable default sort
* @Desc contains three parts. First, Top Priority; Second, From Custom index sort; Third, basic id sort *
* @return * @return
* @Desc contains three parts. First, Top Priority; Second, From Custom index sort; Third, basic id sort
*/ */
@NotNull @NotNull
Sort getPostDefaultSort(); Sort getPostDefaultSort();

View File

@ -1,27 +1,8 @@
package run.halo.app.service.impl; package run.halo.app.service.impl;
import static org.springframework.data.domain.Sort.Direction.DESC;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.StrBuilder; import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.criteria.Subquery;
import javax.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
@ -40,39 +21,30 @@ import run.halo.app.event.logger.LogEvent;
import run.halo.app.event.post.PostVisitEvent; import run.halo.app.event.post.PostVisitEvent;
import run.halo.app.exception.NotFoundException; import run.halo.app.exception.NotFoundException;
import run.halo.app.model.dto.BaseMetaDTO; import run.halo.app.model.dto.BaseMetaDTO;
import run.halo.app.model.dto.post.BasePostMinimalDTO; import run.halo.app.model.entity.*;
import run.halo.app.model.entity.Category;
import run.halo.app.model.entity.Post;
import run.halo.app.model.entity.PostCategory;
import run.halo.app.model.entity.PostComment;
import run.halo.app.model.entity.PostMeta;
import run.halo.app.model.entity.PostTag;
import run.halo.app.model.entity.Tag;
import run.halo.app.model.enums.LogType; import run.halo.app.model.enums.LogType;
import run.halo.app.model.enums.PostPermalinkType; import run.halo.app.model.enums.PostPermalinkType;
import run.halo.app.model.enums.PostStatus; import run.halo.app.model.enums.PostStatus;
import run.halo.app.model.params.PostQuery; import run.halo.app.model.params.PostQuery;
import run.halo.app.model.properties.PermalinkProperties; import run.halo.app.model.properties.PermalinkProperties;
import run.halo.app.model.properties.PostProperties; import run.halo.app.model.properties.PostProperties;
import run.halo.app.model.vo.AdjacentPostVO; import run.halo.app.model.vo.*;
import run.halo.app.model.vo.ArchiveMonthVO;
import run.halo.app.model.vo.ArchiveYearVO;
import run.halo.app.model.vo.PostDetailVO;
import run.halo.app.model.vo.PostListVO;
import run.halo.app.repository.PostRepository; import run.halo.app.repository.PostRepository;
import run.halo.app.service.CategoryService; import run.halo.app.service.*;
import run.halo.app.service.OptionService;
import run.halo.app.service.PostCategoryService;
import run.halo.app.service.PostCommentService;
import run.halo.app.service.PostMetaService;
import run.halo.app.service.PostService;
import run.halo.app.service.PostTagService;
import run.halo.app.service.TagService;
import run.halo.app.utils.DateUtils; import run.halo.app.utils.DateUtils;
import run.halo.app.utils.MarkdownUtils; import run.halo.app.utils.MarkdownUtils;
import run.halo.app.utils.ServiceUtils; import run.halo.app.utils.ServiceUtils;
import run.halo.app.utils.SlugUtils; import run.halo.app.utils.SlugUtils;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.persistence.criteria.Subquery;
import javax.validation.constraints.NotNull;
import java.util.*;
import java.util.stream.Collectors;
import static org.springframework.data.domain.Sort.Direction.DESC;
/** /**
* Post service implementation. * Post service implementation.
* *
@ -105,14 +77,14 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
private final OptionService optionService; private final OptionService optionService;
public PostServiceImpl(PostRepository postRepository, public PostServiceImpl(PostRepository postRepository,
TagService tagService, TagService tagService,
CategoryService categoryService, CategoryService categoryService,
PostTagService postTagService, PostTagService postTagService,
PostCategoryService postCategoryService, PostCategoryService postCategoryService,
PostCommentService postCommentService, PostCommentService postCommentService,
ApplicationEventPublisher eventPublisher, ApplicationEventPublisher eventPublisher,
PostMetaService postMetaService, PostMetaService postMetaService,
OptionService optionService) { OptionService optionService) {
super(postRepository, optionService); super(postRepository, optionService);
this.postRepository = postRepository; this.postRepository = postRepository;
this.tagService = tagService; this.tagService = tagService;
@ -150,7 +122,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
@Override @Override
@Transactional @Transactional
public PostDetailVO createBy(Post postToCreate, Set<Integer> tagIds, Set<Integer> categoryIds, public PostDetailVO createBy(Post postToCreate, Set<Integer> tagIds, Set<Integer> categoryIds,
Set<PostMeta> postMetas, boolean autoSave) { Set<PostMeta> postMetas, boolean autoSave) {
PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, postMetas); PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, postMetas);
if (!autoSave) { if (!autoSave) {
// Log the creation // Log the creation
@ -163,7 +135,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
@Override @Override
public PostDetailVO createBy(Post postToCreate, Set<Integer> tagIds, Set<Integer> categoryIds, public PostDetailVO createBy(Post postToCreate, Set<Integer> tagIds, Set<Integer> categoryIds,
boolean autoSave) { boolean autoSave) {
PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, null); PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, null);
if (!autoSave) { if (!autoSave) {
// Log the creation // Log the creation
@ -177,7 +149,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
@Override @Override
@Transactional @Transactional
public PostDetailVO updateBy(Post postToUpdate, Set<Integer> tagIds, Set<Integer> categoryIds, public PostDetailVO updateBy(Post postToUpdate, Set<Integer> tagIds, Set<Integer> categoryIds,
Set<PostMeta> postMetas, boolean autoSave) { Set<PostMeta> postMetas, boolean autoSave) {
// Set edit time // Set edit time
postToUpdate.setEditTime(DateUtils.now()); postToUpdate.setEditTime(DateUtils.now());
PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds, postMetas); PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds, postMetas);
@ -623,15 +595,15 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
/** /**
* Converts to post detail vo. * Converts to post detail vo.
* *
* @param post post must not be null * @param post post must not be null
* @param tags tags * @param tags tags
* @param categories categories * @param categories categories
* @param postMetaList postMetas * @param postMetaList postMetas
* @return post detail vo * @return post detail vo
*/ */
@NonNull @NonNull
private PostDetailVO convertTo(@NonNull Post post, @Nullable List<Tag> tags, private PostDetailVO convertTo(@NonNull Post post, @Nullable List<Tag> tags,
@Nullable List<Category> categories, List<PostMeta> postMetaList) { @Nullable List<Category> categories, List<PostMeta> postMetaList) {
Assert.notNull(post, "Post must not be null"); Assert.notNull(post, "Post must not be null");
// Convert to base detail vo // Convert to base detail vo
@ -709,7 +681,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
} }
private PostDetailVO createOrUpdate(@NonNull Post post, Set<Integer> tagIds, private PostDetailVO createOrUpdate(@NonNull Post post, Set<Integer> tagIds,
Set<Integer> categoryIds, Set<PostMeta> postMetas) { Set<Integer> categoryIds, Set<PostMeta> postMetas) {
Assert.notNull(post, "Post param must not be null"); Assert.notNull(post, "Post param must not be null");
// Create or update post // Create or update post

View File

@ -6,7 +6,6 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import freemarker.template.Template; import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;