From 48602be6c08bb32401b8de260c716645a5e0ee61 Mon Sep 17 00:00:00 2001 From: none Date: Mon, 13 Mar 2023 15:28:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=88=86=E7=B1=BB=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=A3=80=E6=B5=8Bapi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/ResourceCategoryController.java | 43 +++++++++++++++++++ .../api/service/ResourceCategoryService.java | 4 ++ .../playedu/api/service/ResourceService.java | 2 + .../impl/ResourceCategoryServiceImpl.java | 22 +++++++++- .../api/service/impl/ResourceServiceImpl.java | 5 +++ 5 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java b/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java index ea13e3c..f36effc 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/ResourceCategoryController.java @@ -6,12 +6,16 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import xyz.playedu.api.PlayEduBContext; import xyz.playedu.api.constant.BPermissionConstant; +import xyz.playedu.api.constant.BackendConstant; +import xyz.playedu.api.domain.Resource; import xyz.playedu.api.domain.ResourceCategory; import xyz.playedu.api.event.ResourceCategoryDestroyEvent; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.middleware.BackendPermissionMiddleware; import xyz.playedu.api.request.backend.ResourceCategoryRequest; +import xyz.playedu.api.service.CourseService; import xyz.playedu.api.service.ResourceCategoryService; +import xyz.playedu.api.service.ResourceService; import xyz.playedu.api.types.JsonResponse; import java.util.*; @@ -28,6 +32,12 @@ public class ResourceCategoryController { @Autowired private ResourceCategoryService categoryService; + @Autowired + private CourseService courseService; + + @Autowired + private ResourceService resourceService; + @Autowired private ApplicationContext ctx; @@ -79,6 +89,39 @@ public class ResourceCategoryController { return JsonResponse.success(); } + @BackendPermissionMiddleware(slug = BPermissionConstant.RESOURCE_CATEGORY) + @GetMapping("/{id}/destroy") + public JsonResponse preDestroy(@PathVariable Integer id) { + List courseIds = categoryService.getCourseIdsById(id); + List rids = categoryService.getRidsById(id); + + HashMap data = new HashMap<>(); + data.put("courses", new ArrayList<>()); + data.put("videos", new ArrayList<>()); + data.put("images", new ArrayList<>()); + + if (courseIds != null && courseIds.size() > 0) { + data.put("courses", courseService.chunks(courseIds, new ArrayList<>() {{ + add("id"); + add("title"); + }})); + } + + if (rids != null && rids.size() > 0) { + Map> resources = resourceService.chunks(rids, new ArrayList<>() {{ + add("id"); + add("admin_id"); + add("type"); + add("name"); + add("url"); + }}).stream().collect(Collectors.groupingBy(Resource::getType)); + data.put("videos", resources.get(BackendConstant.RESOURCE_TYPE_VIDEO)); + data.put("images", resources.get(BackendConstant.RESOURCE_TYPE_IMAGE)); + } + + return JsonResponse.data(data); + } + @BackendPermissionMiddleware(slug = BPermissionConstant.RESOURCE_CATEGORY) @DeleteMapping("/{id}") public JsonResponse destroy(@PathVariable Integer id) throws NotFoundException { diff --git a/src/main/java/xyz/playedu/api/service/ResourceCategoryService.java b/src/main/java/xyz/playedu/api/service/ResourceCategoryService.java index 2e87249..adfa78d 100644 --- a/src/main/java/xyz/playedu/api/service/ResourceCategoryService.java +++ b/src/main/java/xyz/playedu/api/service/ResourceCategoryService.java @@ -29,4 +29,8 @@ public interface ResourceCategoryService extends IService { String compParentChain(Integer parentId) throws NotFoundException; + List getCourseIdsById(Integer id); + + List getRidsById(Integer id); + } diff --git a/src/main/java/xyz/playedu/api/service/ResourceService.java b/src/main/java/xyz/playedu/api/service/ResourceService.java index 22256f5..4fb315a 100644 --- a/src/main/java/xyz/playedu/api/service/ResourceService.java +++ b/src/main/java/xyz/playedu/api/service/ResourceService.java @@ -27,4 +27,6 @@ public interface ResourceService extends IService { List chunks(List ids); + List chunks(List ids, List fields); + } diff --git a/src/main/java/xyz/playedu/api/service/impl/ResourceCategoryServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/ResourceCategoryServiceImpl.java index 4a8b407..32d2461 100644 --- a/src/main/java/xyz/playedu/api/service/impl/ResourceCategoryServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/ResourceCategoryServiceImpl.java @@ -1,12 +1,17 @@ package xyz.playedu.api.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import xyz.playedu.api.domain.ResourceCategory; +import xyz.playedu.api.domain.ResourceCategoryRelation; +import xyz.playedu.api.domain.ResourceCourseCategory; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.service.ResourceCategoryService; import xyz.playedu.api.mapper.ResourceCategoryMapper; import org.springframework.stereotype.Service; +import xyz.playedu.api.service.internal.ResourceCategoryRelationService; +import xyz.playedu.api.service.internal.ResourceCourseCategoryService; import java.util.ArrayList; import java.util.Date; @@ -21,6 +26,12 @@ import java.util.List; public class ResourceCategoryServiceImpl extends ServiceImpl implements ResourceCategoryService { + @Autowired + private ResourceCourseCategoryService resourceCourseCategoryService; + + @Autowired + private ResourceCategoryRelationService resourceCategoryRelationService; + @Override public List listByParentId(Integer id) { return list(query().getWrapper().eq("parent_id", id).orderByAsc("sort")); @@ -154,7 +165,16 @@ public class ResourceCategoryServiceImpl extends ServiceImpl getCourseIdsById(Integer id) { + return resourceCourseCategoryService.list(resourceCourseCategoryService.query().getWrapper().eq("category_id", id)).stream().map(ResourceCourseCategory::getCourseId).toList(); + } + + @Override + public List getRidsById(Integer id) { + return resourceCategoryRelationService.list(resourceCategoryRelationService.query().getWrapper().eq("cid", id)).stream().map(ResourceCategoryRelation::getRid).toList(); + } } 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 b572b39..64a330a 100644 --- a/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java @@ -150,6 +150,11 @@ public class ResourceServiceImpl extends ServiceImpl i public List chunks(List ids) { return list(query().getWrapper().in("id", ids)); } + + @Override + public List chunks(List ids, List fields) { + return list(query().getWrapper().in("id", ids).select(fields)); + } }