refactor: metas variable. (#632)

* refactor: metas variable.

* refactor: metas variable.
pull/634/head
Ryan Wang 2020-03-11 13:49:37 +08:00 committed by GitHub
parent 378049ba21
commit a563c493e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 100 additions and 104 deletions

View File

@ -124,9 +124,6 @@ public class PostModel {
model.addAttribute("tags", tagService.convertTo(tags)); model.addAttribute("tags", tagService.convertTo(tags));
model.addAttribute("metas", postMetaService.convertToMap(metas)); model.addAttribute("metas", postMetaService.convertToMap(metas));
// TODO,Will be deprecated
model.addAttribute("comments", Page.empty());
if (themeService.templateExists( if (themeService.templateExists(
ThemeService.CUSTOM_POST_PREFIX + post.getTemplate() + HaloConst.SUFFIX_FTL)) { ThemeService.CUSTOM_POST_PREFIX + post.getTemplate() + HaloConst.SUFFIX_FTL)) {
return themeService.render(ThemeService.CUSTOM_POST_PREFIX + post.getTemplate()); return themeService.render(ThemeService.CUSTOM_POST_PREFIX + post.getTemplate());

View File

@ -1,21 +1,24 @@
package run.halo.app.controller.content.model; package run.halo.app.controller.content.model;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import run.halo.app.cache.StringCacheStore; import run.halo.app.cache.StringCacheStore;
import run.halo.app.exception.ForbiddenException; import run.halo.app.exception.ForbiddenException;
import run.halo.app.model.entity.Sheet; import run.halo.app.model.entity.Sheet;
import run.halo.app.model.entity.SheetMeta;
import run.halo.app.model.enums.PostEditorType; import run.halo.app.model.enums.PostEditorType;
import run.halo.app.model.enums.PostStatus; import run.halo.app.model.enums.PostStatus;
import run.halo.app.model.support.HaloConst; import run.halo.app.model.support.HaloConst;
import run.halo.app.model.vo.SheetDetailVO; import run.halo.app.model.vo.SheetDetailVO;
import run.halo.app.service.OptionService; import run.halo.app.service.OptionService;
import run.halo.app.service.SheetMetaService;
import run.halo.app.service.SheetService; import run.halo.app.service.SheetService;
import run.halo.app.service.ThemeService; import run.halo.app.service.ThemeService;
import run.halo.app.utils.MarkdownUtils; import run.halo.app.utils.MarkdownUtils;
import java.util.List;
/** /**
* Sheet model. * Sheet model.
* *
@ -27,14 +30,21 @@ public class SheetModel {
private final SheetService sheetService; private final SheetService sheetService;
private final SheetMetaService sheetMetaService;
private final StringCacheStore cacheStore; private final StringCacheStore cacheStore;
private final ThemeService themeService; private final ThemeService themeService;
private final OptionService optionService; private final OptionService optionService;
public SheetModel(SheetService sheetService, StringCacheStore cacheStore, ThemeService themeService, OptionService optionService) { public SheetModel(SheetService sheetService,
SheetMetaService sheetMetaService,
StringCacheStore cacheStore,
ThemeService themeService,
OptionService optionService) {
this.sheetService = sheetService; this.sheetService = sheetService;
this.sheetMetaService = sheetMetaService;
this.cacheStore = cacheStore; this.cacheStore = cacheStore;
this.themeService = themeService; this.themeService = themeService;
this.optionService = optionService; this.optionService = optionService;
@ -70,6 +80,8 @@ public class SheetModel {
SheetDetailVO sheetDetailVO = sheetService.convertToDetailVo(sheet); SheetDetailVO sheetDetailVO = sheetService.convertToDetailVo(sheet);
List<SheetMeta> metas = sheetMetaService.listBy(sheet.getId());
// Generate meta keywords. // Generate meta keywords.
if (StringUtils.isNotEmpty(sheet.getMetaKeywords())) { if (StringUtils.isNotEmpty(sheet.getMetaKeywords())) {
model.addAttribute("meta_keywords", sheet.getMetaKeywords()); model.addAttribute("meta_keywords", sheet.getMetaKeywords());
@ -88,9 +100,7 @@ public class SheetModel {
model.addAttribute("sheet", sheetDetailVO); model.addAttribute("sheet", sheetDetailVO);
model.addAttribute("post", sheetDetailVO); model.addAttribute("post", sheetDetailVO);
model.addAttribute("is_sheet", true); model.addAttribute("is_sheet", true);
model.addAttribute("metas", sheetMetaService.convertToMap(metas));
// TODO,Will be deprecated
model.addAttribute("comments", Page.empty());
if (themeService.templateExists(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate() + HaloConst.SUFFIX_FTL)) { if (themeService.templateExists(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate() + HaloConst.SUFFIX_FTL)) {
return themeService.render(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate()); return themeService.render(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate());

View File

@ -47,8 +47,7 @@ public class PostTagDirective implements TemplateDirectiveModel {
switch (method) { switch (method) {
case "latest": case "latest":
int top = Integer.parseInt(params.get("top").toString()); int top = Integer.parseInt(params.get("top").toString());
List<Post> posts = postService.listLatest(top); env.setVariable("posts", builder.build().wrap(postService.convertToListVo(postService.listLatest(top))));
env.setVariable("posts", builder.build().wrap(postService.convertToListVo(posts)));
break; break;
case "count": case "count":
env.setVariable("count", builder.build().wrap(postService.countByStatus(PostStatus.PUBLISHED))); env.setVariable("count", builder.build().wrap(postService.countByStatus(PostStatus.PUBLISHED)));
@ -69,7 +68,8 @@ public class PostTagDirective implements TemplateDirectiveModel {
break; break;
case "listByCategorySlug": case "listByCategorySlug":
String categorySlug = params.get("categorySlug").toString(); String categorySlug = params.get("categorySlug").toString();
env.setVariable("posts", builder.build().wrap(postService.convertToListVo(postCategoryService.listPostBy(categorySlug, PostStatus.PUBLISHED)))); List<Post> posts = postCategoryService.listPostBy(categorySlug, PostStatus.PUBLISHED);
env.setVariable("posts", builder.build().wrap(postService.convertToListVo(posts)));
break; break;
case "listByTagId": case "listByTagId":
Integer tagId = Integer.parseInt(params.get("tagId").toString()); Integer tagId = Integer.parseInt(params.get("tagId").toString());

View File

@ -67,7 +67,7 @@ public class PostParam implements InputConverter<Post> {
private Set<Integer> categoryIds; private Set<Integer> categoryIds;
private Set<PostMetaParam> postMetas; private Set<PostMetaParam> metas;
@Override @Override
public Post convertTo() { public Post convertTo() {
@ -101,11 +101,11 @@ public class PostParam implements InputConverter<Post> {
public Set<PostMeta> getPostMetas() { public Set<PostMeta> getPostMetas() {
Set<PostMeta> postMetaSet = new HashSet<>(); Set<PostMeta> postMetaSet = new HashSet<>();
if (CollectionUtils.isEmpty(postMetas)) { if (CollectionUtils.isEmpty(metas)) {
return postMetaSet; return postMetaSet;
} }
for (PostMetaParam postMetaParam : postMetas) { for (PostMetaParam postMetaParam : metas) {
PostMeta postMeta = postMetaParam.convertTo(); PostMeta postMeta = postMetaParam.convertTo();
postMetaSet.add(postMeta); postMetaSet.add(postMeta);
} }

View File

@ -62,7 +62,7 @@ public class SheetParam implements InputConverter<Sheet> {
private String metaDescription; private String metaDescription;
private Set<SheetMetaParam> sheetMetas; private Set<SheetMetaParam> metas;
@Override @Override
public Sheet convertTo() { public Sheet convertTo() {
@ -96,11 +96,11 @@ public class SheetParam implements InputConverter<Sheet> {
public Set<SheetMeta> getSheetMetas() { public Set<SheetMeta> getSheetMetas() {
Set<SheetMeta> sheetMetasSet = new HashSet<>(); Set<SheetMeta> sheetMetasSet = new HashSet<>();
if (CollectionUtils.isEmpty(sheetMetas)) { if (CollectionUtils.isEmpty(metas)) {
return sheetMetasSet; return sheetMetasSet;
} }
for (SheetMetaParam sheetMetaParam : sheetMetas) { for (SheetMetaParam sheetMetaParam : metas) {
SheetMeta sheetMeta = sheetMetaParam.convertTo(); SheetMeta sheetMeta = sheetMetaParam.convertTo();
sheetMetasSet.add(sheetMeta); sheetMetasSet.add(sheetMeta);
} }

View File

@ -31,8 +31,8 @@ public class PostDetailVO extends BasePostDetailDTO {
private List<CategoryDTO> categories; private List<CategoryDTO> categories;
private Set<Long> postMetaIds; private Set<Long> metaIds;
private List<BaseMetaDTO> postMetas; private List<BaseMetaDTO> metas;
} }

View File

@ -2,12 +2,12 @@ package run.halo.app.model.vo;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import run.halo.app.model.dto.BaseMetaDTO;
import run.halo.app.model.dto.CategoryDTO; import run.halo.app.model.dto.CategoryDTO;
import run.halo.app.model.dto.TagDTO; import run.halo.app.model.dto.TagDTO;
import run.halo.app.model.dto.post.BasePostSimpleDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Post list vo. * Post list vo.
@ -27,5 +27,5 @@ public class PostListVO extends BasePostSimpleDTO {
private List<CategoryDTO> categories; private List<CategoryDTO> categories;
private List<BaseMetaDTO> postMetas; private Map<String, Object> metas;
} }

View File

@ -20,7 +20,7 @@ import java.util.Set;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class SheetDetailVO extends BasePostDetailDTO { public class SheetDetailVO extends BasePostDetailDTO {
private Set<Long> sheetMetaIds; private Set<Long> metaIds;
private List<BaseMetaDTO> sheetMetas; private List<BaseMetaDTO> metas;
} }

View File

@ -42,15 +42,10 @@ import static run.halo.app.model.support.HaloConst.ONE_TIME_TOKEN_QUERY_NAME;
public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter { public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter {
protected final AntPathMatcher antPathMatcher; protected final AntPathMatcher antPathMatcher;
private final UrlPathHelper urlPathHelper = new UrlPathHelper();
protected final HaloProperties haloProperties; protected final HaloProperties haloProperties;
protected final OptionService optionService; protected final OptionService optionService;
protected final StringCacheStore cacheStore; protected final StringCacheStore cacheStore;
private final UrlPathHelper urlPathHelper = new UrlPathHelper();
private OneTimeTokenService oneTimeTokenService; private OneTimeTokenService oneTimeTokenService;
private volatile AuthenticationFailureHandler failureHandler; private volatile AuthenticationFailureHandler failureHandler;
@ -128,15 +123,15 @@ public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter
this.excludeUrlPatterns = new HashSet<>(excludeUrlPatterns); this.excludeUrlPatterns = new HashSet<>(excludeUrlPatterns);
} }
public Collection<String> getUrlPatterns() {
return this.urlPatterns;
}
public void setUrlPatterns(Collection<String> urlPatterns) { public void setUrlPatterns(Collection<String> urlPatterns) {
Assert.notNull(urlPatterns, "UrlPatterns must not be null"); Assert.notNull(urlPatterns, "UrlPatterns must not be null");
this.urlPatterns = new LinkedHashSet<>(urlPatterns); this.urlPatterns = new LinkedHashSet<>(urlPatterns);
} }
public Collection<String> getUrlPatterns() {
return this.urlPatterns;
}
public void addUrlPatterns(String... urlPatterns) { public void addUrlPatterns(String... urlPatterns) {
Assert.notNull(urlPatterns, "UrlPatterns must not be null"); Assert.notNull(urlPatterns, "UrlPatterns must not be null");
Collections.addAll(this.urlPatterns, urlPatterns); Collections.addAll(this.urlPatterns, urlPatterns);

View File

@ -52,12 +52,12 @@ public interface PostService extends BasePostService<Post> {
* @param post post must not be null * @param post post must not be null
* @param tagIds tag id set * @param tagIds tag id set
* @param categoryIds category id set * @param categoryIds category id set
* @param postMetas post metas * @param metas metas
* @param autoSave autoSave * @param autoSave autoSave
* @return post created * @return post created
*/ */
@NonNull @NonNull
PostDetailVO createBy(@NonNull Post post, Set<Integer> tagIds, Set<Integer> categoryIds, Set<PostMeta> postMetas, boolean autoSave); PostDetailVO createBy(@NonNull Post post, Set<Integer> tagIds, Set<Integer> categoryIds, Set<PostMeta> metas, boolean autoSave);
/** /**
* Creates post by post param. * Creates post by post param.
@ -77,11 +77,12 @@ public interface PostService extends BasePostService<Post> {
* @param postToUpdate post to update must not be null * @param postToUpdate post to update must not be null
* @param tagIds tag id set * @param tagIds tag id set
* @param categoryIds category id set * @param categoryIds category id set
* @param metas metas
* @param autoSave autoSave * @param autoSave autoSave
* @return updated post * @return updated post
*/ */
@NonNull @NonNull
PostDetailVO updateBy(@NonNull Post postToUpdate, Set<Integer> tagIds, Set<Integer> categoryIds, Set<PostMeta> postMetas, boolean autoSave); PostDetailVO updateBy(@NonNull Post postToUpdate, Set<Integer> tagIds, Set<Integer> categoryIds, Set<PostMeta> metas, boolean autoSave);
/** /**
* Gets post by post status and slug. * Gets post by post status and slug.

View File

@ -35,12 +35,12 @@ public interface SheetService extends BasePostService<Sheet> {
/** /**
* Creates a sheet. * Creates a sheet.
* *
* @param sheet sheet must not be null * @param sheet sheet must not be null
* @param sheetMetas sheet metas * @param metas sheet metas
* @param autoSave autoSave * @param autoSave autoSave
* @return created sheet * @return created sheet
*/ */
Sheet createBy(@NonNull Sheet sheet, Set<SheetMeta> sheetMetas, boolean autoSave); Sheet createBy(@NonNull Sheet sheet, Set<SheetMeta> metas, boolean autoSave);
/** /**
* Updates a sheet. * Updates a sheet.
@ -55,12 +55,12 @@ public interface SheetService extends BasePostService<Sheet> {
/** /**
* Updates a sheet. * Updates a sheet.
* *
* @param sheet sheet must not be null * @param sheet sheet must not be null
* @param sheetMetas sheet metas * @param metas sheet metas
* @param autoSave autoSave * @param autoSave autoSave
* @return updated sheet * @return updated sheet
*/ */
Sheet updateBy(@NonNull Sheet sheet, Set<SheetMeta> sheetMetas, boolean autoSave); Sheet updateBy(@NonNull Sheet sheet, Set<SheetMeta> metas, boolean autoSave);
/** /**
* Gets by url * Gets by url

View File

@ -21,11 +21,11 @@ public interface BaseMetaService<META extends BaseMeta> extends CrudService<META
/** /**
* Creates by post metas and post id. * Creates by post metas and post id.
* *
* @param postId post id must not be null * @param postId post id must not be null
* @param postMetas post metas must not be null * @param metas metas must not be null
* @return a list of post meta * @return a list of post meta
*/ */
List<META> createOrUpdateByPostId(@NonNull Integer postId, Set<META> postMetas); List<META> createOrUpdateByPostId(@NonNull Integer postId, Set<META> metas);
/** /**
* Remove post metas by post id. * Remove post metas by post id.

View File

@ -36,24 +36,24 @@ public abstract class BaseMetaServiceImpl<META extends BaseMeta> extends Abstrac
@Override @Override
@Transactional @Transactional
public List<META> createOrUpdateByPostId(Integer postId, Set<META> postMetas) { public List<META> createOrUpdateByPostId(Integer postId, Set<META> metas) {
Assert.notNull(postId, "Post id must not be null"); Assert.notNull(postId, "Post id must not be null");
// firstly remove post metas by post id // firstly remove post metas by post id
removeByPostId(postId); removeByPostId(postId);
if (CollectionUtils.isEmpty(postMetas)) { if (CollectionUtils.isEmpty(metas)) {
return Collections.emptyList(); return Collections.emptyList();
} }
// Save post metas // Save post metas
postMetas.forEach(postMeta -> { metas.forEach(postMeta -> {
if (StringUtils.isNotEmpty(postMeta.getValue()) && StringUtils.isNotEmpty(postMeta.getKey())) { if (StringUtils.isNotEmpty(postMeta.getValue()) && StringUtils.isNotEmpty(postMeta.getKey())) {
postMeta.setPostId(postId); postMeta.setPostId(postId);
baseMetaRepository.save(postMeta); baseMetaRepository.save(postMeta);
} }
}); });
return new ArrayList<>(postMetas); return new ArrayList<>(metas);
} }
@Override @Override
@ -69,18 +69,18 @@ public abstract class BaseMetaServiceImpl<META extends BaseMeta> extends Abstrac
return Collections.emptyMap(); return Collections.emptyMap();
} }
// Find all post metas // Find all metas
List<META> postMetas = baseMetaRepository.findAllByPostIdIn(postIds); List<META> metas = baseMetaRepository.findAllByPostIdIn(postIds);
// Convert to post meta map // Convert to meta map
Map<Long, META> postMetaMap = ServiceUtils.convertToMap(postMetas, META::getId); Map<Long, META> postMetaMap = ServiceUtils.convertToMap(metas, META::getId);
// Create category list map // Create category list map
Map<Integer, List<META>> postMetaListMap = new HashMap<>(); Map<Integer, List<META>> postMetaListMap = new HashMap<>();
// Foreach and collect // Foreach and collect
postMetas.forEach(postMeta -> postMetaListMap.computeIfAbsent(postMeta.getPostId(), postId -> new LinkedList<>()) metas.forEach(meta -> postMetaListMap.computeIfAbsent(meta.getPostId(), postId -> new LinkedList<>())
.add(postMetaMap.get(postMeta.getId()))); .add(postMetaMap.get(meta.getId())));
return postMetaListMap; return postMetaListMap;
} }

View File

@ -20,7 +20,6 @@ import org.springframework.util.CollectionUtils;
import run.halo.app.event.logger.LogEvent; 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.post.BasePostMinimalDTO; import run.halo.app.model.dto.post.BasePostMinimalDTO;
import run.halo.app.model.dto.post.BasePostSimpleDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO;
import run.halo.app.model.entity.*; import run.halo.app.model.entity.*;
@ -126,8 +125,8 @@ 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> metas, boolean autoSave) {
PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, postMetas); PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, metas);
if (!autoSave) { if (!autoSave) {
// Log the creation // Log the creation
LogEvent logEvent = new LogEvent(this, createdPost.getId().toString(), LogEvent logEvent = new LogEvent(this, createdPost.getId().toString(),
@ -153,10 +152,10 @@ 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> metas, 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, metas);
if (!autoSave) { if (!autoSave) {
// Log the creation // Log the creation
LogEvent logEvent = new LogEvent(this, updatedPost.getId().toString(), LogEvent logEvent = new LogEvent(this, updatedPost.getId().toString(),
@ -437,11 +436,11 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
} }
} }
List<PostMeta> postMetas = postMetaService.listBy(post.getId()); List<PostMeta> metas = postMetaService.listBy(post.getId());
if (postMetas.size() > 0) { if (metas.size() > 0) {
content.append("postMetas:").append("\n"); content.append("metas:").append("\n");
for (PostMeta postMeta : postMetas) { for (PostMeta postMeta : metas) {
content.append(" - ").append(postMeta.getKey()).append(" : ") content.append(" - ").append(postMeta.getKey()).append(" : ")
.append(postMeta.getValue()).append("\n"); .append(postMeta.getValue()).append("\n");
} }
@ -458,10 +457,10 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
List<Tag> tags = postTagService.listTagsBy(post.getId()); List<Tag> tags = postTagService.listTagsBy(post.getId());
// List categories // List categories
List<Category> categories = postCategoryService.listCategoriesBy(post.getId()); List<Category> categories = postCategoryService.listCategoriesBy(post.getId());
// List postMetas // List metas
List<PostMeta> postMetas = postMetaService.listBy(post.getId()); List<PostMeta> metas = postMetaService.listBy(post.getId());
// Convert to detail vo // Convert to detail vo
return convertTo(post, tags, categories, postMetas); return convertTo(post, tags, categories, metas);
} }
@Override @Override
@ -480,9 +479,9 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
log.debug("Removed post categories: [{}]", postCategories); log.debug("Removed post categories: [{}]", postCategories);
// Remove post metas // Remove metas
List<PostMeta> postMetas = postMetaService.removeByPostId(postId); List<PostMeta> metas = postMetaService.removeByPostId(postId);
log.debug("Removed post metas: [{}]", postMetas); log.debug("Removed post metas: [{}]", metas);
// Remove post comments // Remove post comments
List<PostComment> postComments = postCommentService.removeByPostId(postId); List<PostComment> postComments = postCommentService.removeByPostId(postId);
@ -544,12 +543,9 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
.collect(Collectors.toList())); .collect(Collectors.toList()));
// Set post metas // Set post metas
postListVO.setPostMetas(Optional.ofNullable(postMetaListMap.get(post.getId())) List<PostMeta> metas = Optional.ofNullable(postMetaListMap.get(post.getId()))
.orElseGet(LinkedList::new) .orElseGet(LinkedList::new);
.stream() postListVO.setMetas(postMetaService.convertToMap(metas));
.filter(Objects::nonNull)
.map(postMeta -> (BaseMetaDTO) new BaseMetaDTO().convertFrom(postMeta))
.collect(Collectors.toList()));
// Set comment count // Set comment count
postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L)); postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L));
@ -605,12 +601,9 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
.collect(Collectors.toList())); .collect(Collectors.toList()));
// Set post metas // Set post metas
postListVO.setPostMetas(Optional.ofNullable(postMetaListMap.get(post.getId())) List<PostMeta> metas = Optional.ofNullable(postMetaListMap.get(post.getId()))
.orElseGet(LinkedList::new) .orElseGet(LinkedList::new);
.stream() postListVO.setMetas(postMetaService.convertToMap(metas));
.filter(Objects::nonNull)
.map(postMeta -> (BaseMetaDTO) new BaseMetaDTO().convertFrom(postMeta))
.collect(Collectors.toList()));
// Set comment count // Set comment count
postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L)); postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L));
@ -670,7 +663,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
* @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 postMetaList
* @return post detail vo * @return post detail vo
*/ */
@NonNull @NonNull
@ -688,7 +681,7 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
// Extract ids // Extract ids
Set<Integer> tagIds = ServiceUtils.fetchProperty(tags, Tag::getId); Set<Integer> tagIds = ServiceUtils.fetchProperty(tags, Tag::getId);
Set<Integer> categoryIds = ServiceUtils.fetchProperty(categories, Category::getId); Set<Integer> categoryIds = ServiceUtils.fetchProperty(categories, Category::getId);
Set<Long> postMetaIds = ServiceUtils.fetchProperty(postMetaList, PostMeta::getId); Set<Long> metaIds = ServiceUtils.fetchProperty(postMetaList, PostMeta::getId);
// Get post tag ids // Get post tag ids
postDetailVO.setTagIds(tagIds); postDetailVO.setTagIds(tagIds);
@ -699,8 +692,8 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
postDetailVO.setCategories(categoryService.convertTo(categories)); postDetailVO.setCategories(categoryService.convertTo(categories));
// Get post meta ids // Get post meta ids
postDetailVO.setPostMetaIds(postMetaIds); postDetailVO.setMetaIds(metaIds);
postDetailVO.setPostMetas(postMetaService.convertTo(postMetaList)); postDetailVO.setMetas(postMetaService.convertTo(postMetaList));
postDetailVO.setCommentCount(postCommentService.countByPostId(post.getId())); postDetailVO.setCommentCount(postCommentService.countByPostId(post.getId()));
@ -755,7 +748,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> metas) {
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
@ -786,8 +779,8 @@ public class PostServiceImpl extends BasePostServiceImpl<Post> implements PostSe
// Create post meta data // Create post meta data
List<PostMeta> postMetaList = postMetaService List<PostMeta> postMetaList = postMetaService
.createOrUpdateByPostId(post.getId(), postMetas); .createOrUpdateByPostId(post.getId(), metas);
log.debug("Created post postMetas: [{}]", postMetaList); log.debug("Created post metas: [{}]", postMetaList);
// Convert to post detail vo // Convert to post detail vo
return convertTo(post, tags, categories, postMetaList); return convertTo(post, tags, categories, postMetaList);

View File

@ -82,11 +82,11 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
} }
@Override @Override
public Sheet createBy(Sheet sheet, Set<SheetMeta> sheetMetas, boolean autoSave) { public Sheet createBy(Sheet sheet, Set<SheetMeta> metas, boolean autoSave) {
Sheet createdSheet = createOrUpdateBy(sheet); Sheet createdSheet = createOrUpdateBy(sheet);
// Create sheet meta data // Create sheet meta data
List<SheetMeta> sheetMetaList = sheetMetaService.createOrUpdateByPostId(sheet.getId(), sheetMetas); List<SheetMeta> sheetMetaList = sheetMetaService.createOrUpdateByPostId(sheet.getId(), metas);
log.debug("Created sheet metas: [{}]", sheetMetaList); log.debug("Created sheet metas: [{}]", sheetMetaList);
if (!autoSave) { if (!autoSave) {
@ -109,11 +109,11 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
} }
@Override @Override
public Sheet updateBy(Sheet sheet, Set<SheetMeta> sheetMetas, boolean autoSave) { public Sheet updateBy(Sheet sheet, Set<SheetMeta> metas, boolean autoSave) {
Sheet updatedSheet = createOrUpdateBy(sheet); Sheet updatedSheet = createOrUpdateBy(sheet);
// Create sheet meta data // Create sheet meta data
List<SheetMeta> sheetMetaList = sheetMetaService.createOrUpdateByPostId(updatedSheet.getId(), sheetMetas); List<SheetMeta> sheetMetaList = sheetMetaService.createOrUpdateByPostId(updatedSheet.getId(), metas);
log.debug("Created sheet metas: [{}]", sheetMetaList); log.debug("Created sheet metas: [{}]", sheetMetaList);
if (!autoSave) { if (!autoSave) {
@ -220,8 +220,8 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
public Sheet removeById(Integer id) { public Sheet removeById(Integer id) {
// Remove sheet metas // Remove sheet metas
List<SheetMeta> sheetMetas = sheetMetaService.removeByPostId(id); List<SheetMeta> metas = sheetMetaService.removeByPostId(id);
log.debug("Removed sheet metas: [{}]", sheetMetas); log.debug("Removed sheet metas: [{}]", metas);
// Remove sheet comments // Remove sheet comments
List<SheetComment> sheetComments = sheetCommentService.removeByPostId(id); List<SheetComment> sheetComments = sheetCommentService.removeByPostId(id);
@ -264,10 +264,10 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
@Override @Override
public SheetDetailVO convertToDetailVo(Sheet sheet) { public SheetDetailVO convertToDetailVo(Sheet sheet) {
// List sheetMetas // List metas
List<SheetMeta> sheetMetas = sheetMetaService.listBy(sheet.getId()); List<SheetMeta> metas = sheetMetaService.listBy(sheet.getId());
// Convert to detail vo // Convert to detail vo
return convertTo(sheet, sheetMetas); return convertTo(sheet, metas);
} }
@Override @Override
@ -292,17 +292,17 @@ public class SheetServiceImpl extends BasePostServiceImpl<Sheet> implements Shee
} }
@NonNull @NonNull
private SheetDetailVO convertTo(@NonNull Sheet sheet, List<SheetMeta> sheetMetas) { private SheetDetailVO convertTo(@NonNull Sheet sheet, List<SheetMeta> metas) {
Assert.notNull(sheet, "Sheet must not be null"); Assert.notNull(sheet, "Sheet must not be null");
// Convert to base detail vo // Convert to base detail vo
SheetDetailVO sheetDetailVO = new SheetDetailVO().convertFrom(sheet); SheetDetailVO sheetDetailVO = new SheetDetailVO().convertFrom(sheet);
Set<Long> sheetMetaIds = ServiceUtils.fetchProperty(sheetMetas, SheetMeta::getId); Set<Long> metaIds = ServiceUtils.fetchProperty(metas, SheetMeta::getId);
// Get sheet meta ids // Get sheet meta ids
sheetDetailVO.setSheetMetaIds(sheetMetaIds); sheetDetailVO.setMetaIds(metaIds);
sheetDetailVO.setSheetMetas(sheetMetaService.convertTo(sheetMetas)); sheetDetailVO.setMetas(sheetMetaService.convertTo(metas));
if (StringUtils.isBlank(sheetDetailVO.getSummary())) { if (StringUtils.isBlank(sheetDetailVO.getSummary())) {
sheetDetailVO.setSummary(generateSummary(sheet.getFormatContent())); sheetDetailVO.setSummary(generateSummary(sheet.getFormatContent()));