mirror of https://github.com/halo-dev/halo
refactor: metas variable. (#632)
* refactor: metas variable. * refactor: metas variable.pull/634/head
parent
378049ba21
commit
a563c493e0
|
@ -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());
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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()));
|
||||||
|
|
Loading…
Reference in New Issue