From 0118e0a164448ec291bb8e50341307172842cf2e Mon Sep 17 00:00:00 2001 From: none Date: Tue, 7 Mar 2023 11:52:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B5=84=E6=BA=90=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/ResourceController.java | 29 +++++++++++++++++-- .../playedu/api/service/ResourceService.java | 3 ++ .../api/service/ResourceVideoService.java | 2 ++ .../api/service/impl/ResourceServiceImpl.java | 10 +++++++ .../impl/ResourceVideoServiceImpl.java | 5 ++++ 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java b/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java index 9eb5f70..8a47370 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java @@ -1,13 +1,18 @@ package xyz.playedu.api.controller.backend; +import io.minio.MinioClient; +import io.minio.RemoveObjectArgs; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import xyz.playedu.api.config.MinioConfig; import xyz.playedu.api.constant.BackendConstant; import xyz.playedu.api.domain.Resource; import xyz.playedu.api.domain.ResourceCategory; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.request.backend.ResourceRequest; import xyz.playedu.api.service.ResourceCategoryService; import xyz.playedu.api.service.ResourceService; @@ -23,6 +28,7 @@ import java.util.*; * @create 2023/2/23 10:50 */ @RestController +@Slf4j @RequestMapping("/backend/v1/resource") public class ResourceController { @@ -35,6 +41,12 @@ public class ResourceController { @Autowired private ResourceCategoryService categoryService; + @Autowired + private MinioClient minioClient; + + @Autowired + private MinioConfig minioConfig; + @GetMapping("/index") public JsonResponse index(@RequestParam HashMap params) { Integer page = MapUtils.getInteger(params, "page", 1); @@ -108,9 +120,20 @@ public class ResourceController { } @DeleteMapping("/{id}") - public JsonResponse destroy(@PathVariable(name = "id") Integer id) { - resourceService.removeById(id); - return JsonResponse.success(); + @Transactional + public JsonResponse destroy(@PathVariable(name = "id") Integer id) throws NotFoundException { + Resource resource = resourceService.findOrFail(id); + try { + minioClient.removeObject(RemoveObjectArgs.builder().bucket(minioConfig.getBucket()).object(resource.getPath()).build()); + if (resource.getType().equals(BackendConstant.RESOURCE_TYPE_VIDEO)) { + resourceVideoService.removeByRid(resource.getId()); + } + resourceService.removeById(resource.getId()); + return JsonResponse.success(); + } catch (Exception e) { + log.error(e.getMessage()); + return JsonResponse.error("系统错误"); + } } } diff --git a/src/main/java/xyz/playedu/api/service/ResourceService.java b/src/main/java/xyz/playedu/api/service/ResourceService.java index 43ff162..6e34ef8 100644 --- a/src/main/java/xyz/playedu/api/service/ResourceService.java +++ b/src/main/java/xyz/playedu/api/service/ResourceService.java @@ -2,6 +2,7 @@ package xyz.playedu.api.service; import xyz.playedu.api.domain.Resource; import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.ResourcePaginateFilter; @@ -16,4 +17,6 @@ public interface ResourceService extends IService { Resource create(Integer categoryId, String type, String filename, String ext, Long size, String disk, String fileId, String path, String url); + Resource findOrFail(Integer id) throws NotFoundException; + } diff --git a/src/main/java/xyz/playedu/api/service/ResourceVideoService.java b/src/main/java/xyz/playedu/api/service/ResourceVideoService.java index 44e5f73..47806f1 100644 --- a/src/main/java/xyz/playedu/api/service/ResourceVideoService.java +++ b/src/main/java/xyz/playedu/api/service/ResourceVideoService.java @@ -11,4 +11,6 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface ResourceVideoService extends IService { void create(Integer resourceId, Integer duration); + + void removeByRid(Integer resourceId); } diff --git a/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java index aabf440..4a0f9ea 100644 --- a/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import xyz.playedu.api.domain.Resource; +import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.service.ResourceService; import xyz.playedu.api.mapper.ResourceMapper; import org.springframework.stereotype.Service; @@ -83,6 +84,15 @@ public class ResourceServiceImpl extends ServiceImpl i save(resource); return resource; } + + @Override + public Resource findOrFail(Integer id) throws NotFoundException { + Resource resource = getById(id); + if (resource == null) { + throw new NotFoundException("资源不存在"); + } + return resource; + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/ResourceVideoServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/ResourceVideoServiceImpl.java index 78c7a86..40e6e53 100644 --- a/src/main/java/xyz/playedu/api/service/impl/ResourceVideoServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/ResourceVideoServiceImpl.java @@ -24,6 +24,11 @@ public class ResourceVideoServiceImpl extends ServiceImpl