diff --git a/src/main/java/run/halo/app/controller/admin/api/PostController.java b/src/main/java/run/halo/app/controller/admin/api/PostController.java index f6904c4ec..665086546 100644 --- a/src/main/java/run/halo/app/controller/admin/api/PostController.java +++ b/src/main/java/run/halo/app/controller/admin/api/PostController.java @@ -15,6 +15,7 @@ import run.halo.app.model.enums.PostStatus; import run.halo.app.model.params.PostContentParam; import run.halo.app.model.params.PostParam; import run.halo.app.model.params.PostQuery; +import run.halo.app.model.params.PostStatusUpdateParam; import run.halo.app.model.vo.PostDetailVO; import run.halo.app.service.OptionService; import run.halo.app.service.PostService; @@ -125,6 +126,12 @@ public class PostController { return new BasePostMinimalDTO().convertFrom(post); } + @PutMapping("status") + @ApiOperation("Update post status in batch") + public List updateStatusInBatch(@RequestBody PostStatusUpdateParam param) { + return postService.updateStatusByIds(param.getIds(), param.getStatus()); + } + @PutMapping("{postId:\\d+}/status/draft/content") @ApiOperation("Update draft") public BasePostDetailDTO updateDraftBy( diff --git a/src/main/java/run/halo/app/model/params/PostStatusUpdateParam.java b/src/main/java/run/halo/app/model/params/PostStatusUpdateParam.java new file mode 100644 index 000000000..e1a3004be --- /dev/null +++ b/src/main/java/run/halo/app/model/params/PostStatusUpdateParam.java @@ -0,0 +1,20 @@ +package run.halo.app.model.params; + +import lombok.Data; +import run.halo.app.model.enums.PostStatus; + +import java.util.List; + +/** + * Post status update param. + * + * @author ryanwang + * @date 2019-12-12 + */ +@Data +public class PostStatusUpdateParam { + + private PostStatus status; + + private List ids; +} diff --git a/src/main/java/run/halo/app/service/base/BasePostService.java b/src/main/java/run/halo/app/service/base/BasePostService.java index 24f00e263..6c737188f 100644 --- a/src/main/java/run/halo/app/service/base/BasePostService.java +++ b/src/main/java/run/halo/app/service/base/BasePostService.java @@ -8,7 +8,6 @@ import run.halo.app.model.dto.post.BasePostDetailDTO; import run.halo.app.model.dto.post.BasePostMinimalDTO; import run.halo.app.model.dto.post.BasePostSimpleDTO; import run.halo.app.model.entity.BasePost; -import run.halo.app.model.entity.Post; import run.halo.app.model.enums.PostStatus; import java.util.Date; @@ -236,4 +235,14 @@ public interface BasePostService extends CrudService updateStatusByIds(@NonNull List ids, @NonNull PostStatus status); } diff --git a/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java b/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java index e083194c3..3cd3afd37 100644 --- a/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BasePostServiceImpl.java @@ -380,6 +380,17 @@ public abstract class BasePostServiceImpl extends Abstrac return post; } + @Override + @Transactional + public List updateStatusByIds(List ids, PostStatus status) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return ids.stream().map(id -> { + return updateStatus(status, id); + }).collect(Collectors.toList()); + } + @Override public POST create(POST post) { // Check title