From 82ac97dbc532d59d85db2ca9f67cdc4788053ebd Mon Sep 17 00:00:00 2001 From: none Date: Mon, 12 Jun 2023 10:22:09 +0800 Subject: [PATCH] =?UTF-8?q?added:=20=E8=B5=84=E6=BA=90=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/ResourceController.java | 33 +++++++++++++++--- .../ResourceCategoryChangeRequest.java | 34 +++++++++++++++++++ .../playedu/api/service/ResourceService.java | 7 ++-- .../api/service/impl/ResourceServiceImpl.java | 5 +++ .../ResourceCategoryRelationServiceImpl.java | 26 +++++++------- .../ResourceCategoryRelationService.java | 8 +---- 6 files changed, 84 insertions(+), 29 deletions(-) create mode 100644 src/main/java/xyz/playedu/api/request/backend/ResourceCategoryChangeRequest.java 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 e4ecfac..88f7f3e 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java @@ -29,6 +29,7 @@ import xyz.playedu.api.domain.Resource; import xyz.playedu.api.domain.ResourceVideo; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.middleware.BackendPermissionMiddleware; +import xyz.playedu.api.request.backend.ResourceCategoryChangeRequest; import xyz.playedu.api.request.backend.ResourceDestroyMultiRequest; import xyz.playedu.api.service.AdminUserService; import xyz.playedu.api.service.MinioService; @@ -41,11 +42,6 @@ import xyz.playedu.api.types.paginate.ResourcePaginateFilter; import java.util.*; import java.util.stream.Collectors; -/** - * @Author 杭州白书科技有限公司 - * - * @create 2023/2/23 10:50 - */ @RestController @RequestMapping("/backend/v1/resource") public class ResourceController { @@ -150,4 +146,31 @@ public class ResourceController { } return JsonResponse.success(); } + + @BackendPermissionMiddleware(slug = BPermissionConstant.RESOURCE_DESTROY) + @PutMapping("/category") + public JsonResponse categoryChange(@RequestBody ResourceCategoryChangeRequest req) { + if (req.getIds().size() == 0) { + return JsonResponse.error("请选择需要删除的资源"); + } + if (req.getCategoryId() <= 0) { + return JsonResponse.error("请选择分类"); + } + + List ids = req.getIds(); + if (!backendBus.isSuperAdmin()) { // 非超管校验owner + ids = + resourceService.chunks(req.getIds()).stream() + .filter(r -> r.getAdminId().equals(BCtx.getId())) + .map(Resource::getId) + .toList(); + if (ids.size() == 0) { + return JsonResponse.error("无权限操作"); + } + } + + resourceService.categoryChange(ids, req.getCategoryId()); + + return JsonResponse.success(); + } } diff --git a/src/main/java/xyz/playedu/api/request/backend/ResourceCategoryChangeRequest.java b/src/main/java/xyz/playedu/api/request/backend/ResourceCategoryChangeRequest.java new file mode 100644 index 0000000..443f9a1 --- /dev/null +++ b/src/main/java/xyz/playedu/api/request/backend/ResourceCategoryChangeRequest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2023 杭州白书科技有限公司 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package xyz.playedu.api.request.backend; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +import java.util.List; + +@Data +public class ResourceCategoryChangeRequest { + @NotNull(message = "参数为空") + private List ids; + + @NotNull(message = "请选择分类") + @JsonProperty("category_id") + private Integer categoryId; +} diff --git a/src/main/java/xyz/playedu/api/service/ResourceService.java b/src/main/java/xyz/playedu/api/service/ResourceService.java index 6aa5905..3823e95 100644 --- a/src/main/java/xyz/playedu/api/service/ResourceService.java +++ b/src/main/java/xyz/playedu/api/service/ResourceService.java @@ -24,11 +24,6 @@ import xyz.playedu.api.types.paginate.ResourcePaginateFilter; import java.util.List; -/** - * @author tengteng - * @description 针对表【resources】的数据库操作Service - * @createDate 2023-02-23 10:50:26 - */ public interface ResourceService extends IService { PaginationResult paginate(int page, int size, ResourcePaginateFilter filter); @@ -58,4 +53,6 @@ public interface ResourceService extends IService { Integer total(String type); Integer duration(Integer id); + + void categoryChange(List ids, Integer categoryId); } 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 3fdd107..ca8562a 100644 --- a/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/ResourceServiceImpl.java @@ -155,4 +155,9 @@ public class ResourceServiceImpl extends ServiceImpl } return resourceVideo.getDuration(); } + + @Override + public void categoryChange(List ids, Integer categoryId) { + relationService.rebuild(ids, categoryId); + } } diff --git a/src/main/java/xyz/playedu/api/service/impl/internal/ResourceCategoryRelationServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/internal/ResourceCategoryRelationServiceImpl.java index 819d187..4df60c0 100644 --- a/src/main/java/xyz/playedu/api/service/impl/internal/ResourceCategoryRelationServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/internal/ResourceCategoryRelationServiceImpl.java @@ -23,24 +23,26 @@ import xyz.playedu.api.domain.ResourceCategoryRelation; import xyz.playedu.api.mapper.ResourceCategoryRelationMapper; import xyz.playedu.api.service.internal.ResourceCategoryRelationService; +import java.util.ArrayList; import java.util.List; -/** - * @author tengteng - * @description 针对表【resource_category】的数据库操作Service实现 - * @createDate 2023-03-08 16:54:56 - */ @Service public class ResourceCategoryRelationServiceImpl extends ServiceImpl implements ResourceCategoryRelationService { @Override - public List getRidsByCids(List categoryIds) { - List relations = - list(query().getWrapper().in("cid", categoryIds)); - if (relations == null) { - return null; - } - return relations.stream().map(ResourceCategoryRelation::getRid).toList(); + public void rebuild(List ids, Integer categoryId) { + remove(query().getWrapper().in("rid", ids)); + List data = new ArrayList<>(); + ids.forEach( + (item) -> + data.add( + new ResourceCategoryRelation() { + { + setCid(categoryId); + setRid(item); + } + })); + saveBatch(data); } } diff --git a/src/main/java/xyz/playedu/api/service/internal/ResourceCategoryRelationService.java b/src/main/java/xyz/playedu/api/service/internal/ResourceCategoryRelationService.java index 1403436..4b66b75 100644 --- a/src/main/java/xyz/playedu/api/service/internal/ResourceCategoryRelationService.java +++ b/src/main/java/xyz/playedu/api/service/internal/ResourceCategoryRelationService.java @@ -21,12 +21,6 @@ import xyz.playedu.api.domain.ResourceCategoryRelation; import java.util.List; -/** - * @author tengteng - * @description 针对表【resource_category】的数据库操作Service - * @createDate 2023-03-08 16:54:56 - */ public interface ResourceCategoryRelationService extends IService { - - List getRidsByCids(List categoryIds); + public void rebuild(List ids, Integer categoryId); }