Refactor installation procedure

pull/146/head
johnniang 2019-04-30 18:14:39 +08:00
parent b3ca63b528
commit c06df35be9
1 changed files with 46 additions and 18 deletions

View File

@ -4,7 +4,7 @@ import freemarker.template.Configuration;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.lang.NonNull; import org.springframework.lang.Nullable;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import run.halo.app.cache.lock.CacheLock; import run.halo.app.cache.lock.CacheLock;
import run.halo.app.event.logger.LogEvent; import run.halo.app.event.logger.LogEvent;
import run.halo.app.exception.BadRequestException; import run.halo.app.exception.BadRequestException;
import run.halo.app.model.entity.BaseComment;
import run.halo.app.model.entity.Category; import run.halo.app.model.entity.Category;
import run.halo.app.model.entity.Post; import run.halo.app.model.entity.Post;
import run.halo.app.model.entity.User; import run.halo.app.model.entity.User;
@ -94,13 +95,13 @@ public class InstallController {
initSettings(installParam); initSettings(installParam);
// Create default user // Create default user
User user = createDefaultUser(installParam); User user = createUser(installParam);
// Create default category // Create default category
Category category = createDefaultCategory(); Category category = createDefaultCategoryIfAbsent();
// Create default post // Create default post
Post post = createDefaultPost(category); Post post = createDefaultPostIfAbsent(category);
// Create default postComment // Create default postComment
createDefaultComment(post); createDefaultComment(post);
@ -108,18 +109,20 @@ public class InstallController {
// Create default menu // Create default menu
createDefaultMenu(); createDefaultMenu();
// TODO Handle option cache
eventPublisher.publishEvent( eventPublisher.publishEvent(
new LogEvent(this, user.getId().toString(), LogType.BLOG_INITIALIZED, "博客已成功初始化") new LogEvent(this, user.getId().toString(), LogType.BLOG_INITIALIZED, "博客已成功初始化")
); );
return BaseResponse.ok("安装完成!"); return BaseResponse.ok("安装完成!");
} }
private void createDefaultMenu() { private void createDefaultMenu() {
long menuCount = menuService.count();
if (menuCount > 0) {
return;
}
MenuParam menuIndex = new MenuParam(); MenuParam menuIndex = new MenuParam();
menuIndex.setName("首页"); menuIndex.setName("首页");
@ -137,17 +140,28 @@ public class InstallController {
} }
private void createDefaultComment(Post post) { @Nullable
private BaseComment createDefaultComment(@Nullable Post post) {
if (post == null) {
return null;
}
PostCommentParam commentParam = new PostCommentParam(); PostCommentParam commentParam = new PostCommentParam();
commentParam.setAuthor("Halo Bot"); commentParam.setAuthor("Halo Bot");
commentParam.setAuthorUrl("https://github.com/halo-dev/halo"); commentParam.setAuthorUrl("https://github.com/halo-dev/halo");
commentParam.setContent("欢迎使用 Halo这是你的第一条评论。"); commentParam.setContent("欢迎使用 Halo这是你的第一条评论。");
commentParam.setEmail("i@ryanc.cc"); commentParam.setEmail("i@ryanc.cc");
commentParam.setPostId(post.getId()); commentParam.setPostId(post.getId());
postCommentService.create(commentParam.convertTo()); return postCommentService.create(commentParam.convertTo());
}
@Nullable
private Post createDefaultPostIfAbsent(@Nullable Category category) {
long publishedCount = postService.countByStatus(PostStatus.PUBLISHED);
if (publishedCount > 0) {
return null;
} }
private Post createDefaultPost(Category category) {
PostParam postParam = new PostParam(); PostParam postParam = new PostParam();
postParam.setUrl("hello-halo"); postParam.setUrl("hello-halo");
postParam.setTitle("Hello Halo"); postParam.setTitle("Hello Halo");
@ -155,14 +169,22 @@ public class InstallController {
postParam.setOriginalContent("## Hello Halo!\n" + postParam.setOriginalContent("## Hello Halo!\n" +
"\n" + "\n" +
"感谢使用 [Halo](https://github.com/halo-dev/halo) 进行创作,请删除该文章开始吧!"); "感谢使用 [Halo](https://github.com/halo-dev/halo) 进行创作,请删除该文章开始吧!");
if (category != null) {
Set<Integer> categoryIds = new HashSet<>(); Set<Integer> categoryIds = new HashSet<>();
categoryIds.add(category.getId()); categoryIds.add(category.getId());
postParam.setCategoryIds(categoryIds); postParam.setCategoryIds(categoryIds);
}
return postService.createOrUpdateBy(postParam.convertTo()); return postService.createOrUpdateBy(postParam.convertTo());
} }
@NonNull @Nullable
private Category createDefaultCategory() { private Category createDefaultCategoryIfAbsent() {
long categoryCount = categoryService.count();
if (categoryCount == 0) {
return null;
}
CategoryParam category = new CategoryParam(); CategoryParam category = new CategoryParam();
category.setName("未分类"); category.setName("未分类");
category.setSlugName("default"); category.setSlugName("default");
@ -171,8 +193,14 @@ public class InstallController {
return categoryService.create(category.convertTo()); return categoryService.create(category.convertTo());
} }
private User createDefaultUser(InstallParam installParam) { private User createUser(InstallParam installParam) {
return userService.createBy(installParam); // Get user
return userService.getCurrentUser().map(user -> {
// Update this user
installParam.update(user);
// Update user
return userService.update(user);
}).orElseGet(() -> userService.createBy(installParam));
} }
private void initSettings(InstallParam installParam) { private void initSettings(InstallParam installParam) {