You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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));
}
}