刘俊驰 5 months ago
parent
commit
ca07884805

+ 34 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TenantAlbumSheetController.java

@@ -5,9 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.dayaedu.cbs.openfeign.client.CoursewareFeignService;
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.common.response.template.R;
+import com.microsvc.toolkit.config.jwt.utils.JwtUserInfo;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.service.TenantAlbumMusicService;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareDetailWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.LessonCoursewareWrapper;
@@ -19,13 +25,18 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 专辑表 web 控制层
@@ -47,6 +58,11 @@ public class TenantAlbumSheetController extends BaseController {
     @Resource
     private CoursewareFeignService coursewareFeignService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private TeacherService teacherService;
 
     @ApiOperation(value = "分页查询")
     @PostMapping("/page")
@@ -97,4 +113,22 @@ public class TenantAlbumSheetController extends BaseController {
         return succeed(tenantAlbumMusicService.getLessonCourseDetail(id));
     }
 
+
+    @ApiOperation(value = "关联课程类型")
+    @PostMapping("/refLevel")
+    public HttpResponseResult<List<LessonCoursewareDetailWrapper.RefLevelDetailInfo>> refLevel(@RequestBody LessonCoursewareDetailWrapper.RefLevelQuery query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        Teacher teacher = teacherService.getById(user.getId());
+        query.setTenantId(Optional.ofNullable(teacher.getTenantId()).orElse(-1L));
+        List<LessonCoursewareDetailWrapper.RefLevelDetailInfo> result = tenantAlbumMusicService.refLevel(query);
+
+        return HttpResponseResult.succeed(result);
+    }
+
+
 }

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

@@ -70,4 +70,9 @@ public interface TenantAlbumMusicService extends IService<TenantAlbumMusic>  {
     LessonCoursewareWrapper.LessonCourseware getLessonCoursewareDetail(LessonCoursewareWrapper.LessonCourseQuery query);
 
     LessonCoursewareDetailWrapper.LessonCoursewareDetail getLessonCourseDetail(String lessoncoursewareDetailId);
+
+    /**
+     * 关联课程类型
+     */
+    List<LessonCoursewareDetailWrapper.RefLevelDetailInfo> refLevel(LessonCoursewareDetailWrapper.RefLevelQuery query);
 }

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

@@ -15,6 +15,7 @@ import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareDetailWra
 import com.dayaedu.cbs.openfeign.wrapper.courseware.CbsLessonCoursewareWrapper;
 import com.dayaedu.cbs.openfeign.wrapper.music.CbsMusicSheetWrapper;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
+import com.microsvc.toolkit.common.response.template.R;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
@@ -519,6 +520,90 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
         return lessonCoursewareDetail;
     }
 
+    /**
+     * 关联课程类型
+     *
+     * @param query
+     */
+    @Override
+    public List<LessonCoursewareDetailWrapper.RefLevelDetailInfo> refLevel(LessonCoursewareDetailWrapper.RefLevelQuery query) {
+        if (query.getTenantId() == null) {
+            return new ArrayList<>();
+        }
+
+        // 查询出机构下的所有可用教材
+        List<TenantAlbumMusic> detail = tenantAlbumMusicService.lambdaQuery()
+            .eq(TenantAlbumMusic::getTenantId, query.getTenantId())
+            .eq(TenantAlbumMusic::getSubjectType, SubjectTypeEnum.COURSEWARE)
+            .eq(TenantAlbumMusic::getDelFlag, false)
+            .list();
+        if (CollectionUtils.isEmpty(detail)) {
+            return new ArrayList<>();
+        }
+
+
+        // 根据机构,查询机构可以查看的所有课件,然后根据课件查询对应的课程类型
+        List<LessonCoursewareDetailWrapper.RefLevelDetailInfo> result = new ArrayList<>();
+        List<CbsLessonCoursewareDetailWrapper.Entity> entities = coursewareFeignService.lessonCoursewareDetailLambdaQuery(CbsLessonCoursewareDetailWrapper.LambdaQuery.builder()
+            .id(query.getLessonCoursewareDetailId())
+            .build()).feignData();
+        if (CollectionUtils.isEmpty(entities)) {
+            throw new BizException("课件不存在");
+        }
+        CbsLessonCoursewareDetailWrapper.Entity lessonCoursewareDetail = entities.get(0);
+        if (lessonCoursewareDetail.getLevel() == null) {
+            return new ArrayList<>();
+        }
+        List<CbsLessonCoursewareWrapper.Entity> lessonCoursewareEntityList = coursewareFeignService.lessonCoursewareLambdaQuery(CbsLessonCoursewareWrapper.LambdaQuery.builder()
+            .id(lessonCoursewareDetail.getLessonCoursewareId())
+            .build()).feignData();
+        if (CollectionUtils.isEmpty(lessonCoursewareEntityList)) {
+            throw new BizException("课件不存在");
+        }
+        CbsLessonCoursewareWrapper.Entity lessonCourseware = lessonCoursewareEntityList.get(0);
+
+        CbsLessonCoursewareWrapper.LessonCoursewareQuery cbsQuery = new CbsLessonCoursewareWrapper.LessonCoursewareQuery();
+        cbsQuery.setEnableFlag(true);
+        cbsQuery.setOrchestraType(lessonCourseware.getOrchestraType());
+        cbsQuery.setLessonCoursewareIds(detail.stream().map(TenantAlbumMusic::getMusicSheetId).distinct().collect(Collectors.toList()));
+        cbsQuery.setPage(1);
+        cbsQuery.setRows(9999);
+        cbsQuery.setLevel(lessonCourseware.getLevel());
+
+        List<CbsLessonCoursewareWrapper.LessonCourseware> lessonCoursewareList = coursewareFeignService.lessonCoursewarePage(cbsQuery).feignData().getRows();
+
+        // 转map
+        Map<Long, CbsLessonCoursewareWrapper.LessonCourseware> lessonCoursewareMap = lessonCoursewareList.stream().collect(Collectors.toMap(CbsLessonCoursewareWrapper.LessonCourseware::getId, o -> o));
+        List<Long> lessonCoursewareIds = lessonCoursewareList.stream().map(CbsLessonCoursewareWrapper.LessonCourseware::getId).collect(Collectors.toList());
+
+        // 查询可用的课件详情信息
+        List<CbsLessonCoursewareDetailWrapper.Entity> lessonCoursewareDetails = coursewareFeignService
+            .lessonCoursewareDetailLambdaQuery(CbsLessonCoursewareDetailWrapper.LambdaQuery.builder()
+                .level(lessonCoursewareDetail.getLevel())
+                .lessonCoursewareIds(lessonCoursewareIds)
+                .build()).feignData();
+        if (org.springframework.util.CollectionUtils.isEmpty(lessonCoursewareDetails)) {
+            return new ArrayList<>();
+        }
+        for (CbsLessonCoursewareDetailWrapper.Entity coursewareDetail : lessonCoursewareDetails) {
+            LessonCoursewareDetailWrapper.RefLevelDetailInfo refLevelDetailInfo = new LessonCoursewareDetailWrapper.RefLevelDetailInfo();
+            refLevelDetailInfo.setId(coursewareDetail.getId());
+            refLevelDetailInfo.setLessonCoursewareId(coursewareDetail.getLessonCoursewareId());
+            CbsLessonCoursewareWrapper.LessonCourseware lessonCourseware1 = lessonCoursewareMap.get(coursewareDetail.getLessonCoursewareId());
+            if (lessonCourseware1 == null) {
+                continue;
+            }
+            refLevelDetailInfo.setCoverImg(lessonCourseware1.getCoverImg());
+            refLevelDetailInfo.setCourseTypeCode(lessonCourseware1.getCourseTypeCode());
+            refLevelDetailInfo.setLockFlag(false);
+            refLevelDetailInfo.setLessonCoursewareName(lessonCourseware1.getName());
+            refLevelDetailInfo.setUseFlag(coursewareDetail.getId().equals(query.getLessonCoursewareDetailId()));
+            result.add(refLevelDetailInfo);
+        }
+        return result;
+
+    }
+
     private void filterMusicMaterialList(List<LessonCoursewareDetailWrapper.KnowledgePointSmall> knowledgePointList, List<Long> cbsMusicSheetIds) {
         if (CollectionUtils.isNotEmpty(knowledgePointList)) {
             for (LessonCoursewareDetailWrapper.KnowledgePointSmall knowledgePointSmall : knowledgePointList) {

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/LessonCoursewareDetailWrapper.java

@@ -117,4 +117,41 @@ public class LessonCoursewareDetailWrapper {
         @ApiModelProperty("关联素材ID")
         private String resourceIdStr;
     }
+
+
+    @Data
+    public static class RefLevelDetailInfo{
+        @ApiModelProperty("课件ID")
+        private Long id;
+
+        @ApiModelProperty("教材ID")
+        private Long lessonCoursewareId;
+        @ApiModelProperty("教材名称")
+        private String lessonCoursewareName;
+
+
+        @ApiModelProperty("封面")
+        private String coverImg;
+
+        @ApiModelProperty("课程类型")
+        private String courseTypeCode;
+
+        @ApiModelProperty("是否锁定")
+        private Boolean lockFlag;
+
+        @ApiModelProperty("是否当前使用")
+        private Boolean useFlag;
+
+    }
+
+
+    @Data
+    public static class RefLevelQuery {
+
+        @ApiModelProperty(value = "课件详情ID",required = true)
+        private Long lessonCoursewareDetailId;
+
+        @ApiModelProperty(value = "机构ID",hidden = true)
+        private Long tenantId;
+    }
 }

+ 1 - 1
pom.xml

@@ -23,7 +23,7 @@
 		<google.zxing.version>3.4.0</google.zxing.version>
 		<redisson.version>3.11.5</redisson.version>
 		<maven.test.skip>true</maven.test.skip>
-		<cbs.version>1.0.17</cbs.version>
+		<cbs.version>1.0.19</cbs.version>
 		<microsvc.version>1.1.4</microsvc.version>
 	</properties>