diff --git a/src/main/java/run/halo/app/controller/admin/api/RecoveryController.java b/src/main/java/run/halo/app/controller/admin/api/RecoveryController.java deleted file mode 100644 index 7b9e8463f..000000000 --- a/src/main/java/run/halo/app/controller/admin/api/RecoveryController.java +++ /dev/null @@ -1,49 +0,0 @@ -package run.halo.app.controller.admin.api; - -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; -import run.halo.app.cache.lock.CacheLock; -import run.halo.app.exception.BadRequestException; -import run.halo.app.model.properties.PrimaryProperties; -import run.halo.app.service.OptionService; -import run.halo.app.service.RecoveryService; - -/** - * Recovery controller - * - * @author johnniang - * @date 19-4-26 - */ -@Deprecated -@RestController -@RequestMapping("/api/admin/recoveries") -public class RecoveryController { - - private final RecoveryService recoveryService; - - private final OptionService optionService; - - public RecoveryController(RecoveryService recoveryService, - OptionService optionService) { - this.recoveryService = recoveryService; - this.optionService = optionService; - } - - @PostMapping("migrations/v0_4_3") - @ApiOperation("Migrates from halo v0.4.3") - @CacheLock - public void migrateFromVersion_0_4_3( - @ApiParam("This file content type should be json") - @RequestPart("file") MultipartFile file) { - if (optionService.getByPropertyOrDefault(PrimaryProperties.IS_INSTALLED, Boolean.class, false)) { - throw new BadRequestException("无法在博客初始化完成之后迁移数据"); - } - - recoveryService.migrateFromV0_4_3(file); - } -} diff --git a/src/main/java/run/halo/app/controller/content/model/PostModel.java b/src/main/java/run/halo/app/controller/content/model/PostModel.java index 1f5201b6a..676678282 100644 --- a/src/main/java/run/halo/app/controller/content/model/PostModel.java +++ b/src/main/java/run/halo/app/controller/content/model/PostModel.java @@ -124,9 +124,6 @@ public class PostModel { model.addAttribute("tags", tagService.convertTo(tags)); model.addAttribute("metas", postMetaService.convertToMap(metas)); - // TODO,Will be deprecated - model.addAttribute("comments", Page.empty()); - if (themeService.templateExists( ThemeService.CUSTOM_POST_PREFIX + post.getTemplate() + HaloConst.SUFFIX_FTL)) { return themeService.render(ThemeService.CUSTOM_POST_PREFIX + post.getTemplate()); diff --git a/src/main/java/run/halo/app/controller/content/model/SheetModel.java b/src/main/java/run/halo/app/controller/content/model/SheetModel.java index c5cc80788..9d119863a 100644 --- a/src/main/java/run/halo/app/controller/content/model/SheetModel.java +++ b/src/main/java/run/halo/app/controller/content/model/SheetModel.java @@ -1,21 +1,24 @@ package run.halo.app.controller.content.model; import org.apache.commons.lang3.StringUtils; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Component; import org.springframework.ui.Model; import run.halo.app.cache.StringCacheStore; import run.halo.app.exception.ForbiddenException; 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.PostStatus; import run.halo.app.model.support.HaloConst; import run.halo.app.model.vo.SheetDetailVO; import run.halo.app.service.OptionService; +import run.halo.app.service.SheetMetaService; import run.halo.app.service.SheetService; import run.halo.app.service.ThemeService; import run.halo.app.utils.MarkdownUtils; +import java.util.List; + /** * Sheet model. * @@ -27,14 +30,21 @@ public class SheetModel { private final SheetService sheetService; + private final SheetMetaService sheetMetaService; + private final StringCacheStore cacheStore; private final ThemeService themeService; 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.sheetMetaService = sheetMetaService; this.cacheStore = cacheStore; this.themeService = themeService; this.optionService = optionService; @@ -70,6 +80,8 @@ public class SheetModel { SheetDetailVO sheetDetailVO = sheetService.convertToDetailVo(sheet); + List metas = sheetMetaService.listBy(sheet.getId()); + // Generate meta keywords. if (StringUtils.isNotEmpty(sheet.getMetaKeywords())) { model.addAttribute("meta_keywords", sheet.getMetaKeywords()); @@ -88,9 +100,7 @@ public class SheetModel { model.addAttribute("sheet", sheetDetailVO); model.addAttribute("post", sheetDetailVO); model.addAttribute("is_sheet", true); - - // TODO,Will be deprecated - model.addAttribute("comments", Page.empty()); + model.addAttribute("metas", sheetMetaService.convertToMap(metas)); if (themeService.templateExists(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate() + HaloConst.SUFFIX_FTL)) { return themeService.render(ThemeService.CUSTOM_SHEET_PREFIX + sheet.getTemplate()); diff --git a/src/main/java/run/halo/app/core/freemarker/tag/PostTagDirective.java b/src/main/java/run/halo/app/core/freemarker/tag/PostTagDirective.java index 4e15f8a25..427b5485e 100644 --- a/src/main/java/run/halo/app/core/freemarker/tag/PostTagDirective.java +++ b/src/main/java/run/halo/app/core/freemarker/tag/PostTagDirective.java @@ -47,8 +47,7 @@ public class PostTagDirective implements TemplateDirectiveModel { switch (method) { case "latest": int top = Integer.parseInt(params.get("top").toString()); - List posts = postService.listLatest(top); - env.setVariable("posts", builder.build().wrap(postService.convertToListVo(posts))); + env.setVariable("posts", builder.build().wrap(postService.convertToListVo(postService.listLatest(top)))); break; case "count": env.setVariable("count", builder.build().wrap(postService.countByStatus(PostStatus.PUBLISHED))); @@ -69,7 +68,8 @@ public class PostTagDirective implements TemplateDirectiveModel { break; case "listByCategorySlug": String categorySlug = params.get("categorySlug").toString(); - env.setVariable("posts", builder.build().wrap(postService.convertToListVo(postCategoryService.listPostBy(categorySlug, PostStatus.PUBLISHED)))); + List posts = postCategoryService.listPostBy(categorySlug, PostStatus.PUBLISHED); + env.setVariable("posts", builder.build().wrap(postService.convertToListVo(posts))); break; case "listByTagId": Integer tagId = Integer.parseInt(params.get("tagId").toString()); diff --git a/src/main/java/run/halo/app/listener/StartedListener.java b/src/main/java/run/halo/app/listener/StartedListener.java index 1f05c8783..9bf8af93b 100644 --- a/src/main/java/run/halo/app/listener/StartedListener.java +++ b/src/main/java/run/halo/app/listener/StartedListener.java @@ -4,6 +4,8 @@ import lombok.extern.slf4j.Slf4j; import org.flywaydb.core.Flyway; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.ansi.AnsiColor; +import org.springframework.boot.ansi.AnsiOutput; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Configuration; @@ -64,12 +66,12 @@ public class StartedListener implements ApplicationListener { private Set categoryIds; - private Set postMetas; + private Set metas; @Override public Post convertTo() { @@ -101,11 +101,11 @@ public class PostParam implements InputConverter { public Set getPostMetas() { Set postMetaSet = new HashSet<>(); - if (CollectionUtils.isEmpty(postMetas)) { + if (CollectionUtils.isEmpty(metas)) { return postMetaSet; } - for (PostMetaParam postMetaParam : postMetas) { + for (PostMetaParam postMetaParam : metas) { PostMeta postMeta = postMetaParam.convertTo(); postMetaSet.add(postMeta); } diff --git a/src/main/java/run/halo/app/model/params/SheetParam.java b/src/main/java/run/halo/app/model/params/SheetParam.java index 0f1176bcb..9fa1eb187 100644 --- a/src/main/java/run/halo/app/model/params/SheetParam.java +++ b/src/main/java/run/halo/app/model/params/SheetParam.java @@ -62,7 +62,7 @@ public class SheetParam implements InputConverter { private String metaDescription; - private Set sheetMetas; + private Set metas; @Override public Sheet convertTo() { @@ -96,11 +96,11 @@ public class SheetParam implements InputConverter { public Set getSheetMetas() { Set sheetMetasSet = new HashSet<>(); - if (CollectionUtils.isEmpty(sheetMetas)) { + if (CollectionUtils.isEmpty(metas)) { return sheetMetasSet; } - for (SheetMetaParam sheetMetaParam : sheetMetas) { + for (SheetMetaParam sheetMetaParam : metas) { SheetMeta sheetMeta = sheetMetaParam.convertTo(); sheetMetasSet.add(sheetMeta); } 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 f8dec0f63..a6d2552f8 100644 --- a/src/main/java/run/halo/app/model/vo/PostDetailVO.java +++ b/src/main/java/run/halo/app/model/vo/PostDetailVO.java @@ -31,8 +31,8 @@ public class PostDetailVO extends BasePostDetailDTO { private List categories; - private Set postMetaIds; + private Set metaIds; - private List postMetas; + private List metas; } 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 5b8d51870..a2f32f239 100644 --- a/src/main/java/run/halo/app/model/vo/PostListVO.java +++ b/src/main/java/run/halo/app/model/vo/PostListVO.java @@ -2,12 +2,12 @@ package run.halo.app.model.vo; import lombok.Data; import lombok.EqualsAndHashCode; -import run.halo.app.model.dto.BaseMetaDTO; import run.halo.app.model.dto.CategoryDTO; import run.halo.app.model.dto.TagDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO; import java.util.List; +import java.util.Map; /** * Post list vo. @@ -27,5 +27,5 @@ public class PostListVO extends BasePostSimpleDTO { private List categories; - private List postMetas; + private Map metas; } diff --git a/src/main/java/run/halo/app/model/vo/SheetDetailVO.java b/src/main/java/run/halo/app/model/vo/SheetDetailVO.java index a8289525b..0f2e8d38e 100644 --- a/src/main/java/run/halo/app/model/vo/SheetDetailVO.java +++ b/src/main/java/run/halo/app/model/vo/SheetDetailVO.java @@ -20,7 +20,7 @@ import java.util.Set; @EqualsAndHashCode(callSuper = true) public class SheetDetailVO extends BasePostDetailDTO { - private Set sheetMetaIds; + private Set metaIds; - private List sheetMetas; + private List metas; } diff --git a/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java b/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java index 7749ab6e2..1615c6644 100644 --- a/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java +++ b/src/main/java/run/halo/app/security/filter/AbstractAuthenticationFilter.java @@ -42,15 +42,10 @@ import static run.halo.app.model.support.HaloConst.ONE_TIME_TOKEN_QUERY_NAME; public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter { protected final AntPathMatcher antPathMatcher; - - private final UrlPathHelper urlPathHelper = new UrlPathHelper(); - protected final HaloProperties haloProperties; - protected final OptionService optionService; - protected final StringCacheStore cacheStore; - + private final UrlPathHelper urlPathHelper = new UrlPathHelper(); private OneTimeTokenService oneTimeTokenService; private volatile AuthenticationFailureHandler failureHandler; @@ -128,15 +123,15 @@ public abstract class AbstractAuthenticationFilter extends OncePerRequestFilter this.excludeUrlPatterns = new HashSet<>(excludeUrlPatterns); } + public Collection getUrlPatterns() { + return this.urlPatterns; + } + public void setUrlPatterns(Collection urlPatterns) { Assert.notNull(urlPatterns, "UrlPatterns must not be null"); this.urlPatterns = new LinkedHashSet<>(urlPatterns); } - public Collection getUrlPatterns() { - return this.urlPatterns; - } - public void addUrlPatterns(String... urlPatterns) { Assert.notNull(urlPatterns, "UrlPatterns must not be null"); Collections.addAll(this.urlPatterns, urlPatterns); diff --git a/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java b/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java index 6b67ecf66..de743435f 100644 --- a/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java +++ b/src/main/java/run/halo/app/security/filter/AdminAuthenticationFilter.java @@ -60,7 +60,6 @@ public class AdminAuthenticationFilter extends AbstractAuthenticationFilter { "/api/admin/login", "/api/admin/refresh/*", "/api/admin/installations", - "/api/admin/recoveries/migrations/**", "/api/admin/migrations/**", "/api/admin/is_installed", "/api/admin/password/code", diff --git a/src/main/java/run/halo/app/service/PostService.java b/src/main/java/run/halo/app/service/PostService.java index f08a9dde6..393469903 100755 --- a/src/main/java/run/halo/app/service/PostService.java +++ b/src/main/java/run/halo/app/service/PostService.java @@ -52,12 +52,12 @@ public interface PostService extends BasePostService { * @param post post must not be null * @param tagIds tag id set * @param categoryIds category id set - * @param postMetas post metas + * @param metas metas * @param autoSave autoSave * @return post created */ @NonNull - PostDetailVO createBy(@NonNull Post post, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave); + PostDetailVO createBy(@NonNull Post post, Set tagIds, Set categoryIds, Set metas, boolean autoSave); /** * Creates post by post param. @@ -77,11 +77,12 @@ public interface PostService extends BasePostService { * @param postToUpdate post to update must not be null * @param tagIds tag id set * @param categoryIds category id set + * @param metas metas * @param autoSave autoSave * @return updated post */ @NonNull - PostDetailVO updateBy(@NonNull Post postToUpdate, Set tagIds, Set categoryIds, Set postMetas, boolean autoSave); + PostDetailVO updateBy(@NonNull Post postToUpdate, Set tagIds, Set categoryIds, Set metas, boolean autoSave); /** * Gets post by post status and slug. diff --git a/src/main/java/run/halo/app/service/RecoveryService.java b/src/main/java/run/halo/app/service/RecoveryService.java deleted file mode 100644 index 660c7c7ac..000000000 --- a/src/main/java/run/halo/app/service/RecoveryService.java +++ /dev/null @@ -1,21 +0,0 @@ -package run.halo.app.service; - -import org.springframework.lang.NonNull; -import org.springframework.web.multipart.MultipartFile; - -/** - * Recovery service interface. - * - * @author johnniang - * @date 2019-04-26 - */ -@Deprecated -public interface RecoveryService { - - /** - * Migrates from halo version 0.4.3. - * - * @param file multipart file must not be null - */ - void migrateFromV0_4_3(@NonNull MultipartFile file); -} diff --git a/src/main/java/run/halo/app/service/SheetService.java b/src/main/java/run/halo/app/service/SheetService.java index eb4f248a3..0954174a5 100644 --- a/src/main/java/run/halo/app/service/SheetService.java +++ b/src/main/java/run/halo/app/service/SheetService.java @@ -35,12 +35,12 @@ public interface SheetService extends BasePostService { /** * Creates a sheet. * - * @param sheet sheet must not be null - * @param sheetMetas sheet metas - * @param autoSave autoSave + * @param sheet sheet must not be null + * @param metas sheet metas + * @param autoSave autoSave * @return created sheet */ - Sheet createBy(@NonNull Sheet sheet, Set sheetMetas, boolean autoSave); + Sheet createBy(@NonNull Sheet sheet, Set metas, boolean autoSave); /** * Updates a sheet. @@ -55,12 +55,12 @@ public interface SheetService extends BasePostService { /** * Updates a sheet. * - * @param sheet sheet must not be null - * @param sheetMetas sheet metas - * @param autoSave autoSave + * @param sheet sheet must not be null + * @param metas sheet metas + * @param autoSave autoSave * @return updated sheet */ - Sheet updateBy(@NonNull Sheet sheet, Set sheetMetas, boolean autoSave); + Sheet updateBy(@NonNull Sheet sheet, Set metas, boolean autoSave); /** * Gets by url diff --git a/src/main/java/run/halo/app/service/base/BaseMetaService.java b/src/main/java/run/halo/app/service/base/BaseMetaService.java index ce434414b..6c119da11 100644 --- a/src/main/java/run/halo/app/service/base/BaseMetaService.java +++ b/src/main/java/run/halo/app/service/base/BaseMetaService.java @@ -21,11 +21,11 @@ public interface BaseMetaService extends CrudService createOrUpdateByPostId(@NonNull Integer postId, Set postMetas); + List createOrUpdateByPostId(@NonNull Integer postId, Set metas); /** * Remove post metas by post id. diff --git a/src/main/java/run/halo/app/service/impl/BaseMetaServiceImpl.java b/src/main/java/run/halo/app/service/impl/BaseMetaServiceImpl.java index 5031f2156..5929c268a 100644 --- a/src/main/java/run/halo/app/service/impl/BaseMetaServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BaseMetaServiceImpl.java @@ -36,24 +36,24 @@ public abstract class BaseMetaServiceImpl extends Abstrac @Override @Transactional - public List createOrUpdateByPostId(Integer postId, Set postMetas) { + public List createOrUpdateByPostId(Integer postId, Set metas) { Assert.notNull(postId, "Post id must not be null"); // firstly remove post metas by post id removeByPostId(postId); - if (CollectionUtils.isEmpty(postMetas)) { + if (CollectionUtils.isEmpty(metas)) { return Collections.emptyList(); } // Save post metas - postMetas.forEach(postMeta -> { + metas.forEach(postMeta -> { if (StringUtils.isNotEmpty(postMeta.getValue()) && StringUtils.isNotEmpty(postMeta.getKey())) { postMeta.setPostId(postId); baseMetaRepository.save(postMeta); } }); - return new ArrayList<>(postMetas); + return new ArrayList<>(metas); } @Override @@ -69,18 +69,18 @@ public abstract class BaseMetaServiceImpl extends Abstrac return Collections.emptyMap(); } - // Find all post metas - List postMetas = baseMetaRepository.findAllByPostIdIn(postIds); + // Find all metas + List metas = baseMetaRepository.findAllByPostIdIn(postIds); - // Convert to post meta map - Map postMetaMap = ServiceUtils.convertToMap(postMetas, META::getId); + // Convert to meta map + Map postMetaMap = ServiceUtils.convertToMap(metas, META::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()))); + metas.forEach(meta -> postMetaListMap.computeIfAbsent(meta.getPostId(), postId -> new LinkedList<>()) + .add(postMetaMap.get(meta.getId()))); return postMetaListMap; } 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 a2f3b4c43..cb92da24b 100644 --- a/src/main/java/run/halo/app/service/impl/PostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/PostServiceImpl.java @@ -20,7 +20,6 @@ import org.springframework.util.CollectionUtils; import run.halo.app.event.logger.LogEvent; import run.halo.app.event.post.PostVisitEvent; 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.BasePostSimpleDTO; import run.halo.app.model.entity.*; @@ -126,8 +125,8 @@ 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); + Set metas, boolean autoSave) { + PostDetailVO createdPost = createOrUpdate(postToCreate, tagIds, categoryIds, metas); if (!autoSave) { // Log the creation LogEvent logEvent = new LogEvent(this, createdPost.getId().toString(), @@ -153,10 +152,10 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe @Override @Transactional public PostDetailVO updateBy(Post postToUpdate, Set tagIds, Set categoryIds, - Set postMetas, boolean autoSave) { + Set metas, boolean autoSave) { // Set edit time postToUpdate.setEditTime(DateUtils.now()); - PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds, postMetas); + PostDetailVO updatedPost = createOrUpdate(postToUpdate, tagIds, categoryIds, metas); if (!autoSave) { // Log the creation LogEvent logEvent = new LogEvent(this, updatedPost.getId().toString(), @@ -437,11 +436,11 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } } - List postMetas = postMetaService.listBy(post.getId()); + List metas = postMetaService.listBy(post.getId()); - if (postMetas.size() > 0) { - content.append("postMetas:").append("\n"); - for (PostMeta postMeta : postMetas) { + if (metas.size() > 0) { + content.append("metas:").append("\n"); + for (PostMeta postMeta : metas) { content.append(" - ").append(postMeta.getKey()).append(" : ") .append(postMeta.getValue()).append("\n"); } @@ -458,10 +457,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.listBy(post.getId()); + // List metas + List metas = postMetaService.listBy(post.getId()); // Convert to detail vo - return convertTo(post, tags, categories, postMetas); + return convertTo(post, tags, categories, metas); } @Override @@ -480,9 +479,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe log.debug("Removed post categories: [{}]", postCategories); - // Remove post metas - List postMetas = postMetaService.removeByPostId(postId); - log.debug("Removed post metas: [{}]", postMetas); + // Remove metas + List metas = postMetaService.removeByPostId(postId); + log.debug("Removed post metas: [{}]", metas); // Remove post comments List postComments = postCommentService.removeByPostId(postId); @@ -544,12 +543,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe .collect(Collectors.toList())); // Set post metas - postListVO.setPostMetas(Optional.ofNullable(postMetaListMap.get(post.getId())) - .orElseGet(LinkedList::new) - .stream() - .filter(Objects::nonNull) - .map(postMeta -> (BaseMetaDTO) new BaseMetaDTO().convertFrom(postMeta)) - .collect(Collectors.toList())); + List metas = Optional.ofNullable(postMetaListMap.get(post.getId())) + .orElseGet(LinkedList::new); + postListVO.setMetas(postMetaService.convertToMap(metas)); // Set comment count postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L)); @@ -605,12 +601,9 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe .collect(Collectors.toList())); // Set post metas - postListVO.setPostMetas(Optional.ofNullable(postMetaListMap.get(post.getId())) - .orElseGet(LinkedList::new) - .stream() - .filter(Objects::nonNull) - .map(postMeta -> (BaseMetaDTO) new BaseMetaDTO().convertFrom(postMeta)) - .collect(Collectors.toList())); + List metas = Optional.ofNullable(postMetaListMap.get(post.getId())) + .orElseGet(LinkedList::new); + postListVO.setMetas(postMetaService.convertToMap(metas)); // Set comment count postListVO.setCommentCount(commentCountMap.getOrDefault(post.getId(), 0L)); @@ -670,7 +663,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe * @param post post must not be null * @param tags tags * @param categories categories - * @param postMetaList postMetas + * @param postMetaList postMetaList * @return post detail vo */ @NonNull @@ -688,7 +681,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); + Set metaIds = ServiceUtils.fetchProperty(postMetaList, PostMeta::getId); // Get post tag ids postDetailVO.setTagIds(tagIds); @@ -699,8 +692,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe postDetailVO.setCategories(categoryService.convertTo(categories)); // Get post meta ids - postDetailVO.setPostMetaIds(postMetaIds); - postDetailVO.setPostMetas(postMetaService.convertTo(postMetaList)); + postDetailVO.setMetaIds(metaIds); + postDetailVO.setMetas(postMetaService.convertTo(postMetaList)); postDetailVO.setCommentCount(postCommentService.countByPostId(post.getId())); @@ -755,7 +748,7 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe } private PostDetailVO createOrUpdate(@NonNull Post post, Set tagIds, - Set categoryIds, Set postMetas) { + Set categoryIds, Set metas) { Assert.notNull(post, "Post param must not be null"); // Create or update post @@ -786,8 +779,8 @@ public class PostServiceImpl extends BasePostServiceImpl implements PostSe // Create post meta data List postMetaList = postMetaService - .createOrUpdateByPostId(post.getId(), postMetas); - log.debug("Created post postMetas: [{}]", postMetaList); + .createOrUpdateByPostId(post.getId(), metas); + log.debug("Created post metas: [{}]", postMetaList); // Convert to post detail vo return convertTo(post, tags, categories, postMetaList); diff --git a/src/main/java/run/halo/app/service/impl/RecoveryServiceImpl.java b/src/main/java/run/halo/app/service/impl/RecoveryServiceImpl.java deleted file mode 100644 index 97273216b..000000000 --- a/src/main/java/run/halo/app/service/impl/RecoveryServiceImpl.java +++ /dev/null @@ -1,698 +0,0 @@ -package run.halo.app.service.impl; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; -import org.springframework.util.FileCopyUtils; -import org.springframework.web.multipart.MultipartFile; -import run.halo.app.exception.ServiceException; -import run.halo.app.model.entity.*; -import run.halo.app.model.enums.AttachmentType; -import run.halo.app.model.enums.CommentStatus; -import run.halo.app.model.enums.PostStatus; -import run.halo.app.repository.PostCommentRepository; -import run.halo.app.repository.SheetCommentRepository; -import run.halo.app.service.*; -import run.halo.app.utils.BeanUtils; -import run.halo.app.utils.JsonUtils; -import run.halo.app.utils.ServiceUtils; - -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * Recovery service implementation. - * - * @author johnniang - * @author ryanwang - * @date 2019-04-26 - */ -@Slf4j -@Service -@SuppressWarnings("unchecked") -public class RecoveryServiceImpl implements RecoveryService { - - private final AttachmentService attachmentService; - - private final PostService postService; - - private final LinkService linkService; - - private final MenuService menuService; - - private final CategoryService categoryService; - - private final TagService tagService; - - private final PostCommentService postCommentService; - - private final PostCommentRepository postCommentRepository; - - private final SheetCommentService sheetCommentService; - - private final SheetCommentRepository sheetCommentRepository; - - private final SheetService sheetService; - - private final PhotoService photoService; - - private final PostCategoryService postCategoryService; - - private final PostTagService postTagService; - - public RecoveryServiceImpl(AttachmentService attachmentService, - PostService postService, - LinkService linkService, - MenuService menuService, - CategoryService categoryService, - TagService tagService, - PostCommentService postCommentService, - PostCommentRepository postCommentRepository, - SheetCommentService sheetCommentService, - SheetCommentRepository sheetCommentRepository, - SheetService sheetService, - PhotoService photoService, - PostCategoryService postCategoryService, - PostTagService postTagService) { - this.attachmentService = attachmentService; - this.postService = postService; - this.linkService = linkService; - this.menuService = menuService; - this.categoryService = categoryService; - this.tagService = tagService; - this.postCommentService = postCommentService; - this.postCommentRepository = postCommentRepository; - this.sheetCommentService = sheetCommentService; - this.sheetCommentRepository = sheetCommentRepository; - this.sheetService = sheetService; - this.photoService = photoService; - this.postCategoryService = postCategoryService; - this.postTagService = postTagService; - } - - @Override - @Async - public void migrateFromV0_4_3(MultipartFile file) { - // Get migration content - try { - String migrationContent = FileCopyUtils.copyToString(new InputStreamReader(file.getInputStream(), StandardCharsets.UTF_8)); - - Object migrationObject = JsonUtils.jsonToObject(migrationContent, Object.class); - - if (migrationObject instanceof Map) { - Map migrationMap = (Map) migrationObject; - - // Handle attachments - List attachments = handleAttachments(migrationMap.get("attachments")); - - log.debug("Migrated attachments: [{}]", attachments); - - // Handle links - List links = handleLinks(migrationMap.get("links")); - - log.debug("Migrated links: [{}]", links); - - // Handle galleries - List photos = handleGalleries(migrationMap.get("galleries")); - - log.debug("Migrated photos: [{}]", photos); - - // Handle menus - List menus = handleMenus(migrationMap.get("menus")); - - log.debug("Migrated menus: [{}]", menus); - - // Handle posts - List posts = handleBasePosts(migrationMap.get("posts")); - - log.debug("Migrated posts: [{}]", posts); - } - } catch (IOException e) { - throw new ServiceException("备份文件 " + file.getOriginalFilename() + " 读取失败", e); - } - } - - @NonNull - private List handleBasePosts(@Nullable Object postsObject) { - if (!(postsObject instanceof List)) { - return Collections.emptyList(); - } - - List postObjectList = (List) postsObject; - - List result = new LinkedList<>(); - - postObjectList.forEach(postObject -> { - if (!(postObject instanceof Map)) { - return; - } - - Map postMap = (Map) postObject; - - BasePost post = new BasePost(); - post.setTitle(postMap.getOrDefault("postTitle", "").toString()); - post.setSlug(postMap.getOrDefault("postUrl", "").toString()); - post.setOriginalContent(postMap.getOrDefault("postContentMd", "").toString()); - post.setFormatContent(postMap.getOrDefault("postContent", "").toString()); - post.setSummary(postMap.getOrDefault("postSummary", "").toString()); - post.setThumbnail(postMap.getOrDefault("postThumbnail", "").toString()); - post.setVisits(getLongOrDefault(postMap.getOrDefault("postViews", "").toString(), 0L)); - post.setDisallowComment(false); - post.setTemplate(postMap.getOrDefault("customTpl", "").toString()); - - // Set disallow comment - Integer allowComment = getIntegerOrDefault(postMap.getOrDefault("allowComment", "1").toString(), 1); - if (allowComment != 1) { - post.setDisallowComment(true); - } - - // Set create time - Long createTime = getLongOrDefault(postMap.getOrDefault("postDate", "").toString(), 0L); - if (createTime != 0L) { - post.setCreateTime(new Date(createTime)); - } - - // Set update time - Long updateTime = getLongOrDefault(postMap.getOrDefault("postUpdate", "").toString(), 0L); - if (updateTime != 0L) { - post.setUpdateTime(new Date(updateTime)); - } - - // Set status (default draft) - Integer postStatus = getIntegerOrDefault(postMap.getOrDefault("postStatus", "").toString(), 1); - if (postStatus == 0) { - post.setStatus(PostStatus.PUBLISHED); - } else if (postStatus == 1) { - post.setStatus(PostStatus.DRAFT); - } else { - post.setStatus(PostStatus.RECYCLE); - } - - String postType = postMap.getOrDefault("postType", "post").toString(); - - try { - if ("post".equalsIgnoreCase(postType)) { - // Handle post - result.add(handlePost(post, postMap)); - } else { - // Handle page - result.add(handleSheet(post, postMap)); - } - } catch (Exception e) { - log.warn("Failed to migrate a post or sheet", e); - // Ignore this exception - } - }); - - return result; - } - - @NonNull - private Post handlePost(@NonNull BasePost basePost, @NonNull Map postMap) { - Post post = BeanUtils.transformFrom(basePost, Post.class); - - // Create it - Post createdPost = postService.createOrUpdateBy(post); - - Object commentsObject = postMap.get("comments"); - Object categoriesObject = postMap.get("categories"); - Object tagsObject = postMap.get("tags"); - // Handle comments - List baseComments = handleComment(commentsObject, createdPost.getId()); - - // Handle categories - List categories = handleCategories(categoriesObject, createdPost.getId()); - - log.debug("Migrated categories of post [{}]: [{}]", categories, createdPost.getId()); - - // Handle tags - List tags = handleTags(tagsObject, createdPost.getId()); - - log.debug("Migrated tags of post [{}]: [{}]", tags, createdPost.getId()); - - List postComments = baseComments.stream() - .map(baseComment -> BeanUtils.transformFrom(baseComment, PostComment.class)) - .collect(Collectors.toList()); - - try { - // Build virtual comment - PostComment virtualPostComment = new PostComment(); - virtualPostComment.setId(0L); - // Create comments - createPostCommentRecursively(virtualPostComment, postComments); - } catch (Exception e) { - log.warn("Failed to create post comments for post with id " + createdPost.getId(), e); - // Ignore this exception - } - - return createdPost; - } - - @NonNull - private Sheet handleSheet(@NonNull BasePost basePost, @NonNull Map postMap) { - Sheet sheet = BeanUtils.transformFrom(basePost, Sheet.class); - - // Create it - Sheet createdSheet = sheetService.createOrUpdateBy(sheet); - - Object commentsObject = postMap.get("comments"); - // Handle comments - List baseComments = handleComment(commentsObject, createdSheet.getId()); - - List sheetComments = baseComments.stream() - .map(baseComment -> BeanUtils.transformFrom(baseComment, SheetComment.class)) - .collect(Collectors.toList()); - - // Create comments - try { - // Build virtual comment - SheetComment virtualSheetComment = new SheetComment(); - virtualSheetComment.setId(0L); - // Create comments - createSheetCommentRecursively(virtualSheetComment, sheetComments); - } catch (Exception e) { - log.warn("Failed to create sheet comments for sheet with id " + createdSheet.getId(), e); - // Ignore this exception - } - - return createdSheet; - } - - - private void createPostCommentRecursively(@NonNull final PostComment parentComment, List postComments) { - Long oldParentId = parentComment.getId(); - - // Create parent - if (!ServiceUtils.isEmptyId(parentComment.getId())) { - PostComment createdComment = postCommentRepository.save(parentComment); - log.debug("Created post comment: [{}]", createdComment); - parentComment.setId(createdComment.getId()); - } - - if (CollectionUtils.isEmpty(postComments)) { - return; - } - // Get all children - List children = postComments.stream() - .filter(postComment -> Objects.equals(oldParentId, postComment.getParentId())) - .collect(Collectors.toList()); - - - // Set parent id again - children.forEach(postComment -> postComment.setParentId(parentComment.getId())); - - // Remove children - postComments.removeAll(children); - - // Create children recursively - children.forEach(childComment -> createPostCommentRecursively(childComment, postComments)); - } - - private void createSheetCommentRecursively(@NonNull final SheetComment parentComment, List sheetComments) { - Long oldParentId = parentComment.getId(); - // Create parent - if (!ServiceUtils.isEmptyId(parentComment.getId())) { - SheetComment createComment = sheetCommentRepository.save(parentComment); - parentComment.setId(createComment.getId()); - } - - if (CollectionUtils.isEmpty(sheetComments)) { - return; - } - // Get all children - List children = sheetComments.stream() - .filter(sheetComment -> Objects.equals(oldParentId, sheetComment.getParentId())) - .collect(Collectors.toList()); - - // Set parent id again - children.forEach(postComment -> postComment.setParentId(parentComment.getId())); - - // Remove children - sheetComments.removeAll(children); - - // Create children recursively - children.forEach(childComment -> createSheetCommentRecursively(childComment, sheetComments)); - } - - private List handleComment(@Nullable Object commentsObject, @NonNull Integer postId) { - Assert.notNull(postId, "Post id must not be null"); - - if (!(commentsObject instanceof List)) { - return Collections.emptyList(); - } - - List commentObjectList = (List) commentsObject; - - List result = new LinkedList<>(); - - commentObjectList.forEach(commentObject -> { - if (!(commentObject instanceof Map)) { - return; - } - - Map commentMap = (Map) commentObject; - - BaseComment baseComment = new BaseComment(); - baseComment.setId(getLongOrDefault(commentMap.getOrDefault("commentId", "").toString(), null)); - baseComment.setAuthor(commentMap.getOrDefault("commentAuthor", "").toString()); - baseComment.setEmail(commentMap.getOrDefault("commentAuthorEmail", "").toString()); - baseComment.setIpAddress(commentMap.getOrDefault("commentAuthorIp", "").toString()); - baseComment.setAuthorUrl(commentMap.getOrDefault("commentAuthorUrl", "").toString()); - baseComment.setGravatarMd5(commentMap.getOrDefault("commentAuthorAvatarMd5", "").toString()); - baseComment.setContent(commentMap.getOrDefault("commentContent", "").toString()); - baseComment.setUserAgent(commentMap.getOrDefault("commentAgent", "").toString()); - baseComment.setIsAdmin(getBooleanOrDefault(commentMap.getOrDefault("isAdmin", "").toString(), false)); - baseComment.setPostId(postId); - baseComment.setParentId(getLongOrDefault(commentMap.getOrDefault("commentParent", "").toString(), 0L)); - - // Set create date - Long createTimestamp = getLongOrDefault(commentMap.getOrDefault("createDate", "").toString(), System.currentTimeMillis()); - baseComment.setCreateTime(new Date(createTimestamp)); - - Integer commentStatus = getIntegerOrDefault(commentMap.getOrDefault("commentStatus", "").toString(), 1); - if (commentStatus == 0) { - baseComment.setStatus(CommentStatus.PUBLISHED); - } else if (commentStatus == 1) { - baseComment.setStatus(CommentStatus.AUDITING); - } else { - baseComment.setStatus(CommentStatus.RECYCLE); - } - - result.add(baseComment); - }); - - return result; - } - - @NonNull - private List handleCategories(@Nullable Object categoriesObject, @NonNull Integer postId) { - Assert.notNull(postId, "Post id must not be null"); - - if (!(categoriesObject instanceof List)) { - return Collections.emptyList(); - } - - List categoryObjectList = (List) categoriesObject; - - List result = new LinkedList<>(); - - categoryObjectList.forEach(categoryObject -> { - if (!(categoryObject instanceof Map)) { - return; - } - - Map categoryMap = (Map) categoryObject; - - String slug = categoryMap.getOrDefault("cateUrl", "").toString(); - - Category category = categoryService.getBySlug(slug); - - if (null == category) { - category = new Category(); - category.setName(categoryMap.getOrDefault("cateName", "").toString()); - category.setSlug(slug); - category.setDescription(categoryMap.getOrDefault("cateDesc", "").toString()); - category = categoryService.create(category); - } - - PostCategory postCategory = new PostCategory(); - postCategory.setCategoryId(category.getId()); - postCategory.setPostId(postId); - postCategoryService.create(postCategory); - - try { - result.add(category); - } catch (Exception e) { - log.warn("Failed to migrate a category", e); - } - }); - - return result; - } - - @NonNull - private List handleTags(@Nullable Object tagsObject, @NonNull Integer postId) { - Assert.notNull(postId, "Post id must not be null"); - - if (!(tagsObject instanceof List)) { - return Collections.emptyList(); - } - - List tagObjectList = (List) tagsObject; - - List result = new LinkedList<>(); - - tagObjectList.forEach(tagObject -> { - if (!(tagObject instanceof Map)) { - return; - } - - Map tagMap = (Map) tagObject; - - String slug = tagMap.getOrDefault("tagUrl", "").toString(); - - Tag tag = tagService.getBySlug(slug); - - if (null == tag) { - tag = new Tag(); - tag.setName(tagMap.getOrDefault("tagName", "").toString()); - tag.setSlug(slug); - tag = tagService.create(tag); - } - - PostTag postTag = new PostTag(); - postTag.setTagId(tag.getId()); - postTag.setPostId(postId); - postTagService.create(postTag); - - try { - result.add(tag); - } catch (Exception e) { - log.warn("Failed to migrate a tag", e); - } - }); - - return result; - } - - @NonNull - private List handleMenus(@Nullable Object menusObject) { - if (!(menusObject instanceof List)) { - return Collections.emptyList(); - } - - List menuObjectList = (List) menusObject; - - List result = new LinkedList<>(); - - menuObjectList.forEach(menuObject -> { - if (!(menuObject instanceof Map)) { - return; - } - - Map menuMap = (Map) menuObject; - - Menu menu = new Menu(); - - menu.setName(menuMap.getOrDefault("menuName", "").toString()); - menu.setUrl(menuMap.getOrDefault("menuUrl", "").toString()); - // Set priority - String sortString = menuMap.getOrDefault("menuSort", "0").toString(); - menu.setPriority(getIntegerOrDefault(sortString, 0)); - menu.setTarget(menuMap.getOrDefault("menuTarget", "_self").toString()); - menu.setIcon(menuMap.getOrDefault("menuIcon", "").toString()); - - try { - // Create menu - result.add(menuService.create(menu)); - } catch (Exception e) { - log.warn("Failed to migrate a menu", e); - } - }); - - return result; - } - - @NonNull - private List handleGalleries(@Nullable Object galleriesObject) { - if (!(galleriesObject instanceof List)) { - return Collections.emptyList(); - } - - List galleryObjectList = (List) galleriesObject; - - List result = new LinkedList<>(); - - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - - galleryObjectList.forEach(galleryObject -> { - if (!(galleriesObject instanceof Map)) { - return; - } - - Map galleryMap = (Map) galleryObject; - - Photo photo = new Photo(); - photo.setName(galleryMap.getOrDefault("galleryName", "").toString()); - photo.setDescription(galleryMap.getOrDefault("galleryDesc", "").toString()); - photo.setLocation(galleryMap.getOrDefault("galleryLocation", "").toString()); - photo.setThumbnail(galleryMap.getOrDefault("galleryThumbnailUrl", "").toString()); - photo.setUrl(galleryMap.getOrDefault("galleryUrl", "").toString()); - - Object galleryDate = galleryMap.get("galleryDate"); - - try { - if (galleryDate != null) { - photo.setTakeTime(dateFormat.parse(galleryDate.toString())); - } - - // Create it - result.add(photoService.create(photo)); - } catch (Exception e) { - log.warn("Failed to create a photo", e); - // Ignore this exception - } - - }); - - return result; - } - - @NonNull - private List handleLinks(@Nullable Object linksObject) { - if (!(linksObject instanceof List)) { - return Collections.emptyList(); - } - - List linkObjectList = (List) linksObject; - - List result = new LinkedList<>(); - - linkObjectList.forEach(linkObject -> { - if (!(linkObject instanceof Map)) { - return; - } - - Map linkMap = (Map) linkObject; - - Link link = new Link(); - - link.setName(linkMap.getOrDefault("linkName", "").toString()); - link.setUrl(linkMap.getOrDefault("linkUrl", "").toString()); - link.setLogo(linkMap.getOrDefault("linkPic", "").toString()); - link.setDescription(linkMap.getOrDefault("linkDesc", "").toString()); - try { - result.add(linkService.create(link)); - } catch (Exception e) { - log.warn("Failed to migrate a link", e); - } - }); - - return result; - } - - @NonNull - private List handleAttachments(@Nullable Object attachmentsObject) { - if (!(attachmentsObject instanceof List)) { - return Collections.emptyList(); - } - - List attachmentObjectList = (List) attachmentsObject; - - List result = new LinkedList<>(); - - attachmentObjectList.forEach(attachmentObject -> { - if (!(attachmentObject instanceof Map)) { - return; - } - - Map attachmentMap = (Map) attachmentObject; - // Convert to attachment param - Attachment attachment = new Attachment(); - - attachment.setName(attachmentMap.getOrDefault("attachName", "").toString()); - attachment.setPath(StringUtils.removeStart(attachmentMap.getOrDefault("attachPath", "").toString(), "/")); - attachment.setThumbPath(attachmentMap.getOrDefault("attachSmallPath", "").toString()); - attachment.setMediaType(attachmentMap.getOrDefault("attachType", "").toString()); - attachment.setSuffix(StringUtils.removeStart(attachmentMap.getOrDefault("attachSuffix", "").toString(), ".")); - attachment.setSize(0L); - - if (StringUtils.startsWith(attachment.getPath(), "/upload")) { - // Set this key - attachment.setFileKey(attachment.getPath()); - } - - // Set location - String attachLocation = attachmentMap.getOrDefault("attachLocation", "").toString(); - if (StringUtils.equalsIgnoreCase(attachLocation, "qiniu")) { - attachment.setType(AttachmentType.QINIUOSS); - } else if (StringUtils.equalsIgnoreCase(attachLocation, "upyun")) { - attachment.setType(AttachmentType.UPOSS); - } else { - attachment.setType(AttachmentType.LOCAL); - } - - try { - // Save to db - Attachment createdAttachment = attachmentService.create(attachment); - - result.add(createdAttachment); - - } catch (Exception e) { - // Ignore this exception - log.warn("Failed to migrate an attachment " + attachment.getPath(), e); - } - }); - - return result; - } - - @NonNull - private Integer getIntegerOrDefault(@Nullable String numberString, @Nullable Integer defaultNumber) { - try { - return Integer.valueOf(numberString); - } catch (Exception e) { - // Ignore this exception - return defaultNumber; - } - } - - @NonNull - private Long getLongOrDefault(@Nullable String numberString, @Nullable Long defaultNumber) { - try { - return Long.valueOf(numberString); - } catch (Exception e) { - // Ignore this exception - return defaultNumber; - } - } - - private Boolean getBooleanOrDefault(@Nullable String boolString, @Nullable Boolean defaultValue) { - if (StringUtils.equalsIgnoreCase(boolString, "0")) { - return false; - } - - if (StringUtils.equalsIgnoreCase(boolString, "1")) { - return true; - } - - if (StringUtils.equalsIgnoreCase(boolString, "true")) { - return true; - } - - if (StringUtils.equalsIgnoreCase(boolString, "false")) { - return false; - } - - return defaultValue; - } -} diff --git a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java index a49e9e5fb..5c8032240 100644 --- a/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetServiceImpl.java @@ -82,11 +82,11 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee } @Override - public Sheet createBy(Sheet sheet, Set sheetMetas, boolean autoSave) { + public Sheet createBy(Sheet sheet, Set metas, boolean autoSave) { Sheet createdSheet = createOrUpdateBy(sheet); // Create sheet meta data - List sheetMetaList = sheetMetaService.createOrUpdateByPostId(sheet.getId(), sheetMetas); + List sheetMetaList = sheetMetaService.createOrUpdateByPostId(sheet.getId(), metas); log.debug("Created sheet metas: [{}]", sheetMetaList); if (!autoSave) { @@ -109,11 +109,11 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee } @Override - public Sheet updateBy(Sheet sheet, Set sheetMetas, boolean autoSave) { + public Sheet updateBy(Sheet sheet, Set metas, boolean autoSave) { Sheet updatedSheet = createOrUpdateBy(sheet); // Create sheet meta data - List sheetMetaList = sheetMetaService.createOrUpdateByPostId(updatedSheet.getId(), sheetMetas); + List sheetMetaList = sheetMetaService.createOrUpdateByPostId(updatedSheet.getId(), metas); log.debug("Created sheet metas: [{}]", sheetMetaList); if (!autoSave) { @@ -220,8 +220,8 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee public Sheet removeById(Integer id) { // Remove sheet metas - List sheetMetas = sheetMetaService.removeByPostId(id); - log.debug("Removed sheet metas: [{}]", sheetMetas); + List metas = sheetMetaService.removeByPostId(id); + log.debug("Removed sheet metas: [{}]", metas); // Remove sheet comments List sheetComments = sheetCommentService.removeByPostId(id); @@ -264,10 +264,10 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee @Override public SheetDetailVO convertToDetailVo(Sheet sheet) { - // List sheetMetas - List sheetMetas = sheetMetaService.listBy(sheet.getId()); + // List metas + List metas = sheetMetaService.listBy(sheet.getId()); // Convert to detail vo - return convertTo(sheet, sheetMetas); + return convertTo(sheet, metas); } @Override @@ -292,17 +292,17 @@ public class SheetServiceImpl extends BasePostServiceImpl implements Shee } @NonNull - private SheetDetailVO convertTo(@NonNull Sheet sheet, List sheetMetas) { + private SheetDetailVO convertTo(@NonNull Sheet sheet, List metas) { Assert.notNull(sheet, "Sheet must not be null"); // Convert to base detail vo SheetDetailVO sheetDetailVO = new SheetDetailVO().convertFrom(sheet); - Set sheetMetaIds = ServiceUtils.fetchProperty(sheetMetas, SheetMeta::getId); + Set metaIds = ServiceUtils.fetchProperty(metas, SheetMeta::getId); // Get sheet meta ids - sheetDetailVO.setSheetMetaIds(sheetMetaIds); - sheetDetailVO.setSheetMetas(sheetMetaService.convertTo(sheetMetas)); + sheetDetailVO.setMetaIds(metaIds); + sheetDetailVO.setMetas(sheetMetaService.convertTo(metas)); if (StringUtils.isBlank(sheetDetailVO.getSummary())) { sheetDetailVO.setSummary(generateSummary(sheet.getFormatContent())); diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt old mode 100755 new mode 100644 index f5b01235f..86875d194 --- a/src/main/resources/banner.txt +++ b/src/main/resources/banner.txt @@ -4,5 +4,5 @@ ${AnsiColor.BLUE} / /_/ / __ `/ / __ \ / __ / /_/ / / /_/ / /_/ /_/\__,_/_/\____/ - ${AnsiColor.BRIGHT_YELLOW} - ::: Spring-Boot ${spring-boot.version} ::: Halo (version:${application.formatted-version}) \ No newline at end of file +${AnsiColor.BRIGHT_YELLOW} +Version: ${application.version} \ No newline at end of file