From a9b5fd9744bf7c57fd6dd1bde15c28c2b72b317d Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Sat, 18 Apr 2026 11:18:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=8A=A8=E7=89=A9=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E5=8F=AF=E8=A7=81=E8=8C=83=E5=9B=B4=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8A=A8=E7=89=A9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/StrayAnimalController.java | 28 ++++++- .../mini/model/dto/DeleteStrayAnimalDTO.java | 29 +++++++ .../mini/model/dto/EditVisibilityDTO.java | 18 +++++ .../boot/mini/service/StrayAnimalService.java | 8 ++ .../service/impl/StrayAnimalServiceImpl.java | 78 +++++++++++++++---- 5 files changed, 144 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/youlai/boot/mini/model/dto/DeleteStrayAnimalDTO.java create mode 100644 src/main/java/com/youlai/boot/mini/model/dto/EditVisibilityDTO.java diff --git a/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java b/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java index 4855704..0897d1d 100644 --- a/src/main/java/com/youlai/boot/mini/controller/StrayAnimalController.java +++ b/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.model.Option; 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.EditVisibilityDTO; import com.youlai.boot.mini.model.form.StrayAnimalForm; import com.youlai.boot.mini.service.StrayAnimalService; import io.swagger.v3.oas.annotations.Operation; @@ -73,7 +75,7 @@ public class StrayAnimalController { @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 @Log(module = LogModuleEnum.STRAY_ANIMAL_INFO, value = ActionTypeEnum.UPDATE) public Result saveMediaSource( @@ -85,4 +87,28 @@ public class StrayAnimalController { 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(); + } + } diff --git a/src/main/java/com/youlai/boot/mini/model/dto/DeleteStrayAnimalDTO.java b/src/main/java/com/youlai/boot/mini/model/dto/DeleteStrayAnimalDTO.java new file mode 100644 index 0000000..61e54a9 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/youlai/boot/mini/model/dto/EditVisibilityDTO.java b/src/main/java/com/youlai/boot/mini/model/dto/EditVisibilityDTO.java new file mode 100644 index 0000000..0076b80 --- /dev/null +++ b/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"; + +} diff --git a/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java b/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java index 5c2d2ec..834f336 100644 --- a/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java +++ b/src/main/java/com/youlai/boot/mini/service/StrayAnimalService.java @@ -1,7 +1,10 @@ package com.youlai.boot.mini.service; 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.EditVisibilityDTO; import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.form.StrayAnimalForm; import jakarta.validation.Valid; @@ -18,4 +21,9 @@ public interface StrayAnimalService extends IService { void deleteMediaSource(DeleteStrayAnimalNoteMediaDTO deleteStrayAnimalNoteMediaDTO); void saveMediaSource(String noteUuid, List images, List videos); + + void updateVisibility(String animalUuid, EditVisibilityDTO editVisibilityDTO); + + void delete(DeleteStrayAnimalDTO deleteStrayAnimalDTO); } + diff --git a/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java b/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java index 1682c8b..6fc83b1 100644 --- a/src/main/java/com/youlai/boot/mini/service/impl/StrayAnimalServiceImpl.java +++ b/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.JavaVCUtils; 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.framework.security.util.SecurityUtils; import com.youlai.boot.mini.converter.MiniStrayAnimalConverter; import com.youlai.boot.mini.mapper.MiniStrayAnimalMapper; import com.youlai.boot.mini.mapper.MiniStrayAnimalNoteMapper; 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.EditVisibilityDTO; import com.youlai.boot.mini.model.enums.AnimalNoteMediaTypeEnum; import com.youlai.boot.mini.model.entity.MiniStrayAnimal; import com.youlai.boot.mini.model.entity.MiniStrayAnimalNote; @@ -40,7 +41,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; -import java.text.MessageFormat; import java.util.*; /** @@ -233,27 +233,39 @@ public class StrayAnimalServiceImpl extends ServiceImpl() .eq(MiniStrayAnimal::getUuid, animalUuid) .eq(MiniStrayAnimal::getDeleted, 0) ); + if (animal == null) { throw new MsgException("动物不存在"); } + return animal; + } + + private void checkNotAuditing(MiniStrayAnimal animal) { if (1 == animal.getAuditStatus()) { 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) { @@ -330,20 +342,28 @@ public class StrayAnimalServiceImpl extends ServiceImpl images, List videos) { - if ((images == null || images.isEmpty()) && (videos == null || videos.isEmpty())) { - throw new MsgException("需要上传媒体资源"); - } + private MiniStrayAnimalNote getValidNote(String noteUuid) { MiniStrayAnimalNote note = miniStrayAnimalNoteMapper.selectOne( new LambdaQueryWrapper() .eq(MiniStrayAnimalNote::getUuid, noteUuid) .eq(MiniStrayAnimalNote::getDeleted, 0) ); + if (note == null) { throw new MsgException("笔记不存在"); } + return note; + } + + @Override + public void saveMediaSource(String noteUuid, List images, List videos) { + if ((images == null || images.isEmpty()) && (videos == null || videos.isEmpty())) { + throw new MsgException("需要上传媒体资源"); + } + // 获取笔记 + MiniStrayAnimalNote note = getValidNote(noteUuid); + Long animalId = note.getStrayAnimalId(); MiniStrayAnimal miniStrayAnimal = miniStrayAnimalMapper.selectById(animalId); if (miniStrayAnimal == null) { @@ -376,4 +396,30 @@ public class StrayAnimalServiceImpl extends ServiceImpl() + .eq(MiniStrayAnimalNote::getStrayAnimalId, animal.getId()) + .eq(MiniStrayAnimalNote::getDeleted, 0)); + if (null != miniStrayAnimalNote) { + LambdaUpdateWrapper 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 updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(MiniStrayAnimal::getUuid, deleteStrayAnimalDTO.getAnimalUuidList()) + .set(MiniStrayAnimal::getDeleted, 1); + + miniStrayAnimalMapper.update(null, updateWrapper); + } + }