Browse Source

增加领养日记模块

glx_phase2
glx 1 week ago
parent
commit
8659fbece5
  1. 1
      src/main/java/com/youlai/boot/codegen/freemarker/MyBatisPlusGenerator.java
  2. 3
      src/main/java/com/youlai/boot/common/enums/LogModuleEnum.java
  3. 132
      src/main/java/com/youlai/boot/mini/controller/AdoptionDiaryController.java
  4. 14
      src/main/java/com/youlai/boot/mini/mapper/MiniAdoptionDiaryMapper.java
  5. 7
      src/main/java/com/youlai/boot/mini/model/dto/DeleteAdoptionDiaryDTO.java
  6. 7
      src/main/java/com/youlai/boot/mini/model/dto/DeleteAdoptionDiaryMediaDTO.java
  7. 98
      src/main/java/com/youlai/boot/mini/model/entity/MiniAdoptionDiary.java
  8. 9
      src/main/java/com/youlai/boot/mini/model/form/AdoptionDiaryForm.java
  9. 18
      src/main/java/com/youlai/boot/mini/model/query/AdoptionDiaryQuery.java
  10. 17
      src/main/java/com/youlai/boot/mini/model/query/OwnAdoptionDiaryQuery.java
  11. 7
      src/main/java/com/youlai/boot/mini/model/vo/AdoptionDiaryVO.java
  12. 38
      src/main/java/com/youlai/boot/mini/service/AdoptionDiaryService.java
  13. 64
      src/main/java/com/youlai/boot/mini/service/impl/AdoptionDiaryServiceImpl.java
  14. 9
      src/main/resources/mapper/mini/MiniAdoptionDiaryMapper.xml

1
src/main/java/com/youlai/boot/codegen/freemarker/MyBatisPlusGenerator.java

@ -104,6 +104,7 @@ public class MyBatisPlusGenerator {
,new TableConfig("mini_stray_animal_note_like", IdType.AUTO, "mini")
,new TableConfig("mini_stray_animal_note_collect", IdType.AUTO, "mini")
,new TableConfig("mini_stray_animal_note_view", IdType.AUTO, "mini")
,new TableConfig("mini_adoption_diary", IdType.AUTO, "mini")
// ,new TableConfig("mini_stray_animal", IdType.AUTO, "mini")
// ,new TableConfig("mini_stray_animal", IdType.INPUT, "minitest")

3
src/main/java/com/youlai/boot/common/enums/LogModuleEnum.java

@ -33,7 +33,8 @@ public enum LogModuleEnum implements IBaseEnum<Integer> {
POINT_RECORD(101, "积分流水"),
POINT_RULE(102, "积分规则"),
SIGN_RECORD(103, "签到记录"),
STRAY_ANIMAL_NOTE_COMMENT(104, "流浪动物笔记评论");
STRAY_ANIMAL_NOTE_COMMENT(104, "流浪动物笔记评论"),
ADOPTION_DIARY_INFO(105, "领养日记信息");
@EnumValue
private final Integer value;

132
src/main/java/com/youlai/boot/mini/controller/AdoptionDiaryController.java

@ -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()));
}
}

14
src/main/java/com/youlai/boot/mini/mapper/MiniAdoptionDiaryMapper.java

@ -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> {
}

7
src/main/java/com/youlai/boot/mini/model/dto/DeleteAdoptionDiaryDTO.java

@ -0,0 +1,7 @@
package com.youlai.boot.mini.model.dto;
import lombok.Data;
@Data
public class DeleteAdoptionDiaryDTO {
}

7
src/main/java/com/youlai/boot/mini/model/dto/DeleteAdoptionDiaryMediaDTO.java

@ -0,0 +1,7 @@
package com.youlai.boot.mini.model.dto;
import lombok.Data;
@Data
public class DeleteAdoptionDiaryMediaDTO {
}

98
src/main/java/com/youlai/boot/mini/model/entity/MiniAdoptionDiary.java

@ -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;
}

9
src/main/java/com/youlai/boot/mini/model/form/AdoptionDiaryForm.java

@ -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 {
}

18
src/main/java/com/youlai/boot/mini/model/query/AdoptionDiaryQuery.java

@ -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;
}

17
src/main/java/com/youlai/boot/mini/model/query/OwnAdoptionDiaryQuery.java

@ -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;
}

7
src/main/java/com/youlai/boot/mini/model/vo/AdoptionDiaryVO.java

@ -0,0 +1,7 @@
package com.youlai.boot.mini.model.vo;
import lombok.Data;
@Data
public class AdoptionDiaryVO {
}

38
src/main/java/com/youlai/boot/mini/service/AdoptionDiaryService.java

@ -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);
}

64
src/main/java/com/youlai/boot/mini/service/impl/AdoptionDiaryServiceImpl.java

@ -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();
}
}

9
src/main/resources/mapper/mini/MiniAdoptionDiaryMapper.xml

@ -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…
Cancel
Save