From 7cc3c787cb742c13a813ca1372f17c4ab8b53b41 Mon Sep 17 00:00:00 2001 From: guqing <1484563614@qq.com> Date: Sun, 1 Dec 2019 18:35:53 +0800 Subject: [PATCH] feat: support post metas --- .../controller/admin/api/PostController.java | 8 +- .../content/ContentArchiveController.java | 7 ++ .../halo/app/listener/StartedListener.java | 2 +- .../run/halo/app/model/dto/PostMetaDTO.java | 29 +++++++ .../run/halo/app/model/params/PostParam.java | 18 +++++ .../run/halo/app/model/vo/PostDetailVO.java | 6 ++ .../run/halo/app/model/vo/PostListVO.java | 3 + .../app/repository/PostMetaRepository.java | 21 +++++ .../run/halo/app/service/PostMetaService.java | 20 +++++ .../run/halo/app/service/PostService.java | 16 +++- .../service/impl/PostCategoryServiceImpl.java | 2 +- .../app/service/impl/PostMetaServiceImpl.java | 77 +++++++++++++++++++ .../app/service/impl/PostServiceImpl.java | 69 ++++++++++++++--- src/main/resources/application.yaml | 3 +- 14 files changed, 264 insertions(+), 17 deletions(-) create mode 100644 src/main/java/run/halo/app/model/dto/PostMetaDTO.java diff --git a/src/main/java/run/halo/app/controller/admin/api/PostController.java b/src/main/java/run/halo/app/controller/admin/api/PostController.java index 539a2a54a..12ccc718d 100644 --- a/src/main/java/run/halo/app/controller/admin/api/PostController.java +++ b/src/main/java/run/halo/app/controller/admin/api/PostController.java @@ -13,7 +13,9 @@ import run.halo.app.cache.StringCacheStore; import run.halo.app.model.dto.post.BasePostMinimalDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO; import run.halo.app.model.entity.Post; +import run.halo.app.model.entity.PostMeta; import run.halo.app.model.enums.PostStatus; +import run.halo.app.model.params.PostMetaParam; import run.halo.app.model.params.PostParam; import run.halo.app.model.params.PostQuery; import run.halo.app.model.vo.PostDetailVO; @@ -102,8 +104,7 @@ public class PostController { @RequestParam(value = "autoSave", required = false, defaultValue = "false") Boolean autoSave) { // Convert to Post post = postParam.convertTo(); - - return postService.createBy(post, postParam.getTagIds(), postParam.getCategoryIds(), autoSave); + return postService.createBy(post, postParam.getTagIds(), postParam.getCategoryIds(), postParam.getPostMetas(), autoSave); } @PutMapping("{postId:\\d+}") @@ -114,8 +115,7 @@ public class PostController { Post postToUpdate = postService.getById(postId); postParam.update(postToUpdate); - - return postService.updateBy(postToUpdate, postParam.getTagIds(), postParam.getCategoryIds(), autoSave); + return postService.updateBy(postToUpdate, postParam.getTagIds(), postParam.getCategoryIds(), postParam.getPostMetas(), autoSave); } @PutMapping("{postId:\\d+}/status/{status}") diff --git a/src/main/java/run/halo/app/controller/content/ContentArchiveController.java b/src/main/java/run/halo/app/controller/content/ContentArchiveController.java index 469c5c8c6..14c342b40 100644 --- a/src/main/java/run/halo/app/controller/content/ContentArchiveController.java +++ b/src/main/java/run/halo/app/controller/content/ContentArchiveController.java @@ -16,6 +16,7 @@ import run.halo.app.cache.lock.CacheLock; import run.halo.app.exception.ForbiddenException; import run.halo.app.model.entity.Category; import run.halo.app.model.entity.Post; +import run.halo.app.model.entity.PostMeta; import run.halo.app.model.entity.Tag; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.vo.BaseCommentVO; @@ -46,6 +47,8 @@ public class ContentArchiveController { private final PostCategoryService postCategoryService; + private final PostMetaService postMetaService; + private final PostTagService postTagService; private final PostCommentService postCommentService; @@ -57,6 +60,7 @@ public class ContentArchiveController { public ContentArchiveController(PostService postService, ThemeService themeService, PostCategoryService postCategoryService, + PostMetaService postMetaService, PostTagService postTagService, PostCommentService postCommentService, OptionService optionService, @@ -64,6 +68,7 @@ public class ContentArchiveController { this.postService = postService; this.themeService = themeService; this.postCategoryService = postCategoryService; + this.postMetaService = postMetaService; this.postTagService = postTagService; this.postCommentService = postCommentService; this.optionService = optionService; @@ -157,12 +162,14 @@ public class ContentArchiveController { List categories = postCategoryService.listCategoriesBy(post.getId()); List tags = postTagService.listTagsBy(post.getId()); + List postMetas = postMetaService.listPostMetasBy(post.getId()); Page comments = postCommentService.pageVosBy(post.getId(), PageRequest.of(cp, optionService.getCommentPageSize(), sort)); model.addAttribute("is_post", true); model.addAttribute("post", postService.convertToDetailVo(post)); model.addAttribute("categories", categories); + model.addAttribute("postMetas", postMetas); model.addAttribute("tags", tags); model.addAttribute("comments", comments); diff --git a/src/main/java/run/halo/app/listener/StartedListener.java b/src/main/java/run/halo/app/listener/StartedListener.java index 7ee648546..2cfbd0d23 100644 --- a/src/main/java/run/halo/app/listener/StartedListener.java +++ b/src/main/java/run/halo/app/listener/StartedListener.java @@ -52,7 +52,7 @@ public class StartedListener implements ApplicationListener { + private Long id; + + private Integer postId; + + private String key; + + private String value; + + private Date createTime; +} diff --git a/src/main/java/run/halo/app/model/params/PostParam.java b/src/main/java/run/halo/app/model/params/PostParam.java index df044bb98..4fef73c9e 100644 --- a/src/main/java/run/halo/app/model/params/PostParam.java +++ b/src/main/java/run/halo/app/model/params/PostParam.java @@ -2,8 +2,10 @@ package run.halo.app.model.params; import lombok.Data; import org.apache.commons.lang3.StringUtils; +import org.springframework.util.CollectionUtils; import run.halo.app.model.dto.base.InputConverter; import run.halo.app.model.entity.Post; +import run.halo.app.model.entity.PostMeta; import run.halo.app.model.enums.PostCreateFrom; import run.halo.app.model.enums.PostStatus; import run.halo.app.utils.SlugUtils; @@ -12,6 +14,7 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.util.Date; +import java.util.HashSet; import java.util.Set; /** @@ -59,6 +62,8 @@ public class PostParam implements InputConverter { private Set categoryIds; + private Set postMetas; + @Override public Post convertTo() { url = StringUtils.isBlank(url) ? SlugUtils.slug(title) : SlugUtils.slug(url); @@ -80,4 +85,17 @@ public class PostParam implements InputConverter { InputConverter.super.update(post); } + + public Set getPostMetas() { + Set postMetaSet = new HashSet<>(); + if(CollectionUtils.isEmpty(postMetas)) { + return postMetaSet; + } + + for(PostMetaParam postMetaParam : postMetas) { + PostMeta postMeta = postMetaParam.convertTo(); + postMetaSet.add(postMeta); + } + return postMetaSet; + } } diff --git a/src/main/java/run/halo/app/model/vo/PostDetailVO.java b/src/main/java/run/halo/app/model/vo/PostDetailVO.java index 410361881..e8fa7b6f1 100644 --- a/src/main/java/run/halo/app/model/vo/PostDetailVO.java +++ b/src/main/java/run/halo/app/model/vo/PostDetailVO.java @@ -4,9 +4,11 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import run.halo.app.model.dto.CategoryDTO; +import run.halo.app.model.dto.PostMetaDTO; import run.halo.app.model.dto.TagDTO; import run.halo.app.model.dto.post.BasePostDetailDTO; import run.halo.app.model.entity.Category; +import run.halo.app.model.entity.PostMeta; import run.halo.app.model.entity.Tag; import java.util.List; @@ -30,5 +32,9 @@ public class PostDetailVO extends BasePostDetailDTO { private Set categoryIds; private List categories; + + private Set postMetaIds; + + private List postMetas; } diff --git a/src/main/java/run/halo/app/model/vo/PostListVO.java b/src/main/java/run/halo/app/model/vo/PostListVO.java index 47b40083a..ccfe3223a 100644 --- a/src/main/java/run/halo/app/model/vo/PostListVO.java +++ b/src/main/java/run/halo/app/model/vo/PostListVO.java @@ -3,8 +3,10 @@ package run.halo.app.model.vo; import lombok.Data; import lombok.EqualsAndHashCode; import run.halo.app.model.dto.CategoryDTO; +import run.halo.app.model.dto.PostMetaDTO; import run.halo.app.model.dto.TagDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO; +import run.halo.app.model.entity.PostMeta; import java.util.List; @@ -24,4 +26,5 @@ public class PostListVO extends BasePostSimpleDTO { private List categories; + private List postMetas; } diff --git a/src/main/java/run/halo/app/repository/PostMetaRepository.java b/src/main/java/run/halo/app/repository/PostMetaRepository.java index e2bc2acbe..3e38a1813 100644 --- a/src/main/java/run/halo/app/repository/PostMetaRepository.java +++ b/src/main/java/run/halo/app/repository/PostMetaRepository.java @@ -1,8 +1,12 @@ package run.halo.app.repository; +import org.springframework.lang.NonNull; import run.halo.app.model.entity.PostMeta; import run.halo.app.repository.base.BaseMetaRepository; +import java.util.List; +import java.util.Set; + /** * PostMeta repository. * @@ -11,4 +15,21 @@ import run.halo.app.repository.base.BaseMetaRepository; * @date 2019-08-04 */ public interface PostMetaRepository extends BaseMetaRepository { + + /** + * Deletes post metas by post id. + * + * @param postId post id must not be null + * @return a list of post meta deleted + */ + @NonNull + List deleteByPostId(@NonNull Integer postId); + + /** + * Finds all post metas by post id. + * @param postIds post id must not be null + * @return a list of post meta + */ + @NonNull + List findAllByPostIdIn(@NonNull Set postIds); } diff --git a/src/main/java/run/halo/app/service/PostMetaService.java b/src/main/java/run/halo/app/service/PostMetaService.java index 5f1930c01..fb019d5b8 100644 --- a/src/main/java/run/halo/app/service/PostMetaService.java +++ b/src/main/java/run/halo/app/service/PostMetaService.java @@ -1,8 +1,15 @@ package run.halo.app.service; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; +import run.halo.app.model.dto.PostMetaDTO; import run.halo.app.model.entity.PostMeta; import run.halo.app.service.base.BaseMetaService; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * Post meta service interface. * @@ -11,4 +18,17 @@ import run.halo.app.service.base.BaseMetaService; * @date 2019-08-04 */ public interface PostMetaService extends BaseMetaService { + List createOrUpdateByPostId(Integer id, Set postMetas); + + List listPostMetasBy(Integer id); + + List removeByPostId(Integer postId); + + Map> listPostMetaListMap(Set postIds); + + @NonNull + PostMetaDTO convertTo(@NonNull PostMeta postMeta); + + @NonNull + List convertTo(@Nullable List postMetaList); } diff --git a/src/main/java/run/halo/app/service/PostService.java b/src/main/java/run/halo/app/service/PostService.java index 71cd51f65..d89bc55cf 100755 --- a/src/main/java/run/halo/app/service/PostService.java +++ b/src/main/java/run/halo/app/service/PostService.java @@ -4,6 +4,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.lang.NonNull; import run.halo.app.model.entity.Post; +import run.halo.app.model.entity.PostMeta; import run.halo.app.model.enums.PostStatus; import run.halo.app.model.params.PostQuery; import run.halo.app.model.vo.ArchiveMonthVO; @@ -44,6 +45,19 @@ public interface PostService extends BasePostService { @NonNull Page pageBy(@NonNull String keyword, @NonNull Pageable pageable); + /** + * Creates post by post param. + * + * @param post post must not be null + * @param tagIds tag id set + * @param categoryIds category id set + * @param postMetas post metas + * @param autoSave autoSave + * @return post created + */ + @NonNull + PostDetailVO createBy(@NonNull Post post, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave); + /** * Creates post by post param. * @@ -66,7 +80,7 @@ public interface PostService extends BasePostService { * @return updated post */ @NonNull - PostDetailVO updateBy(@NonNull Post postToUpdate, Set tagIds, Set categoryIds, boolean autoSave); + PostDetailVO updateBy(@NonNull Post postToUpdate, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave); /** * Gets post by post status and url. diff --git a/src/main/java/run/halo/app/service/impl/PostCategoryServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostCategoryServiceImpl.java index 0cc8cc3bd..f6a9a132f 100644 --- a/src/main/java/run/halo/app/service/impl/PostCategoryServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostCategoryServiceImpl.java @@ -212,7 +212,7 @@ public class PostCategoryServiceImpl extends AbstractCrudService removeByPostId(Integer postId) { - Assert.notNull(postId, "PoremoveByIdst id must not be null"); + Assert.notNull(postId, "Post id must not be null"); return postCategoryRepository.deleteByPostId(postId); } diff --git a/src/main/java/run/halo/app/service/impl/PostMetaServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostMetaServiceImpl.java index 2aec02291..c55a2b375 100644 --- a/src/main/java/run/halo/app/service/impl/PostMetaServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostMetaServiceImpl.java @@ -2,11 +2,18 @@ package run.halo.app.service.impl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import run.halo.app.exception.NotFoundException; +import run.halo.app.model.dto.PostMetaDTO; import run.halo.app.model.entity.PostMeta; import run.halo.app.repository.PostMetaRepository; import run.halo.app.repository.PostRepository; import run.halo.app.service.PostMetaService; +import run.halo.app.utils.ServiceUtils; + +import java.util.*; +import java.util.stream.Collectors; /** * Post meta service implementation class. @@ -35,4 +42,74 @@ public class PostMetaServiceImpl extends BaseMetaServiceImpl implement postRepository.findById(postId) .orElseThrow(() -> new NotFoundException("查询不到该文章的信息").setErrorData(postId)); } + + @Override + public List createOrUpdateByPostId(Integer postId, Set postMetas) { + Assert.notNull(postId, "Post id must not be null"); + if (CollectionUtils.isEmpty(postMetas)) { + return Collections.emptyList(); + } + + // firstly remove post metas by post id + removeByPostId(postId); + + // Save post metas + postMetas.forEach(postMeta -> { + postMeta.setPostId(postId); + postMetaRepository.save(postMeta); + }); + return new ArrayList<>(postMetas); + } + + @Override + public List listPostMetasBy(Integer postId) { + Assert.notNull(postId, "Post id must not be null"); + return postMetaRepository.findAllByPostId(postId); + } + + @Override + public List removeByPostId(Integer postId) { + Assert.notNull(postId, "Post id must not be null of removeByPostId"); + return postMetaRepository.deleteByPostId(postId); + } + + @Override + public Map> listPostMetaListMap(Set postIds) { + if (CollectionUtils.isEmpty(postIds)) { + return Collections.emptyMap(); + } + + // Find all post metas + List postMetas = postMetaRepository.findAllByPostIdIn(postIds); + + // Convert to post meta map + Map postMetaMap = ServiceUtils.convertToMap(postMetas, PostMeta::getId); + + // Create category list map + Map> postMetaListMap = new HashMap<>(); + + // Foreach and collect + postMetas.forEach(postMeta -> postMetaListMap.computeIfAbsent(postMeta.getPostId(), postId -> new LinkedList<>()) + .add(postMetaMap.get(postMeta.getId()))); + + return postMetaListMap; + } + + @Override + public PostMetaDTO convertTo(PostMeta postMeta) { + Assert.notNull(postMeta, "Category must not be null"); + + return new PostMetaDTO().convertFrom(postMeta); + } + + @Override + public List convertTo(List postMetaList) { + if (CollectionUtils.isEmpty(postMetaList)) { + return Collections.emptyList(); + } + + return postMetaList.stream() + .map(this::convertTo) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java index e790af772..8e78a6abf 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.util.Assert; import run.halo.app.event.logger.LogEvent; import run.halo.app.event.post.PostVisitEvent; import run.halo.app.model.dto.CategoryDTO; +import run.halo.app.model.dto.PostMetaDTO; import run.halo.app.model.dto.TagDTO; import run.halo.app.model.entity.*; import run.halo.app.model.enums.LogType; @@ -67,6 +68,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe private final ApplicationEventPublisher eventPublisher; + private final PostMetaService postMetaService; + public PostServiceImpl(PostRepository postRepository, TagService tagService, CategoryService categoryService, @@ -74,7 +77,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe PostCategoryService postCategoryService, PostCommentService postCommentService, ApplicationEventPublisher eventPublisher, - OptionService optionService) { + OptionService optionService, + PostMetaService postMetaService) { super(postRepository, optionService); this.postRepository = postRepository; this.tagService = tagService; @@ -83,6 +87,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe this.postCategoryService = postCategoryService; this.postCommentService = postCommentService; this.eventPublisher = eventPublisher; + this.postMetaService = postMetaService; } @Override @@ -109,8 +114,19 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe @Override @Transactional + public PostDetailVO createBy(Post postToCreate, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave) { + PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, postMetas); + if (!autoSave) { + // Log the creation + LogEvent logEvent = new LogEvent(this, createdPost.getId().toString(), LogType.POST_PUBLISHED, createdPost.getTitle()); + eventPublisher.publishEvent(logEvent); + } + return createdPost; + } + + @Override public PostDetailVO createBy(Post postToCreate, Set tagIds, Set categoryIds, boolean autoSave) { - PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds); + PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, null); if (!autoSave) { // Log the creation LogEvent logEvent = new LogEvent(this, createdPost.getId().toString(), LogType.POST_PUBLISHED, createdPost.getTitle()); @@ -121,10 +137,10 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe @Override @Transactional - public PostDetailVO updateBy(Post postToUpdate, Set tagIds, Set categoryIds, boolean autoSave) { + public PostDetailVO updateBy(Post postToUpdate, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave) { // Set edit time postToUpdate.setEditTime(DateUtils.now()); - PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds); + PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds, postMetas); if (!autoSave) { // Log the creation LogEvent logEvent = new LogEvent(this, updatedPost.getId().toString(), LogType.POST_EDITED, updatedPost.getTitle()); @@ -227,6 +243,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe Set tagIds = new HashSet<>(); Set categoryIds = new HashSet<>(); + if (frontMatter.size() > 0) { for (String key : frontMatter.keySet()) { elementValue = frontMatter.get(key); @@ -309,6 +326,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe public String exportMarkdown(Post post) { Assert.notNull(post, "Post must not be null"); + StrBuilder content = new StrBuilder("---\n"); content.append("type: ").append("post").append("\n"); @@ -338,6 +356,15 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } } + List postMetas = postMetaService.listPostMetasBy(post.getId()); + + if (postMetas.size() > 0) { + content.append("postMetas:").append("\n"); + for (PostMeta postMeta : postMetas) { + content.append(" - ").append(postMeta.getKey()).append(" : ").append(postMeta.getValue()).append("\n"); + } + } + content.append("---\n\n"); content.append(post.getOriginalContent()); return content.toString(); @@ -349,9 +376,10 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe List tags = postTagService.listTagsBy(post.getId()); // List categories List categories = postCategoryService.listCategoriesBy(post.getId()); - + // List postMetas + List postMetas = postMetaService.listPostMetasBy(post.getId()); // Convert to detail vo - return convertTo(post, tags, categories); + return convertTo(post, tags, categories, postMetas); } @Override @@ -370,6 +398,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe log.debug("Removed post categories: [{}]", postCategories); + List postMetas = postMetaService.removeByPostId(postId); + log.debug("Removed post metas: [{}]", postMetas); + Post deletedPost = super.removeById(postId); // Log it @@ -395,6 +426,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe // Get comment count Map commentCountMap = postCommentService.countByPostIds(postIds); + // Get post meta list map + Map> postMetaListMap = postMetaService.listPostMetaListMap(postIds); + return postPage.map(post -> { PostListVO postListVO = new PostListVO().convertFrom(post); @@ -420,6 +454,14 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe .map(category -> (CategoryDTO) new CategoryDTO().convertFrom(category)) .collect(Collectors.toList())); + // Set post metas + postListVO.setPostMetas(Optional.ofNullable(postMetaListMap.get(post.getId())) + .orElseGet(LinkedList::new) + .stream() + .filter(Objects::nonNull) + .map(postMeta -> (PostMetaDTO) new PostMetaDTO().convertFrom(postMeta)) + .collect(Collectors.toList())); + // Set comment count postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L)); @@ -433,10 +475,11 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe * @param post post must not be null * @param tags tags * @param categories categories + * @param postMetaList postMetas * @return post detail vo */ @NonNull - private PostDetailVO convertTo(@NonNull Post post, @Nullable List tags, @Nullable List categories) { + private PostDetailVO convertTo(@NonNull Post post, @Nullable List tags, @Nullable List categories, List postMetaList) { Assert.notNull(post, "Post must not be null"); // Convert to base detail vo @@ -445,6 +488,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe // Extract ids Set tagIds = ServiceUtils.fetchProperty(tags, Tag::getId); Set categoryIds = ServiceUtils.fetchProperty(categories, Category::getId); + Set postMetaIds = ServiceUtils.fetchProperty(postMetaList, PostMeta::getId); // Get post tag ids postDetailVO.setTagIds(tagIds); @@ -454,6 +498,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe postDetailVO.setCategoryIds(categoryIds); postDetailVO.setCategories(categoryService.convertTo(categories)); + // Get post meta ids + postDetailVO.setPostMetaIds(postMetaIds); + postDetailVO.setPostMetas(postMetaService.convertTo(postMetaList)); return postDetailVO; } @@ -499,7 +546,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe }; } - private PostDetailVO createOrUpdate(@NonNull Post post, Set tagIds, Set categoryIds) { + private PostDetailVO createOrUpdate(@NonNull Post post, Set tagIds, Set categoryIds, Set postMetas) { Assert.notNull(post, "Post param must not be null"); // Create or update post @@ -525,7 +572,11 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe log.debug("Created post categories: [{}]", postCategories); + // Create post meta data + List postMetaList = postMetaService.createOrUpdateByPostId(post.getId(), postMetas); + log.debug("Created post postMetas: [{}]", postMetaList); + // Convert to post detail vo - return convertTo(post, tags, categories); + return convertTo(post, tags, categories, postMetaList); } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index ea975cb3a..f902ced26 100755 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -55,4 +55,5 @@ logging: path: ${user.home}/.halo/logs halo: - download-timeout: 5m \ No newline at end of file + download-timeout: 5m + doc-disabled: false \ No newline at end of file