From 8c99e2d8b6c1e0d9cde6abbe80b4df75be19f6d1 Mon Sep 17 00:00:00 2001
From: Administrator <2863138610@qq.com>
Date: 星期二, 29 十一月 2022 16:31:18 +0800
Subject: [PATCH] 课程与课件bug修复

---
 src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java |  789 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 410 insertions(+), 379 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java b/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
index fe85608..9610399 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/StuSubjectController.java
@@ -1,12 +1,21 @@
 package com.qxueyou.scc.stucontroller;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.querydsl.jpa.hibernate.HibernateQueryFactory;
+import com.qxueyou.scc.base.dao.BaseDAO;
 import com.qxueyou.scc.base.model.UserInfoWrapper;
+import com.qxueyou.scc.teach.subject.model.SubjectUtils;
 import com.qxueyou.scc.user.model.User;
+import org.hibernate.Session;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.orm.hibernate4.HibernateTemplate;
+import org.springframework.orm.jpa.vendor.HibernateJpaSessionFactoryBean;
 import org.springframework.web.bind.annotation.*;
 
 import com.alibaba.druid.util.StringUtils;
@@ -34,6 +43,7 @@
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -41,429 +51,450 @@
  * 学习端 课程前端控制器
  *
  * @author chenjunliang
- *
  */
-@Api(tags= "课程管理-学员端")
+@Api(tags = "课程管理-学员端")
 @RestController
-@CrossOrigin(origins="*",maxAge=3600)
+@CrossOrigin(origins = "*", maxAge = 3600)
 @RequestMapping(value = "stu/subject")
 public class StuSubjectController {
 
-	@Autowired
-	ISubjectService subjectService;
+    @Autowired
+    ISubjectService subjectService;
 
-	@Autowired
-	ILectureService lectureService;
+    @Autowired
+    ILectureService lectureService;
 
-	@Autowired
-	IClassLectureService clsLectureService;
+    @Autowired
+    IClassLectureService clsLectureService;
 
-	@Autowired
-	IResAudioService audioService;
+    @Autowired
+    IResAudioService audioService;
 
-	@Autowired
-	ProgressDAO progressDao;
+    @Autowired
+    ProgressDAO progressDao;
 
-	@Autowired
-	ITopicService topicService;
+    @Autowired
+    ITopicService topicService;
 
-	@Autowired
-	IEvaluateService evaluateService;
+    @Autowired
+    IEvaluateService evaluateService;
 
-	//--------------------------------------------------------------app端接口---------------------------------------------------------------------------------------------------
-	/**
-	 * 学习端获取 所有课件
-	 *
-	 * @param classId
-	 * @return 状态说明(0,视频。1,音频。2,文档。3,练习。)
-	 */
-	@ApiOperation(value = "获取班级所有课件-学习端", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "sort", value = "排序方式(desc从大到小,asc从小到大)", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/getCoursewareLstByClassId")
-	public Result appCoursewareLst(String classId, @RequestParam(defaultValue="desc")String sort, Pager pager) {
-		System.out.println(classId);
-		return clsLectureService.listSubjectLecture(CommonUtils.getClassId(classId), sort, pager);
-	}
+    //--------------------------------------------------------------app端接口---------------------------------------------------------------------------------------------------
 
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "学习端获取课程学年列表")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/termList")
-	public Result termList(String classId) {
-		classId = CommonUtils.getClassId(classId);
-		if(StringUtils.isEmpty(classId)) {
-    		return new Result(false, "班级id不能为空");
-    	}
-		//课程
-		List<Map<String, Object>> lstSubject = subjectService.clsSubjectlist(classId, null, null);
-		//组装的学期和课程
-		List<Map<String, Object>> lstTerm = subjectService.termSubjectList(classId, lstSubject);
-
-		return new Result(true, "success",CollectionUtils.newObjectMap("termList", lstTerm, "allSubject", lstSubject));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "我的课程按学期分类")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/myTermSubjectList")
-	public Result myTermSubjectList(String classId) {
-		classId = CommonUtils.getClassId(classId);
-		System.out.println("vvvvvvvvv"+classId);
-		if(StringUtils.isEmpty(classId)) {
-    		return new Result(false, "班级id不能为空");
-    	}
-		return new Result(true, "success",subjectService.myTermSubjectList(classId));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "我的课程按时间排序")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/mySubjectList")
-	public Result mySubjectList(String classId, Pager pager ) {
-//		System.out.println("0.0.0.0"+classId);
-		classId = CommonUtils.getClassId(classId);
-		long count = subjectService.myClsSubjectCount(classId);
-		return new Result(true, "success",
-				CollectionUtils.newObjectMap("count", count, "listData", subjectService.mySubjectList(classId, pager)));
-	}
-
-	/**
-	 * 我的课程详情
-	 *
-	 * @param subjectId
-	 * @param classId
-	 * @return
-	 */
-	@ApiOperation(value = "我的课程详情")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/mySubjectInfo")
-	public Result mySubjectInfo(String subjectId, String classId) {
-		classId = CommonUtils.getClassId(classId);
-		if(StringUtils.isEmpty(classId)) {
-    		return new Result(false, "班级id不能为空");
-    	}
-		if(StringUtils.isEmpty(subjectId)) {
-    		return new Result(false, "课程id不能为空");
-    	}
-		return new Result(true, "success", subjectService.mySubjectInfo(subjectId, classId));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "我的班级信息")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/myClassInfo")
-	public Result myClassInfo(String classId) {
-		classId = ClientUtils.getClassId();
-		if(StringUtils.isEmpty(classId)) {
-    		return new Result(false, "班级id不能为空");
-    	}
-		return new Result(true, "success",subjectService.myClassInfo(classId));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "学习端获取课程列表")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "schoolYear", value = "学年", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "term", value = "学期", required = true, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "/app/subjectList")
-	public Result subjectList(String classId, Integer schoolYear, Integer term) {
-		return new Result(true, "success",subjectService.clsSubjectlist(CommonUtils.getClassId(classId), schoolYear, term));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "学习端获取课程下课件,按创建时间排序")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "sort", value = "排序方式(desc从大到小,asc从小到大)", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "/app/listLectureBySubject")
-	public Result listLectureBySubject(String subjectId, String classId, @RequestParam(defaultValue="desc")String sort, Pager pager) {
-		return new Result(true, "success",clsLectureService.listLectureBySubjectOrderCreateTime(subjectId, CommonUtils.getClassId(classId), sort, pager));
-	}
-
-	/**
-	 *
-	 * 学习端获取其他课件统计
-	 *
-	 */
-	@ApiOperation(value = "学习端获取其他课件统计")
-	@GetMapping(value = "/app/otherLectureCount")
-	public Result otherLectureCount() {
-		return new Result(true, "success", CollectionUtils.newObjectMap("topicCount",
-				topicService.getClassTopicCount(ClientUtils.getClassId()), "evaluate", this.evaluateService.queryStuEvaluateCount()));
-	}
-
-	/**
-	 *
-	 * 学习端获取课程列表
-	 *
-	 */
-	@ApiOperation(value = "学习端获取课程下课件,按目录分类", notes = "")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "classId", value = "班级id", required = false, 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) {
-		classId = CommonUtils.getClassId(classId);
-
-		if(StringUtils.isEmpty(subjectId)) {
-			return new Result(false, "课程id不能为空");
-		}
-
-		return this.clsLectureService.coursewareChapterList(classId, subjectId, type);
-
-	}
-
-	 /**
-     * 我的公开课列表
+    /**
+     * 学习端获取 所有课件
      *
-    */
+     * @param classId
+     * @return 状态说明(0, 视频 。 1, 音频 。 2, 文档 。 3, 练习 。)
+     */
+    @ApiOperation(value = "获取班级所有课件-学习端", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "sort", value = "排序方式(desc从大到小,asc从小到大)", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/getCoursewareLstByClassId")
+    public Result appCoursewareLst(String classId, @RequestParam(defaultValue = "desc") String sort, Pager pager) {
+        System.out.println(classId);
+        return clsLectureService.listSubjectLecture(CommonUtils.getClassId(classId), sort, pager);
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "学习端获取课程学年列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/termList")
+    public Result termList(String classId) {
+        classId = CommonUtils.getClassId(classId);
+        if (StringUtils.isEmpty(classId)) {
+            return new Result(false, "班级id不能为空");
+        }
+        //课程
+        List<Map<String, Object>> lstSubject = subjectService.clsSubjectlist(classId, null, null);
+        //组装的学期和课程
+        List<Map<String, Object>> lstTerm = subjectService.termSubjectList(classId, lstSubject);
+
+        return new Result(true, "success", CollectionUtils.newObjectMap("termList", lstTerm, "allSubject", lstSubject));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "我的课程按学期分类")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/myTermSubjectList")
+    public Result myTermSubjectList(String classId) {
+        classId = CommonUtils.getClassId(classId);
+        System.out.println("vvvvvvvvv" + classId);
+        if (StringUtils.isEmpty(classId)) {
+            return new Result(false, "班级id不能为空");
+        }
+        return new Result(true, "success", subjectService.myTermSubjectList(classId));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "我的课程按时间排序")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/mySubjectList")
+    public Result mySubjectList(String classId, Pager pager) {
+//		System.out.println("0.0.0.0"+classId);
+        classId = CommonUtils.getClassId(classId);
+        long count = subjectService.myClsSubjectCount(classId);
+        return new Result(true, "success",
+                CollectionUtils.newObjectMap("count", count, "listData", subjectService.mySubjectList(classId, pager)));
+    }
+
+    /**
+     * 我的课程详情
+     *
+     * @param subjectId
+     * @param classId
+     * @return
+     */
+    @ApiOperation(value = "我的课程详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/mySubjectInfo")
+    public Result mySubjectInfo(String subjectId, String classId) {
+        classId = CommonUtils.getClassId(classId);
+        if (StringUtils.isEmpty(classId)) {
+            return new Result(false, "班级id不能为空");
+        }
+        if (StringUtils.isEmpty(subjectId)) {
+            return new Result(false, "课程id不能为空");
+        }
+        return new Result(true, "success", subjectService.mySubjectInfo(subjectId, classId));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "我的班级信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/myClassInfo")
+    public Result myClassInfo(String classId) {
+        classId = ClientUtils.getClassId();
+        if (StringUtils.isEmpty(classId)) {
+            return new Result(false, "班级id不能为空");
+        }
+        return new Result(true, "success", subjectService.myClassInfo(classId));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "学习端获取课程列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "schoolYear", value = "学年", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "term", value = "学期", required = true, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "/app/subjectList")
+    public Result subjectList(String classId, Integer schoolYear, Integer term) {
+        return new Result(true, "success", subjectService.clsSubjectlist(CommonUtils.getClassId(classId), schoolYear, term));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "学习端获取课程下课件,按创建时间排序")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "sort", value = "排序方式(desc从大到小,asc从小到大)", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "/app/listLectureBySubject")
+    public Result listLectureBySubject(String subjectId, String classId, @RequestParam(defaultValue = "desc") String sort, Pager pager) {
+        return new Result(true, "success", clsLectureService.listLectureBySubjectOrderCreateTime(subjectId, CommonUtils.getClassId(classId), sort, pager));
+    }
+
+    /**
+     * 学习端获取其他课件统计
+     */
+    @ApiOperation(value = "学习端获取其他课件统计")
+    @GetMapping(value = "/app/otherLectureCount")
+    public Result otherLectureCount() {
+        return new Result(true, "success", CollectionUtils.newObjectMap("topicCount",
+                topicService.getClassTopicCount(ClientUtils.getClassId()), "evaluate", this.evaluateService.queryStuEvaluateCount()));
+    }
+
+    /**
+     * 学习端获取课程列表
+     */
+    @ApiOperation(value = "学习端获取课程下课件,按目录分类", notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, 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) {
+        classId = CommonUtils.getClassId(classId);
+
+        if (StringUtils.isEmpty(subjectId)) {
+            return new Result(false, "课程id不能为空");
+        }
+
+        return this.clsLectureService.coursewareChapterList(classId, subjectId, type);
+
+    }
+
+    /**
+     * 我的公开课列表
+     */
     @ApiOperation(value = "我的公开课列表", notes = "")
-   	@GetMapping(value = "/app/myOpenSubjectList")
-   	public Result myOpenSubjectList(Pager pager, @RequestParam(defaultValue = "")String keyword) {
-	   	return new Result(true, "success", this.subjectService.myOpenSubjectList(pager.getOffset(), pager.getPageSize(), keyword));
-   	}
+    @GetMapping(value = "/app/myOpenSubjectList")
+    public Result myOpenSubjectList(Pager pager, @RequestParam(defaultValue = "") String keyword) {
+        return new Result(true, "success", this.subjectService.myOpenSubjectList(pager.getOffset(), pager.getPageSize(), keyword));
+    }
 
     /**
      * 公开课列表
-     *
-    */
+     */
     @ApiOperation(value = "公开课列表", notes = "")
-   	@GetMapping(value = "/app/openSubjectList")
-   	public Result openSubjectList(Pager pager, @RequestParam(defaultValue = "")String keyword) {
-	   	return new Result(true, "success", this.subjectService.openSubjectList(pager.getOffset(), pager.getPageSize(), keyword));
-   	}
+    @GetMapping(value = "/app/openSubjectList")
+    public Result openSubjectList(Pager pager, @RequestParam(defaultValue = "") String keyword) {
+        return new Result(true, "success", this.subjectService.openSubjectList(pager.getOffset(), pager.getPageSize(), keyword));
+    }
 
     /**
      * 公开课详情
-     *
      */
     @ApiOperation(value = "公开课详情", notes = "")
-   	@GetMapping(value = "/app/openSubjectInfo")
-   	public Result openSubjectInfo(@RequestParam(defaultValue = "")String subjectId) {
-	   	return new Result(true, "success", this.subjectService.openSubjectInfo(subjectId));
-   	}
+    @GetMapping(value = "/app/openSubjectInfo")
+    public Result openSubjectInfo(@RequestParam(defaultValue = "") String subjectId) {
+        return new Result(true, "success", this.subjectService.openSubjectInfo(subjectId));
+    }
 
-	//--------------------------------------------------------后台端接口---------------------------------------------------------------------------------------------------
+    //--------------------------------------------------------后台端接口---------------------------------------------------------------------------------------------------
 
-	/**
-	 * 加载课件tree
-	 */
-	@ApiOperation(value = "加载课件tree", notes = "")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "subjectId", value = "班级id", required = false, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "categoryTree")
-	public Result categoryTree(String subjectId, String parentId) {
+    /**
+     * 加载课件tree
+     */
+    @ApiOperation(value = "加载课件tree", notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", value = "班级id", required = false, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "categoryTree")
+    public Result categoryTree(String subjectId, String parentId) {
 //		classId = StringUtils.isEmpty(classId)?ClientUtils.getClassId():classId;
-		List<SubjectProgressTreeV> chapterLst = clsLectureService.getChapterTreeVList(subjectId, parentId);
+        List<SubjectProgressTreeV> chapterLst = clsLectureService.getChapterTreeVList(subjectId, parentId);
 
-		for (SubjectProgressTreeV v : chapterLst) {
-			v.setNodeName(v.getNodeName() + "(" + String.format("%.2f", v.getPercent()*100) + "%)"); //保留两位小数
-		}
+        for (SubjectProgressTreeV v : chapterLst) {
+            v.setNodeName(v.getNodeName() + "(" + String.format("%.2f", v.getPercent() * 100) + "%)"); //保留两位小数
+        }
 
-		return new Result(true, "success", QBeanUtils.listBean2ListMap(chapterLst, CollectionUtils
-				.newStringMap("nodeName", "name", "id.nodeId", "id", "parentId", "parentId", "percent", "percent")));
-	}
+        return new Result(true, "success", QBeanUtils.listBean2ListMap(chapterLst, CollectionUtils
+                .newStringMap("nodeName", "name", "id.nodeId", "id", "parentId", "parentId", "percent", "percent")));
+    }
 
-	/**
-	 * 学习端获取 所有课件
-	 *
-	 * @param classId
-	 * @return 状态说明(0,视频。1,音频。2,文档。3,练习。)
-	 */
-	@ApiOperation(value = "学习端获取 所有课件", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "subjectId", value = "班级id", required = false, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "getCoursewareLstByClassId")
-	public Result getCoursewareLst(String subjectId) {
-		List<ClsSubjectLecture> lectureLst = clsLectureService.listLecture(subjectId);
+    /**
+     * 学习端获取 所有课件
+     *
+     * @param classId
+     * @return 状态说明(0, 视频 。 1, 音频 。 2, 文档 。 3, 练习 。)
+     */
+    @ApiOperation(value = "学习端获取 所有课件", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", value = "班级id", required = false, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "getCoursewareLstByClassId")
+    public Result getCoursewareLst(String subjectId) {
+        List<ClsSubjectLecture> lectureLst = clsLectureService.listLecture(subjectId);
 
-		// id为小节id //返回的数据按照tree的小节排序
-		return new Result(true, "success",
+        // id为小节id //返回的数据按照tree的小节排序
+        return new Result(true, "success",
 
-				QBeanUtils.listBean2ListMap(lectureLst, CollectionUtils.newStringMap("name", "name", "lectureId", "id",
-						"lectureType", "type", "chapterId", "chapterId")));
-	}
+                QBeanUtils.listBean2ListMap(lectureLst, CollectionUtils.newStringMap("name", "name", "lectureId", "id",
+                        "lectureType", "type", "chapterId", "chapterId")));
+    }
 
-	/**
-	 * 获取课件列表
-	 *
-	 * @param chapterId
-	 *            章节id
-	 * @param type
-	 *            课件类型
-	 * @param keyword
-	 *            搜索关键字
-	 * @param limit
-	 *            每页显示几条
-	 * @param pageNum
-	 *            页码
-	 * @return 状态说明(0,视频。1,音频。2,文档。3,练习。)
-	 */
-	@ApiOperation(value = "根据章节获取课件列表", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "chapterId", value = "章节id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "type", value = "课件类型", required = false, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "coursewareListByChapterId")
-	public Result coursewareList(String chapterId, String type, String keyword, Integer limit, @RequestParam(defaultValue="1")Integer pageNum) {
+    /**
+     * 获取课件列表
+     *
+     * @param chapterId 章节id
+     * @param type      课件类型
+     * @param keyword   搜索关键字
+     * @param limit     每页显示几条
+     * @param pageNum   页码
+     * @return 状态说明(0, 视频 。 1, 音频 。 2, 文档 。 3, 练习 。)
+     */
+    @ApiOperation(value = "根据章节获取课件列表", notes = "状态说明(0,视频。1,音频。2,文档。3,练习。)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "chapterId", value = "章节id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "type", value = "课件类型", required = false, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "coursewareListByChapterId")
+    public Result coursewareList(String chapterId, String type, String keyword, Integer limit, @RequestParam(defaultValue = "1") Integer pageNum) {
 
-		List<MyLectureV> lectures = clsLectureService.listLectureV(ClientUtils.getUserId(), chapterId, keyword, limit,
-				pageNum, type);
+        List<MyLectureV> lectures = clsLectureService.listLectureV(ClientUtils.getUserId(), chapterId, keyword, limit,
+                pageNum, type);
 
-		return new Result(true, "success",
-				CollectionUtils.newObjectMap("coursewareLst",
-						QBeanUtils.listBean2ListMap(lectures,
-								CollectionUtils.newStringMap("lectureName", "name", "id.lectureId", "id", "lectureType",
-										"type", "lectureUpdateTime", "endUpdateTime", "percent", "percent"))));
+        return new Result(true, "success",
+                CollectionUtils.newObjectMap("coursewareLst",
+                        QBeanUtils.listBean2ListMap(lectures,
+                                CollectionUtils.newStringMap("lectureName", "name", "id.lectureId", "id", "lectureType",
+                                        "type", "lectureUpdateTime", "endUpdateTime", "percent", "percent"))));
 
-	}
+    }
 
-	/**
-	 * 课件学习进度提交 stu/subject/study
-	 *
-	 * @param lectureId
-	 *            课件id
-	 * @param from
-	 *            开始学习位置 ,如视频,则为时分秒(00:10:12),如文档,则无需提交该参数
-	 * @param to
-	 *            结束学习位置,同to
-	 */
-	@ApiOperation(value = "提交学习进度")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "lectureId", value = "课件id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "from", value = "开始学习位置 ,如视频,则为时分秒(00:10:12),如文档,则无需提交该参数", required = true, paramType="query", dataType = "Double"),
-		@ApiImplicitParam(name = "to", value = "结束学习位置,同to", required = true, paramType="query", dataType = "Double"),
-		@ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "lectureParentId", value = "父课件id", required = false, paramType="query", dataType = "String"),
-	})
-	@GetMapping(value = "study")
-	public Result study(String lectureId, @RequestParam(defaultValue = "1") Double from,
-			@RequestParam(defaultValue = "0") Double to, String subjectId, String classId, String lectureParentId) {
-		String userId = ClientUtils.getUserId();
-		classId = CommonUtils.getClassId(classId);
-		progressDao.putStudyById(userId, subjectId, lectureId, lectureParentId, classId);// 记录学员每个课程的学习位置;
-		progressDao.putStudyByUserId(userId, subjectId, lectureId, lectureParentId, classId);// 记录学员上次学习的位置;
-		return clsLectureService.doStudy(lectureId, from, to);
-	}
+    /**
+     * 课件学习进度提交 stu/subject/study
+     *
+     * @param lectureId 课件id
+     * @param from      开始学习位置 ,如视频,则为时分秒(00:10:12),如文档,则无需提交该参数
+     * @param to        结束学习位置,同to
+     */
+    @ApiOperation(value = "提交学习进度")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "lectureId", value = "课件id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "from", value = "开始学习位置 ,如视频,则为时分秒(00:10:12),如文档,则无需提交该参数", required = true, paramType = "query", dataType = "Double"),
+            @ApiImplicitParam(name = "to", value = "结束学习位置,同to", required = true, paramType = "query", dataType = "Double"),
+            @ApiImplicitParam(name = "subjectId", value = "课程id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "lectureParentId", value = "父课件id", required = false, paramType = "query", dataType = "String"),
+    })
+    @GetMapping(value = "study")
+    public Result study(String lectureId, @RequestParam(defaultValue = "1") Double from,
+                        @RequestParam(defaultValue = "0") Double to, String subjectId, String classId, String lectureParentId) {
+        String userId = ClientUtils.getUserId();
+        classId = CommonUtils.getClassId(classId);
+        progressDao.putStudyById(userId, subjectId, lectureId, lectureParentId, classId);// 记录学员每个课程的学习位置;
+        progressDao.putStudyByUserId(userId, subjectId, lectureId, lectureParentId, classId);// 记录学员上次学习的位置;
+        return clsLectureService.doStudy(lectureId, from, to);
+    }
 
-	/**
-	 * 音频时长提交 stu/subject/submitAudioDuration
-	 *
-	 * @param lectureId
-	 *            课件id
-	 * @param seconds
-	 *            时长
-	 */
-	@ApiOperation(value = "音频时长提交")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "lectureId", value = "课件id", required = true, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "seconds", value = "时长", required = true, paramType="query", dataType = "Double")
-	})
-	@CacheEvict(value = "LectureAudioV", key = "#lectureId")
-	@GetMapping(value = "submitAudioDuration")
-	public Result submitAudioDuration(String lectureId, double seconds) {
+    /**
+     * 音频时长提交 stu/subject/submitAudioDuration
+     *
+     * @param lectureId 课件id
+     * @param seconds   时长
+     */
+    @ApiOperation(value = "音频时长提交")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "lectureId", value = "课件id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "seconds", value = "时长", required = true, paramType = "query", dataType = "Double")
+    })
+    @CacheEvict(value = "LectureAudioV", key = "#lectureId")
+    @GetMapping(value = "submitAudioDuration")
+    public Result submitAudioDuration(String lectureId, double seconds) {
 
-		LectureAudioV audio = lectureService.readAudioLecture(lectureId);
+        LectureAudioV audio = lectureService.readAudioLecture(lectureId);
 
-		return audioService.updateDuration(audio.getAudioId(), (int) seconds);
+        return audioService.updateDuration(audio.getAudioId(), (int) seconds);
 
-	}
+    }
 
-	/**
-	 * 课程列表
-	 *
-	 * @param clssId
-	 *            班级id
-	 * @param startTime
-	 *            开班时间
-	 */
-	@ApiOperation(value = "课程列表")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType="query", dataType = "String"),
-		@ApiImplicitParam(name = "startTime", value = "开班时间", required = false, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "getSubjectLst")
-	public Result getList(String userId,String classId, String startTime, Integer limit, @RequestParam(defaultValue="1")Integer pageNum, HttpServletRequest request) {
-		userId = StringUtils.isEmpty(userId)?ClientUtils.getUserId():userId;
-		if(userId == null || userId == ""){
-			userId = ClientUtils.getUserId();
-		}
-		classId = StringUtils.isEmpty(classId)?ClientUtils.getClassId():classId;
-		List<MySubjectV> result = subjectService.listMySubjectV(classId,userId);
-		return new Result(true, "success",
-				QBeanUtils.listBean2ListMap(result,
-						CollectionUtils.newStringMap("id.subjectId", "subjectId", "id.classId", "classId",
-								"subjectName", "subjectName,coursewareName", "percent", "percent", "progressValue",
-								"studyTime", "coverPageUrl", "coverPageUrl")));
-	}
+    /**
+     * 课程列表
+     *
+     * @param clssId    班级id
+     * @param startTime 开班时间
+     */
+    @ApiOperation(value = "课程列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "classId", value = "班级id", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "startTime", value = "开班时间", required = false, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "getSubjectLst")
+    public Result getList(String userId, String classId, String startTime, Integer limit, @RequestParam(defaultValue = "1") Integer pageNum, HttpServletRequest request) {
+        userId = StringUtils.isEmpty(userId) ? ClientUtils.getUserId() : userId;
+        classId = StringUtils.isEmpty(classId) ? ClientUtils.getClassId() : classId;
+        List<MySubjectV> resultMs = subjectService.listMySubjectV(classId, userId);
+        List<MySubjectV> result = new ArrayList<>();
+        List<Object> lecurelist = new ArrayList<>();
+        int i = 0;
+        for(MySubjectV ms : resultMs){
+            SubjectUtils subjectUtils = new SubjectUtils();
+            List<MyLectureV> myLectureVList = lectureService.listLectureVBySubjectId(userId, ms.getId().getSubjectId(), "", 1000, 1, null);
+            Double percent = 0.0;
+            Double progressValue = 0.0;
+            Double percentAvg = 0.0;
+            if(!myLectureVList.isEmpty()) {
+                for (MyLectureV myLectureV : myLectureVList) {
+                    if (myLectureV.getPercent() != null && myLectureV.getProgressValue() != null) {
+                        percent += myLectureV.getPercent();
+                        progressValue += myLectureV.getProgressValue().intValue();
+                    }
+                }
+                percentAvg = percent / myLectureVList.size();
+                if (percentAvg.isNaN()) {
+                    percentAvg = 0.0;
+                }
+                subjectUtils.setCoursewareName(myLectureVList.get(0).getLectureName());
+                subjectUtils.setSubjectId(myLectureVList.get(0).getSubjectId());
+                subjectUtils.setPercent(new BigDecimal(percentAvg));
+                subjectUtils.setStudyTime(new BigDecimal(progressValue));
+            }else {
+                subjectUtils.setCoursewareName(null);
+                subjectUtils.setSubjectId(ms.getId().getSubjectId());
+                subjectUtils.setPercent(new BigDecimal(percentAvg));
+                subjectUtils.setStudyTime(new BigDecimal(progressValue));
+            }
+            result.add(ms);
+            lecurelist.add(subjectUtils);
+        }
+        return new Result(true, "success",
+                CollectionUtils.newObjectMap("subjectList",
+                QBeanUtils.listBean2ListMap(result,
+                        CollectionUtils.newStringMap("id.subjectId", "subjectId", "id.classId", "classId",
+                                "subjectName", "subjectName", "percent", "percent", "progressValue",
+                                "studyTime", "coverPageUrl", "coverPageUrl")),"lecurelist",lecurelist));
+    }
 
-	/**
-	 * 进入课程
-	 *
-	 * @param subjectId
-	 *            课程id
-	 */
-	@ApiOperation(value = "课程详情")
-	@ApiImplicitParams({
-		@ApiImplicitParam(name = "subjectId", value = "课程id", required = false, paramType="query", dataType = "String")
-	})
-	@GetMapping(value = "getSubjectDetail")
-	public Result getSubjectDetail(String subjectId) {
-		MySubjectV subject = subjectService.getMy1stSubjectVById(subjectId);
+    /**
+     * 进入课程
+     *
+     * @param subjectId 课程id
+     */
+    @ApiOperation(value = "课程详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", value = "课程id", required = false, paramType = "query", dataType = "String")
+    })
+    @GetMapping(value = "getSubjectDetail")
+    public Result getSubjectDetail(String subjectId) {
+        MySubjectV subject = subjectService.getMy1stSubjectVById(subjectId);
 
-		List<Map<String, Object>> progressLst = subjectService.listChapterStudyProgress(subjectId);
+        List<Map<String, Object>> progressLst = subjectService.listChapterStudyProgress(subjectId);
+        List<MyLectureV> myLectureVList = lectureService.listLectureVBySubjectId(ClientUtils.getUserId(), subjectId, "", 1000, 1, null);
+        Double percent = 0.0;
+        Double progressValue = 0.0;
+        String coursewareName = null;
+        if(!myLectureVList.isEmpty()) {
+             for (MyLectureV myLectureV : myLectureVList) {
+                if (myLectureV.getPercent() != null && myLectureV.getProgressValue() != null) {
+                    percent += myLectureV.getPercent();
+                    progressValue += myLectureV.getProgressValue().intValue();
+                }
+             }
+            Double percentAvg = percent / myLectureVList.size();
+            if (percentAvg.isNaN()) {
+                percentAvg = 0.0;
+        }
+            subject.setPercent(percentAvg);
+            subject.setProgressValue(new BigDecimal(progressValue));
+            progressLst.get(0).put("percent", subject.getPercent());
+            progressLst.get(0).put("studyTime", subject.getProgressValue());
+            coursewareName = myLectureVList.get(0).getLectureName();
+        }else {
 
-		return new Result(true, "success",
-				CollectionUtils.newObjectMap("subject", QBeanUtils.bean2Map(subject,
-						CollectionUtils.newStringMap("subjectName", "subjectName", "id.subjectId", "subjectId",
-								"progressValue", "studyTime", "percent", "percent", "coverPageUrl", "coverPageUrl")),
-						"chapterLst",progressLst));
-	}
+        }
+        return new Result(true, "success",
+                CollectionUtils.newObjectMap("subject", QBeanUtils.bean2Map(subject,
+                        CollectionUtils.newStringMap("subjectName", "subjectName", "id.subjectId", "subjectId",
+                                "progressValue", "studyTime", "percent", "percent", "coverPageUrl", "coverPageUrl")),
+                        "chapterLst", progressLst,"coursewareName",coursewareName));
+    }
 
 }

--
Gitblit v1.8.0