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 savePhotoAlbumCover(MultipartFile file) { return ResultVO.ok(uploadStrategyContext.executeUploadStrategy(file, FilePathEnum.PHOTO.getPath())); } @ApiOperation(value = "根据相册id获取照片列表") @GetMapping("/admin/photos") public ResultVO> 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 photoIds) { photoService.deletePhotos(photoIds); return ResultVO.ok(); } @ApiOperation(value = "根据相册id查看照片列表")//前端展示 @GetMapping("/albums/{albumId}/photos") public ResultVO listPhotosByAlbumId(@PathVariable("albumId") Integer albumId) { //获取对应相册的照片列表,图片展示信息,比如照片URL、名称等 return ResultVO.ok(photoService.listPhotosByAlbumId(albumId)); } }