线上课列表返回分类+部门

This commit is contained in:
none 2023-03-21 15:47:08 +08:00
parent 9a3b8138f5
commit 85f7afa6e8
10 changed files with 62 additions and 25 deletions

View File

@ -14,10 +14,7 @@ import xyz.playedu.api.event.CourseDestroyEvent;
import xyz.playedu.api.exception.NotFoundException;
import xyz.playedu.api.middleware.BackendPermissionMiddleware;
import xyz.playedu.api.request.backend.CourseRequest;
import xyz.playedu.api.service.CourseChapterService;
import xyz.playedu.api.service.CourseHourService;
import xyz.playedu.api.service.CourseService;
import xyz.playedu.api.service.ResourceCategoryService;
import xyz.playedu.api.service.*;
import xyz.playedu.api.types.JsonResponse;
import xyz.playedu.api.types.paginate.CoursePaginateFiler;
import xyz.playedu.api.types.paginate.PaginationResult;
@ -47,6 +44,9 @@ public class CourseController {
@Autowired
private CourseHourService hourService;
@Autowired
private DepartmentService departmentService;
@Autowired
private ApplicationContext ctx;
@ -75,7 +75,12 @@ public class CourseController {
HashMap<String, Object> data = new HashMap<>();
data.put("data", result.getData());
data.put("total", result.getTotal());
data.put("pure_total", courseService.total());
List<Integer> courseIds = result.getData().stream().map(Course::getId).toList();
data.put("course_category_ids", courseService.getCategoryIdsGroup(courseIds));
data.put("course_dep_ids", courseService.getDepIdsGroup(courseIds));
data.put("categories", categoryService.id2name());
data.put("departments", departmentService.id2name());
return JsonResponse.data(data);
}

View File

@ -77,7 +77,6 @@ public class ResourceController {
HashMap<String, Object> data = new HashMap<>();
data.put("result", result);
data.put("pure_total", resourceService.total(type));
if (type.equals(BackendConstant.RESOURCE_TYPE_VIDEO)) {
List<ResourceVideo> resourceVideos = resourceVideoService.chunksByRids(result.getData().stream().map(Resource::getId).toList());

View File

@ -76,12 +76,12 @@ public class UserController {
}
// 读取部门课
List<Course> depCourses = courseService.depCoursesAndShow(new ArrayList<>() {{
List<Course> depCourses = courseService.getDepCoursesAndShow(new ArrayList<>() {{
add(depId);
}});
// 公开课
List<Course> openCourses = courseService.openCoursesAndShow(200);
List<Course> openCourses = courseService.getOpenCoursesAndShow(200);
HashMap<String, Object> data = new HashMap<>();
data.put("open", openCourses.stream().collect(Collectors.groupingBy(Course::getIsRequired)));

View File

@ -5,8 +5,6 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.Date;
/**
* @Author 杭州白书科技有限公司
* @create 2023/2/26 18:00

View File

@ -44,9 +44,11 @@ public interface CourseService extends IService<Course> {
List<Course> chunks(List<Integer> ids);
Integer total();
List<Course> getOpenCoursesAndShow(Integer limit);
List<Course> openCoursesAndShow(Integer limit);
List<Course> getDepCoursesAndShow(List<Integer> depIds);
List<Course> depCoursesAndShow(List<Integer> depIds);
Map<Integer, List<Integer>> getCategoryIdsGroup(List<Integer> courseIds);
Map<Integer, List<Integer>> getDepIdsGroup(List<Integer> courseIds);
}

View File

@ -43,4 +43,6 @@ public interface DepartmentService extends IService<Department> {
void resetSort(List<Integer> ids);
Map<Integer, List<Department>> groupByParent();
Map<Integer, String> id2name();
}

View File

@ -40,4 +40,5 @@ public interface ResourceCategoryService extends IService<ResourceCategory> {
Map<Integer, List<ResourceCategory>> groupByParent();
Map<Integer, String> id2name();
}

View File

@ -1,6 +1,7 @@
package xyz.playedu.api.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import xyz.playedu.api.domain.ResourceCourseCategory;
@ -12,7 +13,6 @@ import xyz.playedu.api.service.CourseService;
import xyz.playedu.api.mapper.CourseMapper;
import org.springframework.stereotype.Service;
import xyz.playedu.api.service.internal.ResourceCourseCategoryService;
import xyz.playedu.api.types.mapper.CourseCategoryCountMapper;
import xyz.playedu.api.types.paginate.CoursePaginateFiler;
import xyz.playedu.api.types.paginate.PaginationResult;
@ -25,6 +25,7 @@ import java.util.stream.Collectors;
* @createDate 2023-02-24 14:14:01
*/
@Service
@Slf4j
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements CourseService {
@Autowired
@ -170,19 +171,41 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
}
@Override
public Integer total() {
return Math.toIntExact(count());
}
@Override
public List<Course> openCoursesAndShow(Integer limit) {
public List<Course> getOpenCoursesAndShow(Integer limit) {
return getBaseMapper().openCoursesAndShow(limit);
}
@Override
public List<Course> depCoursesAndShow(List<Integer> depIds) {
public List<Course> getDepCoursesAndShow(List<Integer> depIds) {
return list(query().getWrapper().in("id", courseDepartmentService.getCourseIdsByDepIds(depIds)).eq("is_show", 1));
}
@Override
public Map<Integer, List<Integer>> getCategoryIdsGroup(List<Integer> courseIds) {
Map<Integer, List<ResourceCourseCategory>> data = courseCategoryService
.list(courseCategoryService.query().getWrapper().in("course_id", courseIds))
.stream()
.collect(Collectors.groupingBy(ResourceCourseCategory::getCourseId));
Map<Integer, List<Integer>> result = new HashMap<>();
data.forEach((courseId, records) -> {
result.put(courseId, records.stream().map(ResourceCourseCategory::getCategoryId).toList());
});
return result;
}
@Override
public Map<Integer, List<Integer>> getDepIdsGroup(List<Integer> courseIds) {
Map<Integer, List<CourseDepartment>> data = courseDepartmentService
.list(courseDepartmentService.query().getWrapper().in("course_id", courseIds))
.stream()
.collect(Collectors.groupingBy(CourseDepartment::getCourseId));
log.info("data {}", data);
Map<Integer, List<Integer>> result = new HashMap<>();
data.forEach((courseId, records) -> {
result.put(courseId, records.stream().map(CourseDepartment::getDepId).toList());
});
return result;
}
}

View File

@ -15,10 +15,7 @@ import xyz.playedu.api.mapper.DepartmentMapper;
import org.springframework.stereotype.Service;
import xyz.playedu.api.service.internal.UserDepartmentService;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -221,6 +218,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
public Map<Integer, List<Department>> groupByParent() {
return list(query().getWrapper().orderByAsc("sort")).stream().collect(Collectors.groupingBy(Department::getParentId));
}
@Override
public Map<Integer, String> id2name() {
return all().stream().collect(Collectors.toMap(Department::getId, Department::getName));
}
}

View File

@ -204,6 +204,11 @@ public class ResourceCategoryServiceImpl extends ServiceImpl<ResourceCategoryMap
public Map<Integer, List<ResourceCategory>> groupByParent() {
return list(query().getWrapper().orderByAsc("sort")).stream().collect(Collectors.groupingBy(ResourceCategory::getParentId));
}
@Override
public Map<Integer, String> id2name() {
return all().stream().collect(Collectors.toMap(ResourceCategory::getId, ResourceCategory::getName));
}
}