Parcourir la source

机构专辑分类逻辑

liujc il y a 7 mois
Parent
commit
8fdcd64ebe

+ 0 - 12
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -64,18 +64,6 @@ public class MusicSheetController extends BaseController {
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
     @PreAuthorize("@pcs.hasPermissions('music/sheet/list')")
     public HttpResponseResult<PageInfo<MusicSheetVoResult>> list(@RequestBody MusicSheetSearch query) {
-        if (query.getProviderType() == SourceTypeEnum.TENANT &&  !StringUtil.isEmpty(query.getSubjectType())) {
-            Long categoryId = null;
-            if (SubjectTypeEnum.SUBJECT.name().equals(query.getSubjectType())) {
-                categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_SUBJECT_TYPE_CATEGORY));
-            } else if (SubjectTypeEnum.ENSEMBLE.name().equals(query.getSubjectType())) {
-                categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_ENSEMBLE_TYPE_CATEGORY));
-            } if (SubjectTypeEnum.MUSIC.name().equals(query.getSubjectType())) {
-                categoryId = Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_MUSIC_TYPE_CATEGORY));
-            }
-            List<Integer> integers = musicFeignClientService.getAllCategoryIdList(String.valueOf(categoryId)).feignData();
-            query.setTenantCategoryIds(integers);
-        }
         return succeed(PageUtil.pageInfo(musicSheetService.selectCbsPage(PageUtil.getPage(query), query)));
     }
 

+ 77 - 41
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/TenantAlbumController.java

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SubjectTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumMusicWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -68,6 +69,14 @@ public class TenantAlbumController {
     private MusicFeignClientService musicFeignClientService;
     @Autowired
     private SysConfigService sysConfigService;
+
+
+    @Autowired
+    private SubjectService subjectService;
+
+    @Autowired
+    private MusicTagService musicTagService;
+
     /**
      * 查询分页
      *
@@ -98,66 +107,93 @@ public class TenantAlbumController {
         }
 
 
+        TenantAlbumWrapper.TenantAlbum vo = JSON.parseObject(JSON.toJSONString(tenantAlbum),
+            TenantAlbumWrapper.TenantAlbum.class);
+
         List<TenantAlbumMusic> tenantAlbumMusics = tenantAlbumMusicService.lambdaQuery()
             .eq(TenantAlbumMusic::getTenantAlbumId, id)
             .eq(TenantAlbumMusic::getSubjectType, SubjectTypeEnum.valueOf(subjectType))
             .eq(TenantAlbumMusic::getDelFlag, false)
-            .orderByAsc(TenantAlbumMusic::getSortNumber,TenantAlbumMusic::getId)
             .list();
-        if (CollectionUtils.isEmpty(tenantAlbumMusics)) {
-            return HttpResponseResult.succeed();
-        }
 
-        if (subjectType.equals(SubjectTypeEnum.COURSEWARE.name())) {
-            List<Long> coursewareList = tenantAlbumMusics.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+        Map<SubjectTypeEnum, List<TenantAlbumMusic>> groupByType =
+            tenantAlbumMusics.stream().collect(Collectors.groupingBy(TenantAlbumMusic::getSubjectType));
+
+
+        List<Long> musicSheetIdlist = tenantAlbumMusics.stream()
+            .filter(o ->o.getSubjectType() !=SubjectTypeEnum.COURSEWARE)
+            .map(TenantAlbumMusic::getMusicSheetId).distinct()
+            .collect(Collectors.toList());
+        // 过滤出课件
+        List<Long> coursewareList = tenantAlbumMusics.stream()
+            .filter(o -> o.getSubjectType() == SubjectTypeEnum.COURSEWARE)
+            .map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList());
+        Map<Long,CbsLessonCoursewareWrapper.Entity> coursewareDtoMap = new HashMap<>();
+
+        if (CollectionUtils.isNotEmpty(coursewareList)) {
             List<CbsLessonCoursewareWrapper.Entity> entities = coursewareFeignService
                 .lessonCoursewareLambdaQuery(CbsLessonCoursewareWrapper.LambdaQuery.builder().ids(coursewareList).build()).feignData();
-            return HttpResponseResult.succeed(entities.stream().map(o -> {
-                TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
-                tenantAlbumSheet.setId(o.getId().toString());
-                tenantAlbumSheet.setMusicSheetName(o.getName());
-                tenantAlbumSheet.setTitleImg(o.getCoverImg());
-                tenantAlbumSheet.setMusicSubject(o.getCourseTypeCode());
-                tenantAlbumSheet.setMusicSubjectName(ECourseType.valueOf(o.getCourseTypeCode()).getName());
-                return tenantAlbumSheet;
-            }).collect(Collectors.toList()));
-        } else {
-
-            String cbsTenantAppId = sysConfigService.findConfigValue(SysConfigConstant.CBS_TENANT_APP_ID);
-            Long categoryId = getCategoryId(subjectType);
+            coursewareDtoMap.putAll(entities.stream().collect(Collectors.toMap(CbsLessonCoursewareWrapper.Entity::getId, Function.identity())));
+        }
 
-            List<Long> musicSheetIdlist = tenantAlbumMusics.stream().map(TenantAlbumMusic::getMusicSheetId).collect(Collectors.toList());
+        Map<Long, MusicSheetVo> idMsMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(musicSheetIdlist)) {
             StudentMusicSheetSearch search = new StudentMusicSheetSearch();
             search.setMusicSheetIdlist(musicSheetIdlist);
-            search.setProviderType(SourceTypeEnum.TENANT);
             search.setPage(1);
             search.setRows(9999);
             IPage<MusicSheetVo> records = musicSheetService.selectStudentPage(PageUtil.getPage(search), search, null);
+            idMsMap.putAll(records.getRecords().stream()
+                .collect(Collectors.toMap(MusicSheet::getId, Function.identity())));
+        }
+        List<TenantAlbumWrapper.TenantAlbumSheet> tenantAlbumSheets = new ArrayList<>();
+        groupByType.forEach((key, value) -> {
+            value.sort(Comparator.comparing(TenantAlbumMusic::getSortNumber));
+            TenantAlbumWrapper.MusicSheetData sheetData = new TenantAlbumWrapper.MusicSheetData();
+            sheetData.setSubjectType(key);
+            tenantAlbumSheets.addAll(value.stream().map(next -> {
 
-            // 获取分类ID
-            List<MusicSheetVo> records1 = records.getRecords();
-            if (CollectionUtils.isEmpty(records1)) {
-                return HttpResponseResult.succeed();
-            }
-
-            List<MusicSheetCategoriesWrapper.MusicSheetCategories> musicSheetCategories = musicFeignClientService.queryTreeByAppId(Long.parseLong(cbsTenantAppId)).feignData();
-
-            return HttpResponseResult.succeed(records1.stream().map(o -> {
                 TenantAlbumWrapper.TenantAlbumSheet tenantAlbumSheet = new TenantAlbumWrapper.TenantAlbumSheet();
-                tenantAlbumSheet.setId(o.getId().toString());
-                tenantAlbumSheet.setMusicSheetName(o.getMusicSheetName());
-                tenantAlbumSheet.setMusicTag(o.getMusicTag());
-                tenantAlbumSheet.setComposer(o.getComposer());
-                tenantAlbumSheet.setMusicSubject(o.getMusicSubject());
-                tenantAlbumSheet.setMusicSubjectName(o.getSubjectNames());
-                tenantAlbumSheet.setErrFlag(true);
-                tenantAlbumSheet.setLoop(true);
-                tenantAlbumSheet.setMusicTagName(updateCategory(musicSheetCategories, categoryId, o.getTenantCategoryId(),tenantAlbumSheet));
+                BeanUtils.copyProperties(next, tenantAlbumSheet);
+                Long musicSheetId = tenantAlbumSheet.getMusicSheetId();
+                switch (key) {
+                    case COURSEWARE:
+                        CbsLessonCoursewareWrapper.Entity entity = coursewareDtoMap.get(musicSheetId);
+                        if (entity != null) {
+                            tenantAlbumSheet.setMusicSheetName(entity.getName());
+                            tenantAlbumSheet.setTitleImg(entity.getCoverImg());
+                            tenantAlbumSheet.setMusicSubject(entity.getCourseTypeCode());
+                            tenantAlbumSheet.setMusicSubjectName(ECourseType.valueOf(entity.getCourseTypeCode()).getName());
+                        } else {
+                            return null;
+                        }
+                        break;
+                    case MUSIC:
+                    case SUBJECT:
+                    case ENSEMBLE:
+                    {
+                        MusicSheetVo musicSheet = idMsMap.get(musicSheetId);
+                        if (musicSheet == null) {
+                            return null;
+                        }
+                        tenantAlbumSheet.setMusicSheetName(musicSheet.getMusicSheetName());
+                        tenantAlbumSheet.setMusicTag(musicSheet.getMusicTag());
+                        tenantAlbumSheet.setComposer(musicSheet.getComposer());
+                        tenantAlbumSheet.setMusicSubject(musicSheet.getMusicSubject());
+                        tenantAlbumSheet.setMusicSubjectName(musicSheet.getSubjectNames());
+                        tenantAlbumSheet.setMusicTagName(musicSheet.getMusicTagNames());
+
+                    }
+                    break;
+                    default:
+                        break;
+                }
 
                 return tenantAlbumSheet;
-            }).collect(Collectors.toList()));
-        }
+            }).filter(Objects::nonNull).collect(Collectors.toList()));
 
+        });
+        return HttpResponseResult.succeed(tenantAlbumSheets);
 
     }
 

+ 2 - 28
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/TenantMusicSheetApplicationExtendController.java

@@ -50,17 +50,6 @@ public class TenantMusicSheetApplicationExtendController {
     @PreAuthorize("@pcs.hasPermissions('tenantMusicSheetApplicationExtend/pageByApplication')")
     @PostMapping({"/pageByApplication"})
     public R<PageInfo<MusicSheetWrapper.MusicSheetApplication>> musicSheetPageByApplication(@RequestBody MusicSheetWrapper.MusicSheetApplicationQuery var1){
-        if (StringUtils.isNotBlank(var1.getSubjectType()) && var1.getMusicCategoryId() == null) {
-            Long categoryId = null;
-            if (SubjectTypeEnum.SUBJECT.name().equals(var1.getSubjectType())) {
-                categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_SUBJECT_TYPE_CATEGORY));
-            } else if (SubjectTypeEnum.ENSEMBLE.name().equals(var1.getSubjectType())) {
-                categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_ENSEMBLE_TYPE_CATEGORY));
-            } if (SubjectTypeEnum.MUSIC.name().equals(var1.getSubjectType())) {
-                categoryId = Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_MUSIC_TYPE_CATEGORY));
-            }
-            var1.setMusicCategoryId(categoryId);
-        }
 
         return R.from(musicSheetService.tenantPage(var1));
     }
@@ -162,25 +151,10 @@ public class TenantMusicSheetApplicationExtendController {
     @PostMapping("/categoryList")
     public R<List<MusicSheetCategoriesWrapper.MusicSheetCategories>> categoryList(String type) {
 
-        if (StringUtils.isBlank(type)) {
-            String cbsTenantAppId = sysConfigService.findConfigValue(SysConfigConstant.CBS_TENANT_APP_ID);
-
-            return R.from(musicFeignClientService.queryTreeByAppId(Long.parseLong(cbsTenantAppId)).feignData());
-        }
+        String cbsTenantAppId = sysConfigService.findConfigValue(SysConfigConstant.CBS_TENANT_APP_ID);
 
-        if (StringUtils.isBlank(type)) {
-            return null;
-        }
-        Long categoryId = null;
-        if (SubjectTypeEnum.SUBJECT.name().equals(type)) {
-            categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_SUBJECT_TYPE_CATEGORY));
-        } else if (SubjectTypeEnum.ENSEMBLE.name().equals(type)) {
-            categoryId= Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_ENSEMBLE_TYPE_CATEGORY));
-        } if (SubjectTypeEnum.MUSIC.name().equals(type)) {
-            categoryId = Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_MUSIC_TYPE_CATEGORY));
-        }
+        return R.from(musicFeignClientService.queryTreeByAppId(Long.parseLong(cbsTenantAppId)).feignData());
 
-        return R.from(musicFeignClientService.getChildTreeById(categoryId).feignData().getMusicSheetCategoriesList());
     }
 
     @ApiOperation(value = "删除应用扩展信息", notes = "曲目应用拓展表- 传入 MusicSheetApplicationExtendWrapper.MusicSheetApplicationExtend")

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -34,6 +35,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 机构专辑曲目
@@ -105,20 +107,6 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
                                                                              TenantAlbumMusicWrapper.StudentTenantAlbumMusicQuery query) {
         List<TenantAlbumMusicWrapper.StudentTenantAlbumMusic> musicSheets = new ArrayList<>();
         if (query.getSubjectType() != SubjectTypeEnum.COURSEWARE) {
-            // 如果分类不为空,查询分类下的曲目
-            List<Long> categoryIds = new ArrayList<>();
-            if (query.getCategoryId() !=null) {
-            } else {
-                Long categoryId = getCategoryId(query.getSubjectType().name());
-                query.setCategoryId(categoryId);
-            }
-            MusicSheetCategoriesWrapper.MusicSheetCategories musicSheetCategories = musicFeignClientService.getChildTreeById(query.getCategoryId()).feignData();
-
-            categoryIds.add(query.getCategoryId());
-            if (musicSheetCategories !=null) {
-                formatCategory(categoryIds, musicSheetCategories.getMusicSheetCategoriesList());
-            }
-            query.setCategoryIds(categoryIds);
 
             musicSheets = tenantAlbumMusicMapper.selectPage(page, query);
             if (CollectionUtils.isEmpty(musicSheets)) {
@@ -227,16 +215,6 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         return page.setRecords(musicSheets);
     }
 
-    private void formatCategory(List<Long> categoryIds, List<MusicSheetCategoriesWrapper.MusicSheetCategories> musicSheetCategoriesList) {
-        if (CollectionUtils.isEmpty(musicSheetCategoriesList)) {
-            return;
-        }
-        for (MusicSheetCategoriesWrapper.MusicSheetCategories musicSheetCategories : musicSheetCategoriesList) {
-            categoryIds.add(musicSheetCategories.getId());
-            formatCategory(categoryIds,musicSheetCategories.getMusicSheetCategoriesList());
-        }
-    }
-
     /**
      * 添加
      * @param tenantAlbumMusic TenantAlbumMusicWrapper.TenantAlbumMusic
@@ -307,46 +285,32 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
             return data;
         }
 
-        // 获取曲目所有分类
-        List<Long> categoryIds = musicSheets.stream().map(MusicSheet::getTenantCategoryId)
-            .filter(StringUtils::isNotBlank).map(Long::parseLong).distinct().collect(Collectors.toList());
-
-
-        // 查询分类
-        MusicSheetCategoriesWrapper.MusicSheetCategories musicSheetCategories = musicFeignClientService.getChildTreeById(getCategoryId(query.getSubjectType().name())).feignData();
-
-        // 过滤掉不存在的分类
-        List<Long> ids = new ArrayList<>();
-        getCategory(musicSheetCategories.getMusicSheetCategoriesList(),categoryIds,ids);
-        filterCategory(musicSheetCategories.getMusicSheetCategoriesList(),ids);
-        data.setCategoyList(musicSheetCategories.getMusicSheetCategoriesList());
-
         // 类型
-//        List<Long> typeIds =list.stream().map(TenantAlbumMusic::getType).distinct().filter(StringUtils::isNotBlank)
-//                .filter(NumberUtil::isNumber).map(Long::valueOf).collect(Collectors.toList());
-//        if (!typeIds.isEmpty()) {
-//            List<TenantAlbumCategoryDetail> typeList = tenantAlbumCategoryDetailService.lambdaQuery()
-//                    .in(TenantAlbumCategoryDetail::getId, typeIds).list();
-//            List<String> typeNameList = typeList.stream()
-//                    .map(TenantAlbumCategoryDetail::getValue).collect(Collectors.toList());
-//            data.setTypes(typeNameList);
-//            data.setTypeList(typeList);
-//        } else {
-//            data.setTypes(new ArrayList<>());
-//        }
-//        // 级别
-//        List<Long> levelIds =list.stream().map(TenantAlbumMusic::getLevel).distinct().filter(StringUtils::isNotBlank)
-//                .filter(NumberUtil::isNumber).map(Long::valueOf).collect(Collectors.toList());
-//        if (!levelIds.isEmpty()) {
-//            List<TenantAlbumCategoryDetail> levelList = tenantAlbumCategoryDetailService.lambdaQuery()
-//                    .in(TenantAlbumCategoryDetail::getId, levelIds).list();
-//            List<String> levelNameList = levelList.stream()
-//                    .map(TenantAlbumCategoryDetail::getValue).collect(Collectors.toList());
-//            data.setLevels(levelNameList);
-//            data.setLevelList(levelList);
-//        } else {
-//            data.setLevels(new ArrayList<>());
-//        }
+        List<Long> typeIds =list.stream().map(TenantAlbumMusic::getType).distinct().filter(StringUtils::isNotBlank)
+                .filter(NumberUtil::isNumber).map(Long::valueOf).collect(Collectors.toList());
+        if (!typeIds.isEmpty()) {
+            List<TenantAlbumCategoryDetail> typeList = tenantAlbumCategoryDetailService.lambdaQuery()
+                    .in(TenantAlbumCategoryDetail::getId, typeIds).list();
+            List<String> typeNameList = typeList.stream()
+                    .map(TenantAlbumCategoryDetail::getValue).collect(Collectors.toList());
+            data.setTypes(typeNameList);
+            data.setTypeList(typeList);
+        } else {
+            data.setTypes(new ArrayList<>());
+        }
+        // 级别
+        List<Long> levelIds =list.stream().map(TenantAlbumMusic::getLevel).distinct().filter(StringUtils::isNotBlank)
+                .filter(NumberUtil::isNumber).map(Long::valueOf).collect(Collectors.toList());
+        if (!levelIds.isEmpty()) {
+            List<TenantAlbumCategoryDetail> levelList = tenantAlbumCategoryDetailService.lambdaQuery()
+                    .in(TenantAlbumCategoryDetail::getId, levelIds).list();
+            List<String> levelNameList = levelList.stream()
+                    .map(TenantAlbumCategoryDetail::getValue).collect(Collectors.toList());
+            data.setLevels(levelNameList);
+            data.setLevelList(levelList);
+        } else {
+            data.setLevels(new ArrayList<>());
+        }
 
         // 声部
         String subjectIds = musicSheets.stream()
@@ -376,59 +340,6 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
 
     }
 
-    private void filterCategory(List<MusicSheetCategoriesWrapper.MusicSheetCategories> musicSheetCategoriesList, List<Long> ids) {
-        if (CollectionUtils.isEmpty(musicSheetCategoriesList)) {
-            return;
-        }
-        for (int i = 0; i < musicSheetCategoriesList.size(); i++) {
-            MusicSheetCategoriesWrapper.MusicSheetCategories musicSheetCategories = musicSheetCategoriesList.get(i);
-            if (!ids.contains(musicSheetCategories.getId())) {
-                musicSheetCategoriesList.remove(i);
-                i--;
-                continue;
-            }
-            if (CollectionUtils.isNotEmpty(musicSheetCategories.getMusicSheetCategoriesList())) {
-                filterCategory(musicSheetCategories.getMusicSheetCategoriesList(), ids);
-            }
-        }
-    }
-
-    private boolean getCategory(List<MusicSheetCategoriesWrapper.MusicSheetCategories> musicSheetCategoriesList,
-                                List<Long> categoryIds, List<Long> result) {
-        boolean flag = false;
-        if (CollectionUtils.isEmpty(musicSheetCategoriesList)) {
-            return flag;
-        }
-        for (MusicSheetCategoriesWrapper.MusicSheetCategories musicSheetCategories : musicSheetCategoriesList) {
-            if (categoryIds.contains(musicSheetCategories.getId())) {
-                result.add(musicSheetCategories.getId());
-                flag = true;
-            }
-            if (CollectionUtils.isNotEmpty(musicSheetCategories.getMusicSheetCategoriesList())) {
-                boolean b = getCategory(musicSheetCategories.getMusicSheetCategoriesList(), categoryIds, result);
-                if (b) {
-                    result.add(musicSheetCategories.getId());
-                }
-                flag = flag || b;
-            }
-        }
-        return flag;
-    }
-
-    private Long getCategoryId(String subjectType) {
-        if (StringUtils.isBlank(subjectType)) {
-            return null;
-        }
-        if (SubjectTypeEnum.SUBJECT.name().equals(subjectType)) {
-            return Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_SUBJECT_TYPE_CATEGORY));
-        } else if (SubjectTypeEnum.ENSEMBLE.name().equals(subjectType)) {
-            return Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_ENSEMBLE_TYPE_CATEGORY));
-        } if (SubjectTypeEnum.MUSIC.name().equals(subjectType)) {
-            return Long.parseLong(sysConfigService.findConfigValue(SysConfigConstant.TENANT_ALBUM_MUSIC_TYPE_CATEGORY));
-        }
-        return null;
-    }
-
     private List<ECourseType> courseTypeBySubject(Long subjectId) {
         List<ECourseType> courseTypeList = new ArrayList<>();