diff --git a/src/main/java/run/halo/app/controller/admin/api/PhotoController.java b/src/main/java/run/halo/app/controller/admin/api/PhotoController.java index 66ec9b144..2a0fae9ae 100644 --- a/src/main/java/run/halo/app/controller/admin/api/PhotoController.java +++ b/src/main/java/run/halo/app/controller/admin/api/PhotoController.java @@ -4,6 +4,7 @@ import static org.springframework.data.domain.Sort.Direction.DESC; import io.swagger.annotations.ApiOperation; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import javax.validation.Valid; import org.springframework.data.domain.Page; @@ -112,6 +113,22 @@ public class PhotoController { return new PhotoDTO().convertFrom(photoService.update(photo)); } + @PutMapping("/batch") + @ApiOperation("Updates photo in batch") + public List updateBatchBy(@RequestBody List<@Valid PhotoParam> photoParams) { + List photosToUpdate = photoParams.stream() + .filter(photoParam -> Objects.nonNull(photoParam.getId())) + .map(photoParam -> { + Photo photoToUpdate = photoService.getById(photoParam.getId()); + photoParam.update(photoToUpdate); + return photoToUpdate; + }) + .collect(Collectors.toList()); + return photoService.updateInBatch(photosToUpdate).stream() + .map(photo -> (PhotoDTO) new PhotoDTO().convertFrom(photo)) + .collect(Collectors.toList()); + } + @PutMapping("{photoId:\\d+}/likes") @ApiOperation("Likes a photo") @CacheLock(autoDelete = false, traceRequest = true) diff --git a/src/main/java/run/halo/app/model/params/PhotoParam.java b/src/main/java/run/halo/app/model/params/PhotoParam.java index 73e6d46f1..3b82d2d4d 100644 --- a/src/main/java/run/halo/app/model/params/PhotoParam.java +++ b/src/main/java/run/halo/app/model/params/PhotoParam.java @@ -15,6 +15,8 @@ import run.halo.app.model.entity.Photo; @Data public class PhotoParam implements InputConverter { + private Integer id; + @NotBlank(message = "照片名称不能为空") private String name;