|
|
package com.aurora.controller;
|
|
|
|
|
|
import com.aurora.annotation.OptLog;
|
|
|
import com.aurora.model.dto.PhotoAlbumAdminDTO;
|
|
|
import com.aurora.model.dto.PhotoAlbumDTO;
|
|
|
import com.aurora.enums.FilePathEnum;
|
|
|
import com.aurora.model.vo.ResultVO;
|
|
|
import com.aurora.service.PhotoAlbumService;
|
|
|
import com.aurora.strategy.context.UploadStrategyContext;
|
|
|
import com.aurora.model.vo.ConditionVO;
|
|
|
import com.aurora.model.dto.PageResultDTO;
|
|
|
import com.aurora.model.vo.PhotoAlbumVO;
|
|
|
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 PhotoAlbumController {
|
|
|
@Autowired
|
|
|
private UploadStrategyContext uploadStrategyContext;//用于文件上传
|
|
|
|
|
|
@Autowired
|
|
|
private PhotoAlbumService photoAlbumService;//相册业务逻辑
|
|
|
|
|
|
|
|
|
@OptLog(optType = UPLOAD)
|
|
|
@ApiOperation(value = "上传相册封面")
|
|
|
@ApiImplicitParam(name = "file", value = "相册封面", required = true, dataType = "MultipartFile")
|
|
|
//Swagger注解,说明接口的参数信息:参数名file,含义是相册封面,必填,类型为MultipartFile(Spring的文件上传类型)
|
|
|
@PostMapping("/admin/photos/albums/upload")
|
|
|
//返回值ResultVO<String>:返回上传后封面图片的存储路径(字符串格式)
|
|
|
public ResultVO<String> savePhotoAlbumCover(MultipartFile file) {
|
|
|
//MultipartFile file:接收前端上传的相册封面文件
|
|
|
return ResultVO.ok(uploadStrategyContext.executeUploadStrategy(file, FilePathEnum.PHOTO.getPath()));
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = SAVE_OR_UPDATE)
|
|
|
@ApiOperation(value = "保存或更新相册")
|
|
|
@PostMapping("/admin/photos/albums")
|
|
|
public ResultVO<?> saveOrUpdatePhotoAlbum(@Valid @RequestBody PhotoAlbumVO photoAlbumVO) {
|
|
|
//PhotoAlbumVO photoAlbumVO:封装相册保存、更新的参数,包含相册名称、封面路径、描述等信息,且被@Valid校验
|
|
|
photoAlbumService.saveOrUpdatePhotoAlbum(photoAlbumVO);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "查看后台相册列表")//分页
|
|
|
@GetMapping("/admin/photos/albums")
|
|
|
public ResultVO<PageResultDTO<PhotoAlbumAdminDTO>> listPhotoAlbumBacks(ConditionVO conditionVO) {
|
|
|
//ConditionVO conditionVO:封装相册的查询条件(比如相册名称关键词、创建时间范围等)
|
|
|
return ResultVO.ok(photoAlbumService.listPhotoAlbumsAdmin(conditionVO));
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "获取后台相册列表信息")//获取后台所有相册的基础信息列表(相比于分页列表,更偏向简洁的信息集合)
|
|
|
@GetMapping("/admin/photos/albums/info")
|
|
|
public ResultVO<List<PhotoAlbumDTO>> listPhotoAlbumBackInfos() {
|
|
|
return ResultVO.ok(photoAlbumService.listPhotoAlbumInfosAdmin());
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "根据id获取后台相册信息")
|
|
|
@ApiImplicitParam(name = "albumId", value = "相册id", required = true, dataType = "Integer")
|
|
|
@GetMapping("/admin/photos/albums/{albumId}/info")
|
|
|
//返回值ResultVO<PhotoAlbumAdminDTO>:返回指定ID的相册详细信息
|
|
|
//PhotoAlbumAdminDTO是后台相册详细数据传输对象
|
|
|
public ResultVO<PhotoAlbumAdminDTO> getPhotoAlbumBackById(@PathVariable("albumId") Integer albumId) {
|
|
|
return ResultVO.ok(photoAlbumService.getPhotoAlbumByIdAdmin(albumId));
|
|
|
}
|
|
|
|
|
|
@OptLog(optType = DELETE)
|
|
|
@ApiOperation(value = "根据id删除相册")
|
|
|
@ApiImplicitParam(name = "albumId", value = "相册id", required = true, dataType = "Integer")
|
|
|
@DeleteMapping("/admin/photos/albums/{albumId}")
|
|
|
public ResultVO<?> deletePhotoAlbumById(@PathVariable("albumId") Integer albumId) {
|
|
|
photoAlbumService.deletePhotoAlbumById(albumId);
|
|
|
return ResultVO.ok();
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "获取相册列表")//获取前端展示用的相册列表,普通用户也可调用
|
|
|
@GetMapping("/photos/albums")
|
|
|
public ResultVO<List<PhotoAlbumDTO>> listPhotoAlbums() {
|
|
|
return ResultVO.ok(photoAlbumService.listPhotoAlbums());
|
|
|
}
|
|
|
|
|
|
}
|