Refactor cc.ryanc.halo.web.controller.api.ApiPostController(issue: #106) again

pull/137/head
johnniang 2019-03-04 00:07:11 +08:00
parent c293379b66
commit 1c17fe5a33
2 changed files with 52 additions and 35 deletions

View File

@ -2,6 +2,7 @@ package cc.ryanc.halo.utils;
import cc.ryanc.halo.model.dto.BackupDto;
import cc.ryanc.halo.model.dto.Theme;
import cc.ryanc.halo.model.enums.BlogPropertiesEnum;
import cc.ryanc.halo.model.enums.CommonParamsEnum;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.text.StrBuilder;
@ -24,6 +25,8 @@ import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
import static cc.ryanc.halo.model.dto.HaloConst.OPTIONS;
/**
* <pre>
*
@ -35,6 +38,21 @@ import java.util.*;
@Slf4j
public class HaloUtils {
private final static int DEFAULT_PAGE_SIZE = 10;
/**
* Gets default page size.
*
* @return default page size
*/
public static int getDefaultPageSize() {
if (StrUtil.isNotBlank(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
return Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
}
return DEFAULT_PAGE_SIZE;
}
/**
*
*
@ -48,7 +66,7 @@ public class HaloUtils {
final File srcPath = new File(srcPathStr.toString());
final File[] files = srcPath.listFiles();
final List<BackupDto> backupDtos = new ArrayList<>();
BackupDto backupDto = null;
BackupDto backupDto;
// 遍历文件
if (null != files) {
for (File file : files) {
@ -107,8 +125,7 @@ public class HaloUtils {
BasicFileAttributes attr;
try {
attr = basicview.readAttributes();
final Date createDate = new Date(attr.creationTime().toMillis());
return createDate;
return new Date(attr.creationTime().toMillis());
} catch (Exception e) {
e.printStackTrace();
}
@ -147,7 +164,7 @@ public class HaloUtils {
final File themesPath = new File(basePath.getAbsolutePath(), "templates/themes");
final File[] files = themesPath.listFiles();
if (null != files) {
Theme theme = null;
Theme theme;
for (File file : files) {
if (file.isDirectory()) {
if (StrUtil.equals("__MACOSX", file.getName())) {

View File

@ -5,7 +5,6 @@ import cc.ryanc.halo.model.domain.Category;
import cc.ryanc.halo.model.domain.Post;
import cc.ryanc.halo.model.domain.Tag;
import cc.ryanc.halo.model.dto.JsonResult;
import cc.ryanc.halo.model.enums.BlogPropertiesEnum;
import cc.ryanc.halo.model.enums.PostStatusEnum;
import cc.ryanc.halo.model.enums.PostTypeEnum;
import cc.ryanc.halo.service.CategoryService;
@ -19,12 +18,9 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.SortDefault;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import static cc.ryanc.halo.model.dto.HaloConst.OPTIONS;
import static cc.ryanc.halo.utils.HaloUtils.getDefaultPageSize;
import static org.springframework.data.domain.Sort.Direction.DESC;
/**
@ -114,14 +110,27 @@ public class ApiPostController {
* @return JsonResult
*/
@GetMapping(value = "/page/{page}")
public JsonResult posts(@PathVariable(value = "page") Integer page, @SortDefault(sort = "postDate", direction = DESC) Sort sort) {
int size = 10;
if (StrUtil.isNotBlank(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
public JsonResult posts(@PathVariable(value = "page") Integer page,
@SortDefault(sort = "postDate", direction = DESC) Sort sort,
@RequestParam(value = "cateUrl", required = false) String cateUrl,
@RequestParam(value = "tagUrl", required = false) String tagUrl) {
// Build page info
Pageable pageable = PageRequest.of(page - 1, getDefaultPageSize(), sort);
Page<Post> postPage;
if (StrUtil.isNotBlank(cateUrl)) {
// Query by category url
postPage = postService.findPostByCategories(categoryService.findByCateUrl(cateUrl), pageable);
} else if (StrUtil.isNotBlank(tagUrl)) {
// Query by tag url
postPage = postService.findPostsByTags(tagService.findByTagUrl(tagUrl), pageable);
} else {
// Query default
postPage = postService.findPostByStatus(PostStatusEnum.PUBLISHED.getCode(), PostTypeEnum.POST_TYPE_POST.getDesc(), pageable);
}
final Pageable pageable = PageRequest.of(page - 1, size, sort);
final Page<Post> posts = postService.findPostByStatus(PostStatusEnum.PUBLISHED.getCode(), PostTypeEnum.POST_TYPE_POST.getDesc(), pageable);
return JsonResult.ok(HttpStatus.OK.getReasonPhrase(), posts);
return JsonResult.ok(HttpStatus.OK.getReasonPhrase(), postPage);
}
/**
@ -182,20 +191,15 @@ public class ApiPostController {
* @return String
*/
@GetMapping(value = "/categories/{cateUrl}/{page}")
@Deprecated
public JsonResult categories(@PathVariable("cateUrl") String cateUrl,
@PathVariable("page") Integer page,
@SortDefault(sort = "postDate", direction = DESC) Sort sort) {
final Category category = categoryService.findByCateUrl(cateUrl);
int size = 10;
if (StrUtil.isNotBlank(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
}
final Pageable pageable = PageRequest.of(page - 1, size, sort);
final Pageable pageable = PageRequest.of(page - 1, getDefaultPageSize(), sort);
final Page<Post> posts = postService.findPostByCategories(category, pageable);
if (null == posts) {
return new JsonResult(HttpStatus.NO_CONTENT.value(), HttpStatus.NO_CONTENT.getReasonPhrase());
}
return new JsonResult(HttpStatus.OK.value(), HttpStatus.OK.getReasonPhrase(), posts);
return JsonResult.ok(HttpStatus.OK.getReasonPhrase(), posts);
}
@ -207,19 +211,15 @@ public class ApiPostController {
* @return String
*/
@GetMapping(value = "/tags/{tagUrl}/{page}")
@Deprecated
public JsonResult tags(@PathVariable("tagUrl") String tagUrl,
@PathVariable("page") Integer page,
@SortDefault(sort = "postDate", direction = DESC) Sort sort) {
final Tag tag = tagService.findByTagUrl(tagUrl);
int size = 10;
if (StrUtil.isNotBlank(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()))) {
size = Integer.parseInt(OPTIONS.get(BlogPropertiesEnum.INDEX_POSTS.getProp()));
}
final Pageable pageable = PageRequest.of(page - 1, size, sort);
final Pageable pageable = PageRequest.of(page - 1, getDefaultPageSize(), sort);
final Page<Post> posts = postService.findPostsByTags(tag, pageable);
if (null == posts) {
return new JsonResult(HttpStatus.NO_CONTENT.value(), HttpStatus.NO_CONTENT.getReasonPhrase());
}
return new JsonResult(HttpStatus.OK.value(), HttpStatus.OK.getReasonPhrase(), posts);
return JsonResult.ok(HttpStatus.OK.getReasonPhrase(), posts);
}
}