package com.qxueyou.scc.controller; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.qxueyou.scc.admin.classes.model.ClsSubjectChapter; import com.qxueyou.scc.admin.classes.model.ClsSubjectLecture; import com.qxueyou.scc.admin.classes.service.IClassLectureService; import com.qxueyou.scc.admin.progress.model.Progress; import com.qxueyou.scc.admin.progress.service.IProgressService; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.util.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.QBeanUtils; import com.qxueyou.scc.teach.res.model.Res; import com.qxueyou.scc.teach.res.model.ResLib; import com.qxueyou.scc.teach.res.service.IResService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @Api(tags = "课件管理-教师端") @RestController @CrossOrigin(origins="*",maxAge=3600) @RequestMapping(value = "teach/clsLecture") public class ClsLectureController { @Autowired IClassLectureService classLectureService; @Autowired IProgressService progressService; @Autowired IResService resService; /**-------------------------------------------------------------------app接口------------------------------------------------------------------------------------------**/ @SuppressWarnings("unchecked") @ApiOperation(value = "获取课程下课件", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "classId", value = "班级id", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"), @ApiImplicitParam(name = "type", value = "课件类型", required = false, paramType="query", dataType = "String") }) @GetMapping(value = "/app/coursewareList") public Result coursewareList(String classId,String subjectId, String type) { if(StringUtils.isEmpty(subjectId)) { return new Result(false, "课程id不能为空"); } //公开课和管理员课程 if(StringUtils.isEmpty(classId)) { Object obj = this.classLectureService.coursewareChapterList(classId, subjectId, type).getData(); if(obj == null) { return new Result(true, "success", new ArrayList<>()); } return new Result(true, "success", ((Map)obj).get("listData")); } //查询课件 List> lectures = classLectureService.listLectureBySubject(subjectId, type, classId); //查询章节 List chapterLst = classLectureService.getChapterLectures(classLectureService.getListChapter(classId, subjectId, null), lectures); return new Result(true, "success", QBeanUtils.listBean2ListMap(chapterLst, CollectionUtils.newStringMap("name", "name", "chapterId", "chapterId", "lectures", "lectures"))); } /**-------------------------------------------------------------------后端接口------------------------------------------------------------------------------------------**/ /** * 加载课件tree * * @param parentId * 父节点id */ @ApiOperation(value = "获取课程下章节", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "subjectId", value = "课程id", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "parentId", value = "父节点id", required = false, paramType="query", dataType = "String") }) @GetMapping(value = "categoryTree") public Result categoryTree(String classId,String subjectId, String parentId) { List chapterLst = classLectureService.doGetListChapter(classId,subjectId, parentId); return new Result(true, "success", QBeanUtils.listBean2ListMap(chapterLst, CollectionUtils.newStringMap("name", "name", "chapterId", "id"))); } /** * 获取课件列表 * * @param chapterId * 章节id * @param type * 课件类型 * @param keyword * 搜索关键字 * @param limit * 每页显示几条 * @param pageNum * 页码 * @return 状态说明(0,视频。1,音频。2,文档。3,练习。) */ @ApiOperation(value = "获取课程下章节", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "chapterId", value = "章节id", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "type", value = "课件类型", required = false, paramType="query", dataType = "String") }) @GetMapping(value = "coursewareList") public Result lectureList(String chapterId, String type, String keyword, Integer limit, Integer pageNum, String classId) { List lectures = classLectureService.listLecture(chapterId, keyword, limit, pageNum, type, classId); int lectureCount = classLectureService.listLectureCount(chapterId, keyword, type); return new Result(true, "success", CollectionUtils.newObjectMap("coursewareLst", QBeanUtils.listBean2ListMap(lectures, CollectionUtils.newStringMap("name", "name", "lectureId", "id", "lectureType", "type", "chapterId", "chapterId", "status", "status", "updateTime", "updateTime")), "count", lectureCount)); } /** * 查看课件 * * @param id * 课件id * @param attribute * 扩展属性 video:"mp4:HD","m3u8:SD" 可不用传 audio:可不用传 doc:可不用传 */ @ApiOperation(value = "查看课件", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "课件id", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "attribute", value = "扩展属性 video:\"mp4:HD\",\"m3u8:SD\" 可不用传 audio:可不用传 doc:可不用传", required = false, paramType="query", dataType = "String"), }) @GetMapping(value = "showCourseware") public Result showLecture(String id, String attribute) { Result result = classLectureService.readLectureAccessPath(id, attribute); Progress progress = progressService.query(Progress.PROGRESS_TYPE_LECTURE, id, ClientUtils.getUserId()); return new Result(true, "true", CollectionUtils.newObjectMap("name", result.getDataT("name"), "fullPath", result.getDataT("path"), "id", id, "size", result.getDataT("size"), "percent", progress == null ? 0 : String.valueOf(progress.getProgressPercent()))); } /** * 删除课件 * * @param id * 课件ids */ @GetMapping(value = "deleteCourseware") public Result deleteLecture(String id) { return classLectureService.deleteLecture(id.split(",")); } /** * 课件管理 新增下级,同级 * * @param type * (add:新增,edit :编辑) * @param chapterId * 章节id * @param classId * 班级id * @param name * 名称 * @param childFlag * 是否操作下级 * */ @PostMapping(value = "addOrUpdateChapter") public Result addOrUpdateChapter(String type, String name, String chapterId, boolean childFlag) { ClsSubjectChapter chapter = classLectureService.readChapter(chapterId); String parentChapterId = childFlag ? chapterId : chapter.getParentChapterId(); if ("add".equals(type)) { return classLectureService.addChapter(parentChapterId, name); } else { return classLectureService.updateChapter(chapterId, name); } } /** * 课件管理 目录删除 * * @param chapterId * 目录id */ @GetMapping(value = "deleteChapter") public Result deleteChapter(String chapterId) { return classLectureService.deleteChapter(chapterId.split(",")); } /** * 添加/更新(视频,讲义,音频) * * @param name * 名称 * @param coverUrl * 封面Url * @param remark: *

* 视频啊啊啊 *

* 介绍 * * @param id * 课件id * @param sectionId * 小节Id * @param type * @return 状态说明(0,视频。1,音频。2,文档。3,练习。) */ @PostMapping(value = "addOrUpdate") public Result addOrUpdate(String id, String remark, String name, String coverUrl, String type, String fileId, String sectionId) { if (StringUtils.isEmpty(id)) { Result resResult = resService.add( resService.doGetRootDir(ResLib.OWNNER_TYPE_USER, ClientUtils.getUserId()).getDirId(), fileId, name, remark, type, coverUrl); return classLectureService.addClsLecture(sectionId, resResult.getDataT("resId")); } else { ClsSubjectLecture lecture = classLectureService.readClsLecture(id); resService.update(lecture.getResItemId(), name, remark, coverUrl); return classLectureService.updateLecture(lecture.getLectureId(), lecture.getResItemId()); } } /** * 编辑 获取内容 * * @param id * 课件id */ @GetMapping(value = "getCoursewareDetail") public Result getLectureDetail(String id) { ClsSubjectLecture lecture = classLectureService.readClsLecture(id); Res res = resService.read(lecture.getResItemId()); return new Result(true, "success", CollectionUtils.newObjectMap("coursewareName", lecture.getName(), "coverUrl", res.getCoverPageUrl(), "remark", res.getRemark(), "fileId", null, "name", lecture.getName(), "id", lecture.getLectureId())); } /** * 课件获取资源列表 * * @param dirId * 目录Id * @param limit * 每页显示几条 * @param pageNum * 页码 * @return 状态说明(0,视频。1,音频。2,文档。3,练习。) */ @ApiOperation(value = "课件获取资源列表", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "dirId", value = "目录Id", required = false, paramType="query", dataType = "String") }) @GetMapping(value = "getResLst") public Result getResLst(String dirId, Integer limit, Integer pageNum, String keyword) { List resLst = resService.listMyRes(keyword, limit, pageNum, ""); return new Result(true, "success", CollectionUtils.newObjectMap("resCount", resService.listMyResCount(keyword, ""), "resLst", QBeanUtils.listBean2ListMap(resLst, CollectionUtils.newStringMap("resId", "resId", "name", "resName", "type", "type")))); } /** * 课件从资源选择后保存 * * @param resId * 资源文件id * @param sectionId * 小节id * */ @GetMapping(value = "saveCourseware4Res") public Result saveLecture4Res(String resId, String sectionId) { int successCount = 0; Result result = new Result(true); for (String resId_ : resId.split(",")) { result = classLectureService.addClsLecture(sectionId, resId_); successCount = result.isSuccess() ? 1 : 0; } return new Result(true, null, successCount); } }