diff --git a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/CourseController.java b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/CourseController.java index ee855ec..ec81909 100644 --- a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/CourseController.java +++ b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/CourseController.java @@ -34,11 +34,14 @@ import xyz.playedu.common.constant.BPermissionConstant; import xyz.playedu.common.constant.BusinessTypeConstant; import xyz.playedu.common.context.BCtx; import xyz.playedu.common.domain.AdminUser; +import xyz.playedu.common.domain.Category; +import xyz.playedu.common.domain.Department; import xyz.playedu.common.exception.NotFoundException; import xyz.playedu.common.service.*; import xyz.playedu.common.types.JsonResponse; import xyz.playedu.common.types.paginate.CoursePaginateFiler; import xyz.playedu.common.types.paginate.PaginationResult; +import xyz.playedu.common.util.StringUtil; import xyz.playedu.course.domain.Course; import xyz.playedu.course.domain.CourseAttachment; import xyz.playedu.course.domain.CourseChapter; @@ -94,12 +97,66 @@ public class CourseController { String categoryIds = MapUtils.getString(params, "category_ids"); Integer isRequired = MapUtils.getInteger(params, "is_required"); + // 获取所有子部门 + Set alldepIdsSet = new HashSet<>(); + if (StringUtil.isNotEmpty(depIds)) { + String[] depIdArr = depIds.split(","); + if (StringUtil.isNotEmpty(depIdArr)) { + for (String depIdStr : depIdArr) { + Integer depId = Integer.parseInt(depIdStr); + alldepIdsSet.add(depId); + // 查询所有的子部门 + List departmentList = + departmentService.getChildDepartmentsByParentId(depId); + if (StringUtil.isNotEmpty(departmentList)) { + for (Department department : departmentList) { + alldepIdsSet.add(department.getId()); + } + } + } + } + } + List alldepIds = new ArrayList<>(); + if ("0".equals(depIds)) { + alldepIds.add(0); + } + if (StringUtil.isNotEmpty(alldepIdsSet)) { + alldepIds.addAll(alldepIdsSet); + } + + // 获取所有子类 + Set allCategoryIdsSet = new HashSet<>(); + if (StringUtil.isNotEmpty(categoryIds)) { + String[] categoryIdArr = categoryIds.split(","); + if (StringUtil.isNotEmpty(categoryIdArr)) { + for (String categoryIdStr : categoryIdArr) { + Integer categoryId = Integer.parseInt(categoryIdStr); + allCategoryIdsSet.add(categoryId); + // 查询所有的子分类 + List categoryList = + categoryService.getChildCategorysByParentId(categoryId); + if (StringUtil.isNotEmpty(categoryList)) { + for (Category category : categoryList) { + allCategoryIdsSet.add(category.getId()); + } + } + } + } + } + List allCategoryIds = new ArrayList<>(); + if ("0".equals(categoryIds)) { + allCategoryIds.add(0); + } + if (StringUtil.isNotEmpty(allCategoryIdsSet)) { + allCategoryIds.addAll(allCategoryIdsSet); + } + CoursePaginateFiler filter = new CoursePaginateFiler(); filter.setTitle(title); filter.setSortField(sortField); filter.setSortAlgo(sortAlgo); - filter.setCategoryIds(categoryIds); - filter.setDepIds(depIds); + filter.setCategoryIds(allCategoryIds); + filter.setDepIds(alldepIds); filter.setIsRequired(isRequired); if (!backendBus.isSuperAdmin()) { diff --git a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java index 39f215c..a3c600c 100644 --- a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java +++ b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/ResourceController.java @@ -31,14 +31,17 @@ import xyz.playedu.common.constant.BackendConstant; import xyz.playedu.common.constant.BusinessTypeConstant; import xyz.playedu.common.context.BCtx; import xyz.playedu.common.domain.AdminUser; +import xyz.playedu.common.domain.Category; import xyz.playedu.common.exception.NotFoundException; import xyz.playedu.common.exception.ServiceException; import xyz.playedu.common.service.AdminUserService; import xyz.playedu.common.service.AppConfigService; +import xyz.playedu.common.service.CategoryService; import xyz.playedu.common.types.JsonResponse; import xyz.playedu.common.types.paginate.PaginationResult; import xyz.playedu.common.types.paginate.ResourcePaginateFilter; import xyz.playedu.common.util.S3Util; +import xyz.playedu.common.util.StringUtil; import xyz.playedu.resource.domain.Resource; import xyz.playedu.resource.domain.ResourceVideo; import xyz.playedu.resource.service.ResourceService; @@ -61,6 +64,8 @@ public class ResourceController { @Autowired private BackendBus backendBus; + @Autowired private CategoryService categoryService; + @GetMapping("/index") @Log(title = "资源-列表", businessType = BusinessTypeConstant.GET) public JsonResponse index(@RequestParam HashMap params) { @@ -76,11 +81,39 @@ public class ResourceController { return JsonResponse.error("请选择资源类型"); } + // 获取所有子类 + Set allCategoryIdsSet = new HashSet<>(); + if (StringUtil.isNotEmpty(categoryIds)) { + String[] categoryIdArr = categoryIds.split(","); + if (StringUtil.isNotEmpty(categoryIdArr)) { + for (String categoryIdStr : categoryIdArr) { + Integer categoryId = Integer.parseInt(categoryIdStr); + allCategoryIdsSet.add(categoryId); + // 查询所有的子分类 + List categoryList = + categoryService.getChildCategorysByParentId(categoryId); + if (StringUtil.isNotEmpty(categoryList)) { + for (Category category : categoryList) { + allCategoryIdsSet.add(category.getId()); + } + } + } + } + } + + List allCategoryIds = new ArrayList<>(); + if ("0".equals(categoryIds)) { + allCategoryIds.add(0); + } + if (StringUtil.isNotEmpty(allCategoryIdsSet)) { + allCategoryIds.addAll(allCategoryIdsSet); + } + ResourcePaginateFilter filter = new ResourcePaginateFilter(); filter.setSortAlgo(sortAlgo); filter.setSortField(sortField); filter.setType(type); - filter.setCategoryIds(categoryIds); + filter.setCategoryIds(allCategoryIds); filter.setName(name); if (!backendBus.isSuperAdmin()) { // 非超管只能读取它自己上传的资源 diff --git a/playedu-api/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java b/playedu-api/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java index 985516b..5874ce2 100644 --- a/playedu-api/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java +++ b/playedu-api/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java @@ -15,20 +15,13 @@ */ package xyz.playedu.api.controller.frontend; -import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import xyz.playedu.common.domain.Department; -import xyz.playedu.common.exception.NotFoundException; import xyz.playedu.common.service.DepartmentService; import xyz.playedu.common.types.JsonResponse; -import xyz.playedu.common.types.paginate.CoursePaginateFiler; -import xyz.playedu.common.types.paginate.PaginationResult; -import xyz.playedu.course.domain.Course; -import xyz.playedu.course.service.CourseService; -import java.util.HashMap; import java.util.stream.Collectors; /** @@ -42,38 +35,10 @@ public class DepartmentController { @Autowired private DepartmentService departmentService; - @Autowired private CourseService courseService; - @GetMapping("/index") public JsonResponse index() { return JsonResponse.data( departmentService.all().stream() .collect(Collectors.groupingBy(Department::getParentId))); } - - @GetMapping("/{id}/courses") - public JsonResponse courses( - @PathVariable(name = "id") Integer id, @RequestParam HashMap params) - throws NotFoundException { - Integer page = MapUtils.getInteger(params, "page", 1); - Integer size = MapUtils.getInteger(params, "size", 10); - - CoursePaginateFiler filer = new CoursePaginateFiler(); - filer.setIsShow(1); - - if (id == 0) { - filer.setDepIds("0"); // 无部门所属的线上课 - } else { - Department department = departmentService.findOrFail(id); - filer.setDepIds(department.getId() + ""); - } - - PaginationResult result = courseService.paginate(page, size, filer); - - HashMap data = new HashMap<>(); - data.put("data", result.getData()); - data.put("total", result.getTotal()); - - return JsonResponse.data(data); - } } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/CategoryService.java b/playedu-common/src/main/java/xyz/playedu/common/service/CategoryService.java index 29bd45a..e2fb660 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/CategoryService.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/CategoryService.java @@ -56,4 +56,6 @@ public interface CategoryService extends IService { Map id2name(); Long total(); + + List getChildCategorysByParentId(Integer parentId); } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java b/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java index 252adb5..cc0e090 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java @@ -68,4 +68,6 @@ public interface DepartmentService extends IService { Integer createWithChainList(List ou); Department findByName(String name, Integer parentId); + + List getChildDepartmentsByParentId(Integer parentId); } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/impl/CategoryServiceImpl.java b/playedu-common/src/main/java/xyz/playedu/common/service/impl/CategoryServiceImpl.java index 33047c2..a12b0b8 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/impl/CategoryServiceImpl.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/impl/CategoryServiceImpl.java @@ -224,4 +224,13 @@ public class CategoryServiceImpl extends ServiceImpl public Long total() { return count(); } + + @Override + public List getChildCategorysByParentId(Integer parentId) { + return list( + query().getWrapper() + .eq("parent_id", parentId) + .or() + .likeRight("parent_chain", parentId + ",")); + } } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java b/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java index d20a6bc..6f8cf25 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java @@ -293,4 +293,13 @@ public class DepartmentServiceImpl extends ServiceImpl getChildDepartmentsByParentId(Integer parentId) { + return list( + query().getWrapper() + .eq("parent_id", parentId) + .or() + .likeRight("parent_chain", parentId + ",")); + } } diff --git a/playedu-common/src/main/java/xyz/playedu/common/types/paginate/CoursePaginateFiler.java b/playedu-common/src/main/java/xyz/playedu/common/types/paginate/CoursePaginateFiler.java index 0fa879a..552c5c0 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/types/paginate/CoursePaginateFiler.java +++ b/playedu-common/src/main/java/xyz/playedu/common/types/paginate/CoursePaginateFiler.java @@ -17,6 +17,8 @@ package xyz.playedu.common.types.paginate; import lombok.Data; +import java.util.List; + /** * @Author 杭州白书科技有限公司 * @@ -27,9 +29,9 @@ public class CoursePaginateFiler { private String title; - private String depIds; + private List depIds; - private String categoryIds; + private List categoryIds; private Integer isRequired; diff --git a/playedu-common/src/main/java/xyz/playedu/common/types/paginate/ResourcePaginateFilter.java b/playedu-common/src/main/java/xyz/playedu/common/types/paginate/ResourcePaginateFilter.java index 97258ff..586e642 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/types/paginate/ResourcePaginateFilter.java +++ b/playedu-common/src/main/java/xyz/playedu/common/types/paginate/ResourcePaginateFilter.java @@ -17,6 +17,8 @@ package xyz.playedu.common.types.paginate; import lombok.Data; +import java.util.List; + /** * @Author 杭州白书科技有限公司 * @@ -35,7 +37,7 @@ public class ResourcePaginateFilter { private String sortAlgo; - private String categoryIds; + private List categoryIds; private String type; diff --git a/playedu-course/src/main/resources/mapper/CourseMapper.xml b/playedu-course/src/main/resources/mapper/CourseMapper.xml index 046acad..86092e0 100644 --- a/playedu-course/src/main/resources/mapper/CourseMapper.xml +++ b/playedu-course/src/main/resources/mapper/CourseMapper.xml @@ -27,11 +27,11 @@