Browse Source

课件新增搜索功能

zouxuan 4 months ago
parent
commit
de06968413

+ 7 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/TenantAlbumSheetController.java

@@ -66,13 +66,19 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课件关联的课程列表")
     @GetMapping("/getLessonCoursewareCourseList/{id}")
-    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,String search){
+    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,
+                                                                                                                          String search,
+                                                                                                                          Boolean detailFlag){
         CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
         query.setId(id);
         query.setSearch(search);
+        query.setDetailFlag(detailFlag);
         List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
         if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+            //过滤酷乐秀相关的权限
             courseScheduleCoursewareDetails.forEach(tenantAlbumMusicService::filterLessonCourseDetail);
+            //剔除空数据
+            courseScheduleCoursewareDetails.forEach(e->tenantAlbumMusicService.filterAndUpdateKnowledgePointList(e, search));
             String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
             List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject.parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);
             return succeed(courseScheduleCoursewareDetailList);

+ 7 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/TenantAlbumSheetController.java

@@ -115,13 +115,19 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课件关联的课程列表")
     @GetMapping("/getLessonCoursewareCourseList/{id}")
-    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,String search){
+    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,
+                                                                                                                          String search,
+                                                                                                                          Boolean detailFlag){
         CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
         query.setId(id);
         query.setSearch(search);
+        query.setDetailFlag(detailFlag);
         List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
         if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+            //过滤酷乐秀相关的权限
             courseScheduleCoursewareDetails.forEach(tenantAlbumMusicService::filterLessonCourseDetail);
+            //剔除空数据
+            courseScheduleCoursewareDetails.forEach(e->tenantAlbumMusicService.filterAndUpdateKnowledgePointList(e, search));
             String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
             List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject
                 .parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);

+ 7 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java

@@ -104,13 +104,19 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课件关联的课程列表")
     @GetMapping("/getLessonCoursewareCourseList/{id}")
-    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,String search){
+    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,
+                                                                                                                          String search,
+                                                                                                                          Boolean detailFlag){
         CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
         query.setId(id);
         query.setSearch(search);
+        query.setDetailFlag(detailFlag);
         List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
         if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+            //过滤酷乐秀相关的权限
             courseScheduleCoursewareDetails.forEach(tenantAlbumMusicService::filterLessonCourseDetail);
+            //剔除空数据
+            courseScheduleCoursewareDetails.forEach(e->tenantAlbumMusicService.filterAndUpdateKnowledgePointList(e, search));
             String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
             List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject
                 .parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);

+ 5 - 1
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantAlbumSheetController.java

@@ -95,13 +95,17 @@ public class TenantAlbumSheetController extends BaseController {
 
     @ApiOperation(value = "获取课件关联的课程列表")
     @GetMapping("/getLessonCoursewareCourseList/{id}")
-    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,String search){
+    public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id,String search,Boolean detailFlag){
         CbsLessonCoursewareWrapper.CoursewareDetailQuery query = new CbsLessonCoursewareWrapper.CoursewareDetailQuery();
         query.setId(id);
         query.setSearch(search);
+        query.setDetailFlag(detailFlag);
         List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(query).feignData();
         if (CollectionUtils.isNotEmpty(courseScheduleCoursewareDetails)) {
+            //过滤酷乐秀相关的权限
             courseScheduleCoursewareDetails.forEach(tenantAlbumMusicService::filterLessonCourseDetail);
+            //剔除空数据
+            courseScheduleCoursewareDetails.forEach(e->tenantAlbumMusicService.filterAndUpdateKnowledgePointList(e, search));
             String jsonString = JSONObject.toJSONString(courseScheduleCoursewareDetails);
             List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetailList = JSONObject
                 .parseArray(jsonString, LessonCoursewareWrapper.CourseScheduleCoursewareDetail.class);

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TenantAlbumMusicService.java

@@ -76,6 +76,8 @@ public interface TenantAlbumMusicService extends IService<TenantAlbumMusic>  {
 
     LessonCoursewareDetailWrapper.LessonCoursewareDetail filterLessonCourseDetail(LessonCoursewareDetailWrapper.LessonCoursewareDetail lessonCoursewareDetail);
 
+    boolean filterAndUpdateKnowledgePointList(CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail courseScheduleCoursewareDetail, String search);
+
     /**
      * 关联课程类型
      */

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumMusicServiceImpl.java

@@ -620,6 +620,39 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         return lessonCoursewareDetail;
     }
 
+    @Override
+    public boolean filterAndUpdateKnowledgePointList(CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail courseScheduleCoursewareDetail, String search) {
+        List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList = courseScheduleCoursewareDetail.getKnowledgePointList();
+        if (CollectionUtils.isEmpty(knowledgePointList)) {
+            return false; // 如果 knowledgePointList 为空,直接返回 false,后续会删除该 courseScheduleCoursewareDetail
+        }
+
+        // 过滤 KnowledgePointSmall
+        knowledgePointList.removeIf(knowledgePointSmall -> !filterKnowledgePoint(knowledgePointSmall, search));
+        courseScheduleCoursewareDetail.setKnowledgePointList(knowledgePointList);
+
+        // 如果过滤后的 knowledgePointList 为空,返回 false
+        return CollectionUtils.isNotEmpty(knowledgePointList);
+    }
+
+    private boolean filterKnowledgePoint(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall, String search) {
+        // 过滤 materialList
+        if (CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList())) {
+            filterAndUpdateMaterialList(knowledgePointSmall.getMaterialList(), search);
+        }
+        // 过滤子知识点 children
+        if (CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren())) {
+            knowledgePointSmall.getChildren().removeIf(child -> !filterKnowledgePoint(child, search));
+        }
+        // 保留当前的条件:materialList 不为空 或者 children 不为空,**否则删除当前节点**
+        return CollectionUtils.isNotEmpty(knowledgePointSmall.getMaterialList()) ||
+                CollectionUtils.isNotEmpty(knowledgePointSmall.getChildren());
+    }
+
+    private void filterAndUpdateMaterialList(List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList, String search) {
+        materialList.removeIf(materialSmall -> !materialSmall.getName().contains(search));
+    }
+
     /**
      * 关联课程类型
      *