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.
dsl3/controller/PhotoAlbumController.java

94 lines
4.3 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.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含义是相册封面必填类型为MultipartFileSpring的文件上传类型
@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());
}
}