Browse Source

曲目是否能使用

刘俊驰 4 months ago
parent
commit
e7e578b5e0

+ 97 - 10
mec-application/src/main/java/com/ym/mec/student/controller/LessonCoursewareController.java

@@ -7,24 +7,27 @@ import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWra
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
+import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
-import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
-import com.ym.mec.biz.service.LessonCoursewareService;
-import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.SysUserService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("${app-config.url.student:}/lessonCourseware")
 @Api(tags = "课件教材")
@@ -42,22 +45,87 @@ public class LessonCoursewareController extends BaseController {
 	@Resource
 	private CbsMusicScoreCategoriesService cbsMusicScoreCategoriesService;
 
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
+    @Autowired
+    private MemberRankCourseTypeMapperService memberRankCourseTypeMapperService;
+
+    @Autowired
+    private MemberRankCategoryMapperService memberRankCategoryMapperService;
+
 	@ApiOperation(value = "分页查询已添加的课件")
 	@PostMapping("/queryLessonCourseware")
 	public HttpResponseResult<PageInfo<LessonCoursewareWrapper.LessonCoursewareDto>> queryLessonCourseware(@RequestBody LessonCoursewareWrapper.LessonCoursewareQuery query){
 		query.setEnable(true);
 		query.setStudentId(sysUserService.getUserId());
 		IPage<LessonCoursewareWrapper.LessonCoursewareDto> pages = lessonCoursewareService.selectPage(QueryInfo.getPage(query), query);
-		return succeed(PageUtil.pageInfo(pages));
+        List<LessonCoursewareWrapper.LessonCoursewareDto> records = pages.getRecords();
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            // 根据用户会员判断是否锁定
+            // 查询有效的会员
+            List<Integer> courseIds = getCourseIds();
+
+            // 判断曲目是否在分类中
+            for (LessonCoursewareWrapper.LessonCoursewareDto row : records) {
+                if (courseIds.contains(row.getId())) {
+                    row.setUseStatus("UNLOCK");
+                } else  {
+                    row.setUseStatus("LOCK");
+                }
+            }
+        }
+
+        return succeed(PageUtil.pageInfo(pages));
 	}
 
 	@ApiOperation(value = "获取课件详情")
 	@GetMapping("/getLessonCoursewareDetail/{id}")
-	public HttpResponseResult<CbsLessonCoursewareWrapper.LessonCourseware> getLessonCoursewareDetail(@PathVariable("id") Long id){
-		return succeed(coursewareFeignService.lessonCoursewareDetail(id).feignData());
+	public HttpResponseResult<LessonCoursewareWrapper.LessonCoursewareExtend> getLessonCoursewareDetail(@PathVariable("id") Long id){
+        CbsLessonCoursewareWrapper.LessonCourseware lessonCourseware = coursewareFeignService.lessonCoursewareDetail(id).feignData();
+        if (lessonCourseware == null) {
+            return succeed();
+        }
+        //使用课件ID查询应用这边的ID
+        LessonCourseware lessonCourseware1 = lessonCoursewareService.getByLessonCoursewareId(id);
+        if (lessonCourseware1 == null) {
+            throw new BizException("课件不存在");
+        }
+
+        LessonCoursewareWrapper.LessonCoursewareExtend lessonCoursewareExtend = JSONObject
+            .parseObject(JSONObject.toJSONString(lessonCourseware), LessonCoursewareWrapper.LessonCoursewareExtend.class);
+        // 根据用户会员判断是否锁定
+        // 查询有效的会员
+        List<Integer> courseIds = getCourseIds();
+
+
+        // 判断曲目是否在分类中
+        if (courseIds.contains(lessonCourseware1.getId())) {
+            lessonCoursewareExtend.setUseStatus("UNLOCK");
+        } else {
+            lessonCoursewareExtend.setUseStatus("LOCK");
+        }
+
+        return succeed(lessonCoursewareExtend);
 	}
 
-	@ApiOperation(value = "获取课件关联的课程列表")
+    @NotNull
+    private List<Integer> getCourseIds() {
+        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(sysUserService.getUserId());
+
+        // 获取会员的曲目分类
+
+        List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(activationVipIds);
+        if (CollectionUtils.isEmpty(courseTypeMapperList)) {
+            courseTypeMapperList = new ArrayList<>();
+        }
+        List<Integer> categoryIds = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType)
+            .distinct().map(Integer::parseInt).collect(Collectors.toList());
+        return categoryIds;
+    }
+
+    @ApiOperation(value = "获取课件关联的课程列表")
 	@GetMapping("/getLessonCoursewareCourseList/{id}")
 	public HttpResponseResult<List<LessonCoursewareWrapper.CourseScheduleCoursewareDetail>> getLessonCoursewareCourseList(@PathVariable("id") Long id){
 		List<CbsLessonCoursewareWrapper.CourseScheduleCoursewareDetail> courseScheduleCoursewareDetails = coursewareFeignService.coursewareDetail(id).feignData();
@@ -73,9 +141,28 @@ public class LessonCoursewareController extends BaseController {
 	@GetMapping("/getLessonCourseDetail/{id}")
 	public HttpResponseResult<CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail> getLessonCourseDetail(@PathVariable("id") Long id){
 		SysUser sysUser = sysUserService.getUser();
+        // 机构可用曲目分类
 		String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
 		List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
-		return succeed(lessonCoursewareService.getLessonCourseDetail(id,categoryIdList));
+
+        // 学生会员可用曲目分类
+        Integer userId = sysUserService.getUserId();
+        List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(userId);
+
+        // 获取会员的曲目分类
+
+        List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(activationVipIds);
+        if (CollectionUtils.isEmpty(categoryMapperList)) {
+            categoryMapperList = new ArrayList<>();
+        }
+        List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId)
+            .distinct().collect(Collectors.toList());
+        LessonCoursewareWrapper.LessonCoursewareDetailQuery query = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+        query.setLessonCoursewareDetailId(id);
+        query.setUserType(ClientEnum.STUDENT);
+        query.setTenantCategoriesIdList(categoryIdList);
+        query.setStudentCategoriesIdList(categoryIds);
+		return succeed(lessonCoursewareService.getLessonCourseDetail(query));
 	}
 
 	@ApiOperation(value = "获取课件关联的声部列表")

+ 7 - 0
mec-application/src/main/java/com/ym/mec/student/controller/SysMusicScoreController.java

@@ -1,8 +1,10 @@
 package com.ym.mec.student.controller;
 
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
 import com.ym.mec.biz.service.SysMusicScoreService;
+import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -20,9 +22,14 @@ public class SysMusicScoreController extends BaseController {
     @Resource
     private SysMusicScoreService sysMusicScoreService;
 
+    @Resource
+    private SysUserService sysUserService;
     @ApiOperation(value = "分页查询")
     @GetMapping("/queryPage2")
     public Object queryPage2(SysExamSongQueryInfo queryInfo) {
+        Integer userId = sysUserService.getUserId();
+        queryInfo.setUserId(userId);
+        queryInfo.setUserType(ClientEnum.STUDENT);
         queryInfo.setType("COMMON");
         queryInfo.setClientFlag(true);
         queryInfo.setClientType(ClientTypeEnum.SMART_PRACTICE);

+ 6 - 1
mec-application/src/main/java/com/ym/mec/teacher/controller/LessonCoursewareController.java

@@ -12,6 +12,7 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.CbsMusicScoreCategoriesService;
 import com.ym.mec.biz.service.LessonCoursewareService;
@@ -94,7 +95,11 @@ public class LessonCoursewareController extends BaseController {
 		SysUser sysUser = sysUserService.getUser();
 		String teachingMaterialIds = organizationService.getTeachingMaterialIds(sysUser.getOrganId().toString(),sysUser.getTenantId());
 		List<Integer> categoryIdList = cbsMusicScoreCategoriesService.getAllCategoryIdList(teachingMaterialIds);
-		return succeed(lessonCoursewareService.getLessonCourseDetail(id,categoryIdList));
+        LessonCoursewareWrapper.LessonCoursewareDetailQuery query = new LessonCoursewareWrapper.LessonCoursewareDetailQuery();
+        query.setLessonCoursewareDetailId(id);
+        query.setUserType(ClientEnum.TEACHER);
+        query.setTenantCategoriesIdList(categoryIdList);
+		return succeed(lessonCoursewareService.getLessonCourseDetail(query));
 	}
 
 	@ApiOperation(value = "获取课件关联的声部列表")

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CloudTeacherOrderDao.java

@@ -134,4 +134,6 @@ public interface CloudTeacherOrderDao extends BaseDAO<Long, CloudTeacherOrder> {
     int countByMemberRankSettingId(@Param("memberRankSettingId") Integer memberRankSettingId);
 
     Date getActivationMaxTime(@Param("studentId") Integer studentId, @Param("level") Integer level);
+
+    List<Integer> getActivationVipIds(Integer userId);
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMusicScore.java

@@ -179,9 +179,11 @@ public class SysMusicScore {
 	private String accJianPdfUrl;
 
     @ApiModelProperty("曲目状态 ")
-
 	private List<SysMusicScoreAccompaniment> background;
 
+    @ApiModelProperty("使用状态 试用: FREE 锁定: LOCK 解锁:UNLOCK")
+    private String useStatus;
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/SysExamSongQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.ClientTypeEnum;
 import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.ApiModelProperty;
@@ -57,4 +58,10 @@ public class SysExamSongQueryInfo extends QueryInfo {
 
     @ApiModelProperty("谱面类型")
     private String scoreType;
+
+    @ApiModelProperty("用户ID")
+    private Integer userId;
+
+    @ApiModelProperty("用户类型")
+    private ClientEnum userType;
 }

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/LessonCoursewareWrapper.java

@@ -2,9 +2,11 @@ package com.ym.mec.biz.dal.wrapper;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWrapper;
+import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.dto.im.BasicUserInfo;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.models.auth.In;
@@ -108,6 +110,10 @@ public class LessonCoursewareWrapper {
 
         @ApiModelProperty(value = "创建时间")
         private String createTime;
+
+
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
     }
 
     @Data
@@ -225,4 +231,35 @@ public class LessonCoursewareWrapper {
         private Integer teacherId;
     }
 
+    @Data
+    public static class LessonCoursewareExtend extends CbsLessonCoursewareWrapper.LessonCourseware{
+
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
+    }
+
+    @Data
+    public static class LessonCoursewareDetailQuery{
+
+
+        @ApiModelProperty(value = "课件详情ID")
+        private Long lessonCoursewareDetailId;
+
+        @ApiModelProperty("用户类型")
+        private ClientEnum userType;
+
+        @ApiModelProperty("机构可用曲目分类ID")
+        private List<Integer> tenantCategoriesIdList;
+
+        @ApiModelProperty("学生会员曲目分类ID")
+        private List<Integer> studentCategoriesIdList;
+
+    }
+
+    @Data
+    public static class AddMaterialRefExtend{
+
+        @ApiModelProperty("使用状态 锁定: LOCK 解锁:UNLOCK")
+        private String useStatus;
+    }
 }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/LessonCoursewareService.java

@@ -22,8 +22,10 @@ public interface LessonCoursewareService extends IService<LessonCourseware> {
     //获取课件适用范围
     LessonCoursewareWrapper.UpdateRangeDetail getRangeType(Integer lessonCoursewareId);
 
-    CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(Long id,List<Integer> categoryIdList);
+    CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(LessonCoursewareWrapper.LessonCoursewareDetailQuery query);
 
     List<LessonCoursewareWrapper.RefLevelDetailInfo> refLevel(LessonCoursewareWrapper.RefLevelQuery query);
+
+    LessonCourseware getByLessonCoursewareId(Long lessonCoursewareId);
 }
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MemberRankCourseTypeMapperService.java

@@ -13,7 +13,7 @@ public interface MemberRankCourseTypeMapperService extends IService<MemberRankCo
 
     void batchInsert(Integer memberRankSettingId, List<String> memberCourseTypeList);
 
-    List<MemberRankCourseTypeMapper> getByMemberRankId(Integer memberRankSettingId);
+    List<MemberRankCourseTypeMapper> getByMemberRankId(List<Integer> memberRankSettingId);
 
     void deleteByRankSettingId(Integer memberRankSettingId);
 }

+ 34 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/LessonCoursewareServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.entity.LessonCourseware;
 import com.ym.mec.biz.dal.entity.LessonCoursewareUserMapper;
 import com.ym.mec.biz.dal.entity.SysMusicScore;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.mapper.LessonCoursewareMapper;
 import com.ym.mec.biz.dal.wrapper.LessonCoursewareWrapper;
 import com.ym.mec.biz.service.LessonCoursewareService;
@@ -194,13 +195,14 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
     }
 
     @Override
-    public CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(Long id,List<Integer> categoryIdList) {
-        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail detail = coursewareFeignService.lessonCoursewareDetailDetail(id).feignData();
+    public CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(LessonCoursewareWrapper.LessonCoursewareDetailQuery query) {
+        CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail detail = coursewareFeignService
+            .lessonCoursewareDetailDetail(query.getLessonCoursewareDetailId()).feignData();
         if (detail == null) {
             return null;
         }
         //获取知识点下的素材列表、下面关联的资源列表,如果applicationIdList是空的,那么把他剔除掉
-        this.setTreeResourceId(detail.getKnowledgePointList(),categoryIdList);
+        this.setTreeResourceId(detail.getKnowledgePointList(),query);
         return detail;
     }
 
@@ -280,6 +282,17 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
         return result;
     }
 
+    @Override
+    public LessonCourseware getByLessonCoursewareId(Long lessonCoursewareId) {
+        List<LessonCourseware> list = lambdaQuery()
+            .eq(LessonCourseware::getLessonCourseId, lessonCoursewareId)
+            .list();
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+
     private LessonCoursewareWrapper.RefLevelDetailInfo initRefLevelDetailInfo(CbsLessonCoursewareDetailWrapper.LessonCoursewareDetail coursewareDetail,
                                                                               CbsLessonCoursewareWrapper.LessonCourseware lessonCourseware) {
         LessonCoursewareWrapper.RefLevelDetailInfo refLevelDetailInfo = new LessonCoursewareWrapper.RefLevelDetailInfo();
@@ -294,20 +307,20 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
     }
 
     //递归处理CbsLessonCoursewareDetailWrapper.KnowledgePointSmall
-    private void setTreeResourceId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,List<Integer> categoryIdList){
+    private void setTreeResourceId(List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList,LessonCoursewareWrapper.LessonCoursewareDetailQuery query){
         if(CollectionUtils.isNotEmpty(knowledgePointList)){
             knowledgePointList.forEach(knowledgePointSmall -> {
-                this.setResourceId(knowledgePointSmall,categoryIdList);
+                this.setResourceId(knowledgePointSmall,query);
                 List<CbsLessonCoursewareDetailWrapper.KnowledgePointSmall> children = knowledgePointSmall.getChildren();
                 if(CollectionUtils.isNotEmpty(children)){
-                    this.setTreeResourceId(children,categoryIdList);
+                    this.setTreeResourceId(children,query);
                 }
             });
         }
     }
 
 
-    private void setResourceId(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall,List<Integer> categoryIdList){
+    private void setResourceId(CbsLessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall,LessonCoursewareWrapper.LessonCoursewareDetailQuery query){
         List<CbsLessonCoursewareDetailWrapper.MaterialSmall> materialList = knowledgePointSmall.getMaterialList();
         if(CollectionUtils.isNotEmpty(materialList)){
             for (CbsLessonCoursewareDetailWrapper.MaterialSmall materialSmall : materialList) {
@@ -329,8 +342,21 @@ public class LessonCoursewareServiceImpl extends ServiceImpl<LessonCoursewareMap
                                 && CollectionUtils.isNotEmpty(relateMaterialInfo.getApplicationIdList())){
                             SysMusicScore musicScore = sysMusicScoreService.getDao().getCbsId(relateMaterialInfo.getId());
                             if(musicScore != null && musicScore.getShowFlag() == 1 && musicScore.getClientShowFlag() == 1
-                                    && categoryIdList.contains(musicScore.getCbsMusicCategoriesId())) {
+                                    && query.getTenantCategoriesIdList().contains(musicScore.getCbsMusicCategoriesId())) {
                                 materialRef.setResourceIdStr(musicScore.getId().toString());
+                                // 学生需要判断学练宝是否能用
+                                LessonCoursewareWrapper.AddMaterialRefExtend addMaterialRefExtend = new LessonCoursewareWrapper.AddMaterialRefExtend();
+                                if (query.getUserType() !=null && query.getUserType() == ClientEnum.STUDENT) {
+                                    if (StringUtils.isBlank(musicScore.getRankIds())) {
+                                        addMaterialRefExtend.setUseStatus("UNLOCK");
+                                    } else {
+                                        addMaterialRefExtend.setUseStatus(query.getStudentCategoriesIdList()
+                                            .contains(musicScore.getCbsMusicCategoriesId()) ? "UNLOCK" : "LOCK");
+                                    }
+                                } else {
+                                    addMaterialRefExtend.setUseStatus("UNLOCK");
+                                }
+                                materialRef.setExtend(addMaterialRefExtend);
                             }
                         }
                     }

+ 5 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankCourseTypeMapperServiceImpl.java

@@ -37,9 +37,12 @@ public class MemberRankCourseTypeMapperServiceImpl extends ServiceImpl<MemberRan
     }
 
     @Override
-    public List<MemberRankCourseTypeMapper> getByMemberRankId(Integer memberRankSettingId) {
+    public List<MemberRankCourseTypeMapper> getByMemberRankId(List<Integer> memberRankSettingId) {
+        if (CollectionUtils.isEmpty(memberRankSettingId)) {
+            return new ArrayList<>();
+        }
         return lambdaQuery()
-            .eq(MemberRankCourseTypeMapper::getRankId,memberRankSettingId)
+            .in(MemberRankCourseTypeMapper::getRankId,memberRankSettingId)
             .list();
     }
 

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -153,7 +153,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         memberRankSettingDao.insert(object);
         List<Integer> memberPrivilegesItemIdList = memberRankSetting.getMemberPrivilegesItemIdList();
         if (CollectionUtils.isEmpty(memberPrivilegesItemIdList)) {
-            throw new BizException("操作失败:请配置学练宝权益");
+            throw new BizException("操作失败:请配置学练宝功能");
         }
         memberRankPrivilegesDao.batchInsert(object.getId(), memberPrivilegesItemIdList);
         // 设置学练宝曲目分类内容
@@ -182,7 +182,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
         }
 
         // 云课堂集合
-        List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(memberRankSetting.getId());
+        List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(Lists.newArrayList(memberRankSetting.getId()));
         if (CollectionUtils.isNotEmpty(courseTypeMapperList)) {
             result.setMemberCourseTypeList(courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType).collect(Collectors.toList()));
         }
@@ -232,7 +232,7 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
                 }
             }
             // 不能修改云课堂内容
-            List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(memberRankSetting.getId());
+            List<MemberRankCourseTypeMapper> courseTypeMapperList = memberRankCourseTypeMapperService.getByMemberRankId(Lists.newArrayList(memberRankSetting.getId()));
             if (CollectionUtils.isNotEmpty(courseTypeMapperList)) {
                 List<String> courseTypeList = courseTypeMapperList.stream().map(MemberRankCourseTypeMapper::getCourseType).collect(Collectors.toList());
                 List<String> memberCourseTypeList = memberRankSetting.getMemberCourseTypeList();

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreServiceImpl.java

@@ -14,11 +14,13 @@ import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetApplicationExtendCli
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.musicInstrument.CbsMusicalInstrumentWrapper;
 import com.microsvc.toolkit.common.response.template.R;
+import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreAccompanimentDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreCategoriesDao;
 import com.ym.mec.biz.dal.dao.SysMusicScoreDao;
 import com.ym.mec.biz.dal.dto.ReasonDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.ClientEnum;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
 import com.ym.mec.biz.dal.wrapper.MusicSheetWrapper;
@@ -32,6 +34,7 @@ import com.ym.mec.util.collection.MapUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -65,6 +68,12 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
     @Resource
     private InstrumentService instrumentService;
 
+    @Autowired
+    private CloudTeacherOrderDao cloudTeacherOrderDao;
+
+    @Autowired
+    private MemberRankCategoryMapperService memberRankCategoryMapperService;
+
     @Value("${openfeign-client.app-id:1745637981387108354}")
     public Long applicationId;
 
@@ -320,6 +329,32 @@ public class SysMusicScoreServiceImpl extends BaseServiceImpl<Integer, SysMusicS
         PageInfo<SysMusicScore> pageInfo = this.queryPage(queryInfo);
         List<SysMusicScore> rows = pageInfo.getRows();
         dealMusicScoreData(rows);
+
+        // 根据用户会员判断是否锁定,免费曲目为试用
+        if (queryInfo.getUserType()!=null && ClientEnum.STUDENT==queryInfo.getUserType()) {
+            // 查询有效的会员
+            List<Integer> activationVipIds = cloudTeacherOrderDao.getActivationVipIds(queryInfo.getUserId());
+
+            // 获取会员的曲目分类
+            List<MemberRankCategoryMapper> categoryMapperList = memberRankCategoryMapperService.getByMemberRankId(activationVipIds);
+            if (CollectionUtils.isEmpty(categoryMapperList)) {
+                categoryMapperList = new ArrayList<>();
+            }
+            List<Integer> categoryIds = categoryMapperList.stream().map(MemberRankCategoryMapper::getCategoryId).distinct().collect(Collectors.toList());
+
+            // 判断曲目是否在分类中
+            for (SysMusicScore row : rows) {
+                if (categoryIds.contains(row.getCbsMusicCategoriesId())) {
+                    row.setUseStatus("UNLOCK");
+                } else if (StringUtils.isBlank(row.getRankIds())) {
+                    row.setUseStatus("FREE");
+                } else {
+                    row.setUseStatus("LOCK");
+                }
+            }
+        } else {
+            rows.forEach(o->o.setUseStatus("UNLOCK"));
+        }
         return pageInfo;
     }
 

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/CloudTeacherOrderMapper.xml

@@ -618,4 +618,8 @@
     <select id="getActivationMaxTime" resultType="java.util.Date">
         select max(end_time_) from cloud_teacher_order where student_id_ = #{studentId} and level_ = #{level} and status_ = 2
     </select>
+
+    <select id="getActivationVipIds" resultType="java.lang.Integer">
+        select distinct level_ from cloud_teacher_order where student_id_ = #{studentId}  and end_time_ &gt;=now() and status_ = 2
+    </select>
 </mapper>

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/MemberRankSettingMapper.xml

@@ -132,6 +132,7 @@
         <foreach collection="ids" item="id" open="(" close=")" separator=",">
             #{id}
         </foreach>
+        and del_flag_=0
     </select>
 
 	<select id="selectBatchIdsByParentIds" resultMap="MemberRankSetting">
@@ -139,6 +140,7 @@
         <foreach collection="topIds" item="parentId" open="(" close=")" separator=",">
             #{parentId}
         </foreach>
+        and del_flag_=0
     </select>
 
 	<update id="deleteById">

+ 1 - 1
pom.xml

@@ -26,7 +26,7 @@
 		<docker.registry.repository>127.0.0.1:5000</docker.registry.repository>
 		<docker.maven.plugin.version>1.2.2</docker.maven.plugin.version>
 		<com.microsvc.toolkit.version>1.0.8-RC1</com.microsvc.toolkit.version>
-		<cbs.version>1.0.19</cbs.version>
+		<cbs.version>1.0.20</cbs.version>
 	</properties>
 
 	<dependencyManagement>