|
|
package com.aurora.controller;
|
|
|
|
|
|
import com.aurora.annotation.OptLog;
|
|
|
import com.aurora.enums.FilePathEnum;
|
|
|
import com.aurora.model.dto.PageResultDTO;
|
|
|
import com.aurora.model.dto.PhotoAdminDTO;
|
|
|
import com.aurora.model.dto.PhotoDTO;
|
|
|
import com.aurora.service.PhotoService;
|
|
|
import com.aurora.model.vo.*;
|
|
|
import com.aurora.strategy.context.UploadStrategyContext;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static com.aurora.constant.OptTypeConstant.*;
|
|
|
|
|
|
@Api(tags = "照片模块")
|
|
|
@RestController
|
|
|
public class PhotoController {
|
|
|
|
|
|
@Autowired
|
|
|
private PhotoService photoService;//照片业务逻辑
|
|
|
|
|
|
@Autowired
|
|
|
private UploadStrategyContext uploadStrategyContext;//文件上传服务
|
|
|
|
|
|
@OptLog(optType = UPLOAD)
|
|
|
@ApiOperation(value = "上传照片")
|
|
|
@ApiImplicitParam(name = "file", value = "照片", required = true, dataType = "MultipartFile")
|
|
|
@PostMapping("/admin/photos/upload")
|
|
|
public ResultVO<String> savePhotoAlbumCover(MultipartFile file) {
|
|
|
return ResultVO.ok(uploadStrategyContext.executeUploadStrategy(file, FilePathEnum.PHOTO.getPath()));
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "根据相册id获取照片列表")
|
|
|
@GetMapping("/admin/photos")
|
|
|
public ResultVO<PageResultDTO<PhotoAdminDTO>> listPhotos(ConditionVO conditionVO) {
|
|
|
return ResultVO.ok(photoService.listPhotos(conditionVO));
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = UPDATE)//修改类型
|
|
|
@ApiOperation(value = "更新照片信息")
|
|
|
@PutMapping("/admin/photos")
|
|
|
public ResultVO<?> updatePhoto(@Valid @RequestBody PhotoInfoVO photoInfoVO) {
|
|
|
photoService.updatePhoto(photoInfoVO);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = SAVE)
|
|
|
@ApiOperation(value = "保存照片")
|
|
|
@PostMapping("/admin/photos")
|
|
|
public ResultVO<?> savePhotos(@Valid @RequestBody PhotoVO photoVO) {
|
|
|
photoService.savePhotos(photoVO);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = UPDATE)
|
|
|
@ApiOperation(value = "移动照片相册")//将照片从一个相册移到另一个相册
|
|
|
@PutMapping("/admin/photos/album")
|
|
|
public ResultVO<?> updatePhotosAlbum(@Valid @RequestBody PhotoVO photoVO) {
|
|
|
//PhotoVO photoVO:封装照片移动的参数,包含照片ID列表、目标相册ID等信息,且会被@Valid检验:检测目标相册ID是否存在
|
|
|
photoService.updatePhotosAlbum(photoVO);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = UPDATE)
|
|
|
@ApiOperation(value = "更新照片删除状态")//通常为软删除
|
|
|
@PutMapping("/admin/photos/delete")
|
|
|
public ResultVO<?> updatePhotoDelete(@Valid @RequestBody DeleteVO deleteVO) {
|
|
|
//DeleteVO deleteVO:封装照片删除状态更新的参数,包含照片ID列表、目标删除状态等信息,且会被@Valid检验
|
|
|
photoService.updatePhotoDelete(deleteVO);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = DELETE)
|
|
|
@ApiOperation(value = "删除照片")//物理删除或彻底删除
|
|
|
@DeleteMapping("/admin/photos")
|
|
|
public ResultVO<?> deletePhotos(@RequestBody List<Integer> photoIds) {
|
|
|
photoService.deletePhotos(photoIds);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "根据相册id查看照片列表")//前端展示
|
|
|
@GetMapping("/albums/{albumId}/photos")
|
|
|
public ResultVO<PhotoDTO> listPhotosByAlbumId(@PathVariable("albumId") Integer albumId) {
|
|
|
//获取对应相册的照片列表,图片展示信息,比如照片URL、名称等
|
|
|
return ResultVO.ok(photoService.listPhotosByAlbumId(albumId));
|
|
|
}
|
|
|
|
|
|
}
|