14 changed files with 423 additions and 1 deletions
@ -0,0 +1,132 @@ |
|||||
|
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())); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
package com.youlai.boot.mini.mapper; |
||||
|
|
||||
|
import com.youlai.boot.mini.model.entity.MiniAdoptionDiary; |
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
|
||||
|
/** |
||||
|
* 领养日记表 Mapper 接口 |
||||
|
* |
||||
|
* @author jwy |
||||
|
* @since |
||||
|
*/ |
||||
|
public interface MiniAdoptionDiaryMapper extends BaseMapper<MiniAdoptionDiary> { |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
package com.youlai.boot.mini.model.dto; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class DeleteAdoptionDiaryDTO { |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
package com.youlai.boot.mini.model.dto; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class DeleteAdoptionDiaryMediaDTO { |
||||
|
} |
||||
@ -0,0 +1,98 @@ |
|||||
|
package com.youlai.boot.mini.model.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||
|
import lombok.Getter; |
||||
|
import lombok.Setter; |
||||
|
import lombok.ToString; |
||||
|
import lombok.experimental.Accessors; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
|
||||
|
@Getter |
||||
|
@Setter |
||||
|
@ToString |
||||
|
@Accessors(chain = true) |
||||
|
@TableName("mini_adoption_diary") |
||||
|
@Schema(description = "领养日记表") |
||||
|
public class MiniAdoptionDiary implements Serializable { |
||||
|
|
||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||
|
@Schema(description = "笔记ID") |
||||
|
private Long id; |
||||
|
|
||||
|
|
||||
|
@TableField("uuid") |
||||
|
@Schema(description = "uuid唯一标识,前后端用这个进行数据交互") |
||||
|
private String uuid; |
||||
|
|
||||
|
@TableField("stray_animal_id") |
||||
|
@Schema(description = "关联的动物ID") |
||||
|
private Long strayAnimalId; |
||||
|
|
||||
|
@TableField("mini_user_id") |
||||
|
@Schema(description = "作者用户ID") |
||||
|
private Long miniUserId; |
||||
|
|
||||
|
@TableField("title") |
||||
|
@Schema(description = "笔记标题") |
||||
|
private String title; |
||||
|
|
||||
|
@TableField("content") |
||||
|
@Schema(description = "笔记正文内容") |
||||
|
private String content; |
||||
|
|
||||
|
@TableField("visibility") |
||||
|
@Schema(description = "可见范围:public-公开,private-仅自己可见,friends-仅好友") |
||||
|
private String visibility; |
||||
|
|
||||
|
@TableField("view_count") |
||||
|
@Schema(description = "浏览数") |
||||
|
private Integer viewCount; |
||||
|
|
||||
|
@TableField("like_count") |
||||
|
@Schema(description = "点赞数") |
||||
|
private Integer likeCount; |
||||
|
|
||||
|
@TableField("comment_count") |
||||
|
@Schema(description = "评论数") |
||||
|
private Integer commentCount; |
||||
|
|
||||
|
@TableField("collect_count") |
||||
|
@Schema(description = "收藏数") |
||||
|
private Integer collectCount; |
||||
|
|
||||
|
@TableField("create_time") |
||||
|
@Schema(description = "创建时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||
|
private Date createTime; |
||||
|
|
||||
|
@TableField("create_timestamp") |
||||
|
@Schema(description = "创建时间毫秒级时间戳") |
||||
|
private Long createTimestamp; |
||||
|
|
||||
|
@TableField("create_by") |
||||
|
@Schema(description = "创建人ID") |
||||
|
private Long createBy; |
||||
|
|
||||
|
@TableField("update_time") |
||||
|
@Schema(description = "更新时间") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||
|
private Date updateTime; |
||||
|
|
||||
|
@TableField("update_timestamp") |
||||
|
@Schema(description = "更新时间毫秒级时间戳") |
||||
|
private Long updateTimestamp; |
||||
|
|
||||
|
@TableField("update_by") |
||||
|
@Schema(description = "修改人ID") |
||||
|
private Long updateBy; |
||||
|
|
||||
|
@TableField("is_deleted") |
||||
|
@Schema(description = "逻辑删除标识(0-未删除 1-已删除)") |
||||
|
private Boolean deleted; |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
package com.youlai.boot.mini.model.form; |
||||
|
|
||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
@Schema(description = "评论点赞请求参数") |
||||
|
public class AdoptionDiaryForm { |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
package com.youlai.boot.mini.model.query; |
||||
|
|
||||
|
import com.youlai.boot.common.base.BaseQuery; |
||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@Data |
||||
|
public class AdoptionDiaryQuery extends BaseQuery { |
||||
|
|
||||
|
@Schema(description = "起始登记时间,毫秒级时间戳", example = "1776426078459") |
||||
|
private Long createStartTimestamp; |
||||
|
|
||||
|
@Schema(description = "截止登记时间,毫秒级时间戳", example = "1776426078459") |
||||
|
private Long createEndTimestamp; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
package com.youlai.boot.mini.model.query; |
||||
|
|
||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
@EqualsAndHashCode(callSuper = true) |
||||
|
@Data |
||||
|
public class OwnAdoptionDiaryQuery extends AdoptionDiaryQuery{ |
||||
|
|
||||
|
@Schema(description = "登录用户ID", example = "1", hidden = true) |
||||
|
private Long miniUserId; |
||||
|
|
||||
|
@Schema(description = "创建领养日记的用户ID", example = "1", hidden = true) |
||||
|
private Long creatorId; |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
package com.youlai.boot.mini.model.vo; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
@Data |
||||
|
public class AdoptionDiaryVO { |
||||
|
} |
||||
@ -0,0 +1,38 @@ |
|||||
|
package com.youlai.boot.mini.service; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
import com.youlai.boot.mini.model.dto.DeleteAdoptionDiaryDTO; |
||||
|
import com.youlai.boot.mini.model.dto.DeleteAdoptionDiaryMediaDTO; |
||||
|
import com.youlai.boot.mini.model.dto.EditVisibilityDTO; |
||||
|
import com.youlai.boot.mini.model.entity.MiniAdoptionDiary; |
||||
|
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 jakarta.validation.Valid; |
||||
|
import org.springframework.web.multipart.MultipartFile; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface AdoptionDiaryService extends IService<MiniAdoptionDiary> { |
||||
|
|
||||
|
List<String> saveFile(List<MultipartFile> images, List<MultipartFile> videos); |
||||
|
|
||||
|
SaveStrayAnimalVO saveAdoptionDiary(@Valid AdoptionDiaryForm formData); |
||||
|
|
||||
|
void updateAdoptionDiary(String diaryUuid, AdoptionDiaryForm formData); |
||||
|
|
||||
|
void deleteMediaSource(DeleteAdoptionDiaryMediaDTO deleteAdoptionDiaryMediaDTO); |
||||
|
|
||||
|
void saveMediaSource(String diaryUuid, List<MultipartFile> images, List<MultipartFile> videos); |
||||
|
|
||||
|
void updateVisibility(String diaryUuid, EditVisibilityDTO editVisibilityDTO); |
||||
|
|
||||
|
void delete(DeleteAdoptionDiaryDTO deleteAdoptionDiaryDTO); |
||||
|
|
||||
|
List<AdoptionDiaryVO> getSelfCreatedPage(OwnAdoptionDiaryQuery queryParams); |
||||
|
|
||||
|
StrayAnimalDetailsVO getDetails(String animalUuid, Long userId); |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,64 @@ |
|||||
|
package com.youlai.boot.mini.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
|
import com.youlai.boot.mini.mapper.MiniAdoptionDiaryMapper; |
||||
|
import com.youlai.boot.mini.model.dto.DeleteAdoptionDiaryDTO; |
||||
|
import com.youlai.boot.mini.model.dto.DeleteAdoptionDiaryMediaDTO; |
||||
|
import com.youlai.boot.mini.model.dto.EditVisibilityDTO; |
||||
|
import com.youlai.boot.mini.model.entity.MiniAdoptionDiary; |
||||
|
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.service.AdoptionDiaryService; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.web.multipart.MultipartFile; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Service |
||||
|
public class AdoptionDiaryServiceImpl extends ServiceImpl<MiniAdoptionDiaryMapper, MiniAdoptionDiary> implements AdoptionDiaryService { |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public List<String> saveFile(List<MultipartFile> images, List<MultipartFile> videos) { |
||||
|
return List.of(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public SaveStrayAnimalVO saveAdoptionDiary(AdoptionDiaryForm formData) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void updateAdoptionDiary(String diaryUuid, AdoptionDiaryForm formData) { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void deleteMediaSource(DeleteAdoptionDiaryMediaDTO deleteAdoptionDiaryMediaDTO) { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void saveMediaSource(String diaryUuid, List<MultipartFile> images, List<MultipartFile> videos) { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void updateVisibility(String diaryUuid, EditVisibilityDTO editVisibilityDTO) { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void delete(DeleteAdoptionDiaryDTO deleteAdoptionDiaryDTO) { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<AdoptionDiaryVO> getSelfCreatedPage(OwnAdoptionDiaryQuery queryParams) { |
||||
|
return List.of(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE mapper |
||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
|
|
||||
|
<mapper namespace="com.youlai.boot.mini.mapper.MiniAdoptionDiaryMapper"> |
||||
|
|
||||
|
|
||||
|
</mapper> |
||||
Loading…
Reference in new issue