|
|
|
|
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.form.DiaryLikeForm;
|
|
|
|
|
import com.youlai.boot.mini.model.form.NoteLikeForm;
|
|
|
|
|
import com.youlai.boot.mini.model.query.OwnAdoptionDiaryQuery;
|
|
|
|
|
import com.youlai.boot.mini.model.query.OwnStrayAnimalQuery;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.AdoptionDiaryVO;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.AdoptionDiaryDetailsVO;
|
|
|
|
|
import com.youlai.boot.mini.model.vo.StrayAnimalShortVO;
|
|
|
|
|
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.security.access.prepost.PreAuthorize;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
@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
|
|
|
|
|
) {
|
|
|
|
|
String diaryUuid = adoptionDiaryService.saveAdoptionDiary(formData);
|
|
|
|
|
return Result.success(diaryUuid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@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/{diaryUuid}", method = RequestMethod.GET)
|
|
|
|
|
public Result<AdoptionDiaryDetailsVO> getDetails(
|
|
|
|
|
@PathVariable String diaryUuid){
|
|
|
|
|
return Result.success(adoptionDiaryService.getDetails(diaryUuid, SecurityUtils.getUserId()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "获取某个用户创建的领养日记列表")
|
|
|
|
|
@GetMapping(value = "/getOthersCreatedPage/{authorUuid}")
|
|
|
|
|
public PageResult<AdoptionDiaryVO> getOthersCreatedPage(
|
|
|
|
|
@PathVariable String authorUuid,
|
|
|
|
|
OwnAdoptionDiaryQuery queryParams
|
|
|
|
|
) {
|
|
|
|
|
return PageResult.success(adoptionDiaryService.getOthersCreatedPage(authorUuid, queryParams));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "领养日记点赞/取消点赞接口")
|
|
|
|
|
@PostMapping(value = "/diary/like/toggle")
|
|
|
|
|
@PreAuthorize("isAuthenticated()")
|
|
|
|
|
@Log(module = LogModuleEnum.ADOPTION_DIARY_INFO, value = ActionTypeEnum.UPDATE)
|
|
|
|
|
public Result<Map<String, Object>> toggleDiaryLike(
|
|
|
|
|
@Valid @RequestBody DiaryLikeForm form
|
|
|
|
|
) {
|
|
|
|
|
Long userId = SecurityUtils.getUserId();
|
|
|
|
|
Map<String, Object> result = adoptionDiaryService.toggleDiaryLike(form, userId);
|
|
|
|
|
return Result.success(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|