Browse Source

编辑动物信息可见范围、删除动物信息

master
review512jwy@163.com 1 month ago
parent
commit
a9b5fd9744
  1. 28
      src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java
  2. 29
      src/main/java/com/youlai/boot/mini/model/dto/DeleteStrayAnimalDTO.java
  3. 18
      src/main/java/com/youlai/boot/mini/model/dto/EditVisibilityDTO.java
  4. 8
      src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java
  5. 78
      src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java

28
src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java

@ -6,7 +6,9 @@ import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.common.result.Result; import com.youlai.boot.common.result.Result;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO;
import com.youlai.boot.mini.model.dto.EditVisibilityDTO;
import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.model.form.StrayAnimalForm;
import com.youlai.boot.mini.service.StrayAnimalService; import com.youlai.boot.mini.service.StrayAnimalService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -73,7 +75,7 @@ public class StrayAnimalController {
@Operation(summary = "编辑动物信息时,添加流浪动物信息媒体资源", description = "比如补充图片、补充视频") @Operation(summary = "编辑动物信息时,添加流浪动物信息媒体资源", description = "比如补充图片、补充视频")
@PostMapping(value = "update/saveMediaSource/{noteUuid}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/update/saveMediaSource/{noteUuid}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@RepeatSubmit @RepeatSubmit
@Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.UPDATE) @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> saveMediaSource( public Result<?> saveMediaSource(
@ -85,4 +87,28 @@ public class StrayAnimalController {
return Result.success(); return Result.success();
} }
@Operation(summary = "编辑动物信息可见范围")
@PostMapping(value = "/update/visibility/{animalUuid}")
@RepeatSubmit
@Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.UPDATE)
public Result<?> updateVisibility(
@PathVariable String animalUuid,
@RequestBody @Validated EditVisibilityDTO editVisibilityDTO
) {
strayAnimalService.updateVisibility(animalUuid, editVisibilityDTO);
return Result.success();
}
@Operation(summary = "删除动物信息")
@PostMapping(value = "/delete")
@RepeatSubmit
@Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.DELETE)
public Result<?> delete(
@RequestBody @Validated DeleteStrayAnimalDTO deleteStrayAnimalDTO
) {
strayAnimalService.delete(deleteStrayAnimalDTO);
return Result.success();
}
} }

29
src/main/java/com/youlai/boot/mini/model/dto/DeleteStrayAnimalDTO.java

@ -0,0 +1,29 @@
package com.youlai.boot.mini.model.dto;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.bytedeco.opencv.presets.opencv_core;
import java.util.List;
@Data
public class DeleteStrayAnimalDTO {
@NotEmpty(message = "uuid不能为空")
@ArraySchema(
arraySchema = @Schema(
description = "流浪动物信息uuid列表",
example = "[\"uuid1\",\"uuid2\"]",
requiredMode = Schema.RequiredMode.REQUIRED
),
schema = @Schema(
description = "动物信息uuid",
example = "uuid1"
)
)
private List<@NotBlank(message = "uuid不能为空") String> animalUuidList;
}

18
src/main/java/com/youlai/boot/mini/model/dto/EditVisibilityDTO.java

@ -0,0 +1,18 @@
package com.youlai.boot.mini.model.dto;
import com.youlai.boot.common.annotation.EnumValid;
import com.youlai.boot.mini.model.enums.VisibilityEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class EditVisibilityDTO {
@NotBlank(message = "可见性范围不能为空")
@EnumValid(enumClass = VisibilityEnum.class, message = "可见性范围不合法")
@Schema(description = "可见性范围:public-公开,private-仅自己,friends-仅好友", example = "public")
private String visibility="public";
}

8
src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java

@ -1,7 +1,10 @@
package com.youlai.boot.mini.service; package com.youlai.boot.mini.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.common.result.Result;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO;
import com.youlai.boot.mini.model.dto.EditVisibilityDTO;
import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.entity.MiniStrayAnimal;
import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.model.form.StrayAnimalForm;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -18,4 +21,9 @@ public interface StrayAnimalService extends IService<MiniStrayAnimal> {
void deleteMediaSource(DeleteStrayAnimalNoteMediaDTO deleteStrayAnimalNoteMediaDTO); void deleteMediaSource(DeleteStrayAnimalNoteMediaDTO deleteStrayAnimalNoteMediaDTO);
void saveMediaSource(String noteUuid, List<MultipartFile> images, List<MultipartFile> videos); void saveMediaSource(String noteUuid, List<MultipartFile> images, List<MultipartFile> videos);
void updateVisibility(String animalUuid, EditVisibilityDTO editVisibilityDTO);
void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO);
} }

78
src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java

@ -12,14 +12,15 @@ import com.youlai.boot.common.util.CoordinateTransformUtils;
import com.youlai.boot.common.util.FileUtils; import com.youlai.boot.common.util.FileUtils;
import com.youlai.boot.common.util.JavaVCUtils; import com.youlai.boot.common.util.JavaVCUtils;
import com.youlai.boot.common.util.RandomNumberUtils; import com.youlai.boot.common.util.RandomNumberUtils;
import com.youlai.boot.file.service.FileService;
import com.youlai.boot.file.service.impl.AliyunFileService; import com.youlai.boot.file.service.impl.AliyunFileService;
import com.youlai.boot.framework.security.util.SecurityUtils; import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.mini.converter.MiniStrayAnimalConverter; import com.youlai.boot.mini.converter.MiniStrayAnimalConverter;
import com.youlai.boot.mini.mapper.MiniStrayAnimalMapper; import com.youlai.boot.mini.mapper.MiniStrayAnimalMapper;
import com.youlai.boot.mini.mapper.MiniStrayAnimalNoteMapper; import com.youlai.boot.mini.mapper.MiniStrayAnimalNoteMapper;
import com.youlai.boot.mini.mapper.MiniStrayAnimalNoteMediaMapper; import com.youlai.boot.mini.mapper.MiniStrayAnimalNoteMediaMapper;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalDTO;
import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO; import com.youlai.boot.mini.model.dto.DeleteStrayAnimalNoteMediaDTO;
import com.youlai.boot.mini.model.dto.EditVisibilityDTO;
import com.youlai.boot.mini.model.enums.AnimalNoteMediaTypeEnum; import com.youlai.boot.mini.model.enums.AnimalNoteMediaTypeEnum;
import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.entity.MiniStrayAnimal;
import com.youlai.boot.mini.model.entity.MiniStrayAnimalNote; import com.youlai.boot.mini.model.entity.MiniStrayAnimalNote;
@ -40,7 +41,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.text.MessageFormat;
import java.util.*; import java.util.*;
/** /**
@ -233,27 +233,39 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
@Override @Override
public void updateStrayAnimal(String animalUuid, StrayAnimalForm formData) { public void updateStrayAnimal(String animalUuid, StrayAnimalForm formData) {
// 校验动物是否存在 // 校验动物是否存在
MiniStrayAnimal animal = getValidAnimal(animalUuid);
// 校验审核状态
checkNotAuditing(animal);
long currentTimestamp = System.currentTimeMillis();
// 1. 更新流浪动物基本信息
updateAnimalInfo(animal.getId(), formData, currentTimestamp);
// 3. 更新笔记信息`
updateNoteInfo(animal.getId(), formData, currentTimestamp);
// 4. 提交审核
}
private MiniStrayAnimal getValidAnimal(String animalUuid) {
MiniStrayAnimal animal = miniStrayAnimalMapper.selectOne( MiniStrayAnimal animal = miniStrayAnimalMapper.selectOne(
new LambdaQueryWrapper<MiniStrayAnimal>() new LambdaQueryWrapper<MiniStrayAnimal>()
.eq(MiniStrayAnimal::getUuid, animalUuid) .eq(MiniStrayAnimal::getUuid, animalUuid)
.eq(MiniStrayAnimal::getDeleted, 0) .eq(MiniStrayAnimal::getDeleted, 0)
); );
if (animal == null) { if (animal == null) {
throw new MsgException("动物不存在"); throw new MsgException("动物不存在");
} }
return animal;
}
private void checkNotAuditing(MiniStrayAnimal animal) {
if (1 == animal.getAuditStatus()) { if (1 == animal.getAuditStatus()) {
throw new MsgException("审核中无法更改"); throw new MsgException("审核中无法更改");
} }
long currentTimestamp = System.currentTimeMillis();
// 1. 更新流浪动物基本信息
updateAnimalInfo(animal.getId(), formData, currentTimestamp);
// 3. 更新笔记信息`
updateNoteInfo(animal.getId(), formData, currentTimestamp);
// 4. 提交审核
} }
private void updateNoteInfo(Long animalId, StrayAnimalForm formData, long currentTimestamp) { private void updateNoteInfo(Long animalId, StrayAnimalForm formData, long currentTimestamp) {
@ -330,20 +342,28 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
} }
} }
@Override private MiniStrayAnimalNote getValidNote(String noteUuid) {
public void saveMediaSource(String noteUuid, List<MultipartFile> images, List<MultipartFile> videos) {
if ((images == null || images.isEmpty()) && (videos == null || videos.isEmpty())) {
throw new MsgException("需要上传媒体资源");
}
MiniStrayAnimalNote note = miniStrayAnimalNoteMapper.selectOne( MiniStrayAnimalNote note = miniStrayAnimalNoteMapper.selectOne(
new LambdaQueryWrapper<MiniStrayAnimalNote>() new LambdaQueryWrapper<MiniStrayAnimalNote>()
.eq(MiniStrayAnimalNote::getUuid, noteUuid) .eq(MiniStrayAnimalNote::getUuid, noteUuid)
.eq(MiniStrayAnimalNote::getDeleted, 0) .eq(MiniStrayAnimalNote::getDeleted, 0)
); );
if (note == null) { if (note == null) {
throw new MsgException("笔记不存在"); throw new MsgException("笔记不存在");
} }
return note;
}
@Override
public void saveMediaSource(String noteUuid, List<MultipartFile> images, List<MultipartFile> videos) {
if ((images == null || images.isEmpty()) && (videos == null || videos.isEmpty())) {
throw new MsgException("需要上传媒体资源");
}
// 获取笔记
MiniStrayAnimalNote note = getValidNote(noteUuid);
Long animalId = note.getStrayAnimalId(); Long animalId = note.getStrayAnimalId();
MiniStrayAnimal miniStrayAnimal = miniStrayAnimalMapper.selectById(animalId); MiniStrayAnimal miniStrayAnimal = miniStrayAnimalMapper.selectById(animalId);
if (miniStrayAnimal == null) { if (miniStrayAnimal == null) {
@ -376,4 +396,30 @@ public class StrayAnimalServiceImpl extends ServiceImpl<MiniStrayAnimalMapper, M
} }
@Override
public void updateVisibility(String animalUuid, EditVisibilityDTO editVisibilityDTO) {
// 校验动物是否存在
MiniStrayAnimal animal = getValidAnimal(animalUuid);
MiniStrayAnimalNote miniStrayAnimalNote = miniStrayAnimalNoteMapper.selectOne(new LambdaQueryWrapper<MiniStrayAnimalNote>()
.eq(MiniStrayAnimalNote::getStrayAnimalId, animal.getId())
.eq(MiniStrayAnimalNote::getDeleted, 0));
if (null != miniStrayAnimalNote) {
LambdaUpdateWrapper<MiniStrayAnimalNote> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(MiniStrayAnimalNote::getId, miniStrayAnimalNote.getId())
.set(MiniStrayAnimalNote::getVisibility, editVisibilityDTO.getVisibility());
miniStrayAnimalNoteMapper.update(null, updateWrapper);
}
}
@Override
public void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO) {
LambdaUpdateWrapper<MiniStrayAnimal> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(MiniStrayAnimal::getUuid, deleteStrayAnimalDTO.getAnimalUuidList())
.set(MiniStrayAnimal::getDeleted, 1);
miniStrayAnimalMapper.update(null, updateWrapper);
}
} }

Loading…
Cancel
Save