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