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.

133 lines
5.6 KiB

package com.youlai.boot.mini.controller;
import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result;
import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.mini.model.dto.*;
import com.youlai.boot.mini.model.form.AdoptionDiaryForm;
import com.youlai.boot.mini.model.query.OwnAdoptionDiaryQuery;
import com.youlai.boot.mini.model.vo.AdoptionDiaryVO;
import com.youlai.boot.mini.model.vo.SaveStrayAnimalVO;
import com.youlai.boot.mini.model.vo.StrayAnimalDetailsVO;
import com.youlai.boot.mini.service.AdoptionDiaryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@Tag(name = "领养日记的相关接口")
@RestController
@RequestMapping("/api/v1/mini/adoptionDiary")
@RequiredArgsConstructor
public class AdoptionDiaryController {
private final AdoptionDiaryService adoptionDiaryService;
@Operation(summary = "添加领养日记时先保存文件", operationId = "DiarySaveFile")
@PostMapping(value = "save/file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.INSERT)
public Result<?> saveFile(
@RequestPart(name = "images", required = false) List<MultipartFile> images,
@RequestPart(name = "videos", required = false) List<MultipartFile> videos
) {
List<String> urlList = adoptionDiaryService.saveFile(images, videos);
return Result.success(urlList);
}
@Operation(summary = "添加领养日记信息")
@PostMapping(value = "save")
@RepeatSubmit
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.INSERT)
public Result<?> saveAdoptionDiary(
@Valid @RequestBody AdoptionDiaryForm formData
) {
SaveStrayAnimalVO vo = adoptionDiaryService.saveAdoptionDiary(formData);
return Result.success(vo);
}
@Operation(summary = "编辑领养日记信息(不包含图片/视频媒体资源)")
@PostMapping(value = "/update/{diaryUuid}")
@RepeatSubmit
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> updateAdoptionDiary(
@PathVariable String diaryUuid,
@Validated @RequestBody AdoptionDiaryForm formData
) {
adoptionDiaryService.updateAdoptionDiary(diaryUuid, formData);
return Result.success();
}
@Operation(summary = "编辑领养日记时,删除领养日记媒体资源")
@PostMapping(value = "/update/deleteMediaSource")
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> deleteMediaSource(
@RequestBody @Validated DeleteAdoptionDiaryMediaDTO deleteAdoptionDiaryMediaDTO
){
adoptionDiaryService.deleteMediaSource(deleteAdoptionDiaryMediaDTO);
return Result.success();
}
@Operation(summary = "编辑领养日记时,添加领养日记媒体资源", description = "比如补充图片、补充视频")
@PostMapping(value = "/update/saveMediaSource/{diaryUuid}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RepeatSubmit
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> saveMediaSource(
@PathVariable String diaryUuid,
@RequestPart(name = "images", required = false) List<MultipartFile> images,
@RequestPart(name = "videos", required = false) List<MultipartFile> videos
) {
adoptionDiaryService.saveMediaSource(diaryUuid, images, videos);
return Result.success();
}
@Operation(summary = "编辑领养日记可见范围")
@PostMapping(value = "/update/visibility/{diaryUuid}")
@RepeatSubmit(expire = 1)
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> updateVisibility(
@PathVariable String diaryUuid,
@RequestBody @Validated EditVisibilityDTO editVisibilityDTO
) {
adoptionDiaryService.updateVisibility(diaryUuid, editVisibilityDTO);
return Result.success();
}
@Operation(summary = "删除领养日记")
@PostMapping(value = "/delete")
@RepeatSubmit
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.DELETE)
public Result<?> delete(
@RequestBody @Validated DeleteAdoptionDiaryDTO deleteAdoptionDiaryDTO
) {
adoptionDiaryService.delete(deleteAdoptionDiaryDTO);
return Result.success();
}
@Operation(summary = "获取自己创建的领养日记列表")
@GetMapping(value = "/getSelfCreatedPage")
public PageResult<AdoptionDiaryVO> getSelfCreatedPage(
OwnAdoptionDiaryQuery queryParams
) {
return PageResult.success(adoptionDiaryService.getSelfCreatedPage(queryParams));
}
@Operation(summary = "获取领养日记详情")
@RequestMapping(value = "/getDetails/{animalUuid}", method = RequestMethod.GET)
public Result<StrayAnimalDetailsVO> getDetails(
@PathVariable String animalUuid){
return Result.success(adoptionDiaryService.getDetails(animalUuid, SecurityUtils.getUserId()));
}
}