he2802 3 سال پیش
والد
کامیت
2aa163f9b6
26فایلهای تغییر یافته به همراه297 افزوده شده و 42 حذف شده
  1. 4 0
      pom.xml
  2. 7 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  3. 9 0
      zhongzheng-common/pom.xml
  4. 1 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/config/WxSmallConfig.java
  5. 37 25
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  6. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java
  7. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMenuMapper.java
  8. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseSectionMapper.java
  9. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseSectionService.java
  10. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseMenuServiceImpl.java
  11. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSectionServiceImpl.java
  12. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsCourseMapper.java
  13. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsCourseServiceImpl.java
  14. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java
  15. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  16. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  17. 6 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodVo.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  19. 166 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  20. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java
  21. 4 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  22. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMenuMapper.xml
  23. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseSectionMapper.xml
  24. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsCourseMapper.xml
  25. 13 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  26. 14 4
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

+ 4 - 0
pom.xml

@@ -258,6 +258,10 @@
                 <enabled>true</enabled>
             </releases>
         </repository>
+        <repository>
+            <id>com.e-iceblue</id>
+            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
+        </repository>
     </repositories>
 
     <pluginRepositories>

+ 7 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -162,4 +162,11 @@ public class ScheduleController extends BaseController {
         iScheduleService.officialPeriodPush(bo);
         return AjaxResult.success();
     }
+
+    @ApiOperation("直播结束更新学时")
+    @GetMapping("/overLive")
+    public AjaxResult overLive(UserQueryBo bo){
+        iScheduleService.overLive(bo);
+        return AjaxResult.success();
+    }
 }

+ 9 - 0
zhongzheng-common/pom.xml

@@ -59,6 +59,8 @@
             <artifactId>jackson-databind</artifactId>
         </dependency>
 
+
+
         <!-- 二维码 -->
         <dependency>
             <groupId>com.google.zxing</groupId>
@@ -124,6 +126,13 @@
             <version>4.1.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>e-iceblue</groupId>
+            <artifactId>spire.doc.free</artifactId>
+            <version>3.9.0</version>
+        </dependency>
+
+
             <!-- yml解析器 -->
         <dependency>
             <groupId>org.yaml</groupId>

+ 1 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/config/WxSmallConfig.java

@@ -3,6 +3,7 @@ package com.zhongzheng.common.config;
 import com.zhongzheng.common.utils.wxpay.IWXPayDomain;
 import com.zhongzheng.common.utils.wxpay.WXPayConfig;
 import com.zhongzheng.common.utils.wxpay.WXPayConstants;
+
 import org.apache.commons.compress.utils.IOUtils;
 import org.springframework.beans.factory.annotation.Value;
 

+ 37 - 25
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java

@@ -5,6 +5,8 @@ import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.tokenizer.Word;
 import com.alibaba.fastjson.JSON;
+import com.spire.doc.Document;
+import com.spire.doc.FileFormat;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.common.core.redis.RedisCache;
@@ -35,14 +37,10 @@ import com.zhongzheng.modules.exam.domain.ExamKnowledge;
 import com.zhongzheng.modules.exam.service.IExamKnowledgeService;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
-import io.micrometer.core.lang.NonNull;
-import org.apache.poi.hwpf.extractor.WordExtractor;
-import org.apache.poi.ooxml.POIXMLDocument;
-import org.apache.poi.ooxml.extractor.POIXMLTextExtractor;
-import org.apache.poi.openxml4j.opc.OPCPackage;
-import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
+
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.apache.poi.xwpf.usermodel.XWPFTable;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -52,8 +50,7 @@ import com.github.pagehelper.Page;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -365,9 +362,17 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                 buffer = wordExtractor.getText();
                 wordExtractor.close();*/
             } else if (path.endsWith("docx")) {
+                String htmlContent = "";
+                InputStream in = file.getInputStream();
+
+               /* Document docF = new Document();
+                docF.loadFromStream(in,FileFormat.Docx);
+                docF.saveToFile("D:/wordtohtml.html", FileFormat.Html);
+                docF.dispose();*/
+
+
                 InputStream is = file.getInputStream();
                 XWPFDocument doc = new XWPFDocument(is);
-    //            XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
                 List<XWPFParagraph> paragraphList = doc.getParagraphs();
                 int type = -1;  //题目类型
                 boolean isOption = false; //是否判断题
@@ -389,6 +394,8 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                 while (i<paragraphList.size())
                 {
                     content = paragraphList.get(i).getText();
+                    System.out.println(content);
+                    System.out.println("AQW");
                    if(Validator.isNotEmpty(content)){
                        content =dealTxt(content);
                        if(content.startsWith("注意事项")){
@@ -547,14 +554,15 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                         j++;
                                     }
                                     q_content = q_content.replace("正确答案:", "");
-                                    QuestionChildAddBo bo1 = null;
+                                   /* QuestionChildAddBo bo1 = null;
                                     if(optionsList.size()==0){
                                         bo1 = new QuestionChildAddBo();
                                         optionsList.add(bo1);
                                     }
                                     bo1 = optionsList.get(0);
                                     bo1.setOptionsId(1L);
-                                    bo1.setAnalysisContent(q_content);
+                                    bo1.setAnalysisContent(q_content);*/
+                                    analysisContent+=q_content+"<br />";
                                     i = j-1; //底部会再执行加回来
                                 }
                             }
@@ -693,6 +701,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         String errorLog = ""; //错误提示
         String buffer = "";
         String importNo = ServletUtils.getEncoded("IMPORT");
+        int sort = 1;
         try{
             String path = file.getOriginalFilename();
             if (path.endsWith(".doc")) {
@@ -743,7 +752,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("B.")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(1L);
@@ -762,7 +771,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("C.")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(2L);
@@ -781,7 +790,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("D.")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(3L);
@@ -800,7 +809,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("E.")||tempTxt.startsWith("正确答案")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(4L);
@@ -819,7 +828,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("F.")||tempTxt.startsWith("正确答案")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(5L);
@@ -838,7 +847,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(Validator.isEmpty(tempTxt)||tempTxt.startsWith("G.")||tempTxt.startsWith("正确答案")){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             bo1.setOptionsId(6L);
@@ -880,18 +889,19 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                         if(checkKey(tempTxt)){
                                             break;
                                         }
-                                        q_content+=tempTxt;
+                                        q_content+=tempTxt+"<br />";
                                         j++;
                                     }
                                     q_content = q_content.replace("正确答案:", "");
-                                    QuestionChildAddBo bo1 = null;
+                                    /*QuestionChildAddBo bo1 = null;
                                     if(optionsList.size()==0){
                                         bo1 = new QuestionChildAddBo();
                                         optionsList.add(bo1);
                                     }
                                     bo1 = optionsList.get(0);
                                     bo1.setOptionsId(1L);
-                                    bo1.setAnalysisContent(q_content);
+                                    bo1.setAnalysisContent(q_content);*/
+                                    analysisContent+=q_content+"<br />";
                                     i = j-1; //底部会再执行加回来
                                 }
                             }
@@ -906,7 +916,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(checkKey(tempTxt)){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             analysisContent+=q_content;
@@ -922,7 +932,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(checkKey(tempTxt)){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             analysisContent = analysisContent + "\r\n" +q_content;
@@ -955,7 +965,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                                 if(checkKey(tempTxt)){
                                     break;
                                 }
-                                q_content+=tempTxt;
+                                q_content+=tempTxt+"<br />";
                                 j++;
                             }
                             q_content = q_content.replace("【问题】", "");
@@ -971,7 +981,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                         }
                         //题目正文
                         else{
-                            qContent += content;
+                            qContent += content+"<br />";
                         }
                     }else{
                         qContent = removeNo(qContent);
@@ -999,12 +1009,14 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                         bo.setImportNo(importNo);
                         bo.setPublishStatus(1);
                         bo.setBusinessList(businessList);
+                        bo.setImportSort(sort);
                         list.add(bo);
                         //清空数据
                         isOption = false;
                         type = -1;
                         qContent = "";
                         index++;
+                        sort++;
                         answerQuestion = null;
                         analysisContent = "";
                         optionsList.clear();
@@ -1018,7 +1030,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
                 throw new CustomException("请导入word文件!");
             }
         }catch (IOException e){
-            System.out.println("此文件不是word文件!A"+e.getMessage()+e.toString()+e.getLocalizedMessage());
+            System.out.println("此文件不是word文件!"+e.getMessage()+e.toString()+e.getLocalizedMessage());
         }
         return list;
     }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java

@@ -455,6 +455,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                 informUserAddBo.setSystemStatus(1);
                 informUserAddBo.setRemind("资料审核通过通知");
                 informUserAddBo.setGoodsId(userProfileVo.getGoodsId());
+                informUserAddBo.setOrderGoodsId(userProfileVo.getOrderGoodsId());
                 informUserAddBo.setGradeId(gradeId);
                 GoodsVo goodsVo1 = iGoodsService.queryById(userProfileVo.getGoodsId());
                 informUserAddBo.setText("尊敬的用户:您上传" + goodsVo1.getGoodsName() + "课程的承诺书审核成功");
@@ -472,6 +473,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                 informUserAddBo.setSystemStatus(3);
                 informUserAddBo.setRemind("资料审核通过通知");
                 informUserAddBo.setGoodsId(userProfileVo.getGoodsId());
+                informUserAddBo.setOrderGoodsId(userProfileVo.getOrderGoodsId());
                 GoodsVo goodsVo1 = iGoodsService.queryById(userProfileVo.getGoodsId());
                 informUserAddBo.setText("尊敬的用户:您上传" + goodsVo1.getGoodsName() + "课程的承诺书审核成功");
                 iInformUserService.insertByAddBo(informUserAddBo);
@@ -494,6 +496,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                 informUserAddBo.setSystemStatus(1);
                 informUserAddBo.setRemind("资料审核不通过通知");
                 informUserAddBo.setGoodsId(userProfileVo.getGoodsId());
+                informUserAddBo.setOrderGoodsId(userProfileVo.getOrderGoodsId());
                 informUserAddBo.setGradeId(gradeId);
                 GoodsVo goodsVo1 = iGoodsService.queryById(userProfileVo.getGoodsId());
                 informUserAddBo.setText("尊敬的用户:您上传" + goodsVo1.getGoodsName() + "课程的承诺书审核不通过,请重新完善吧");
@@ -511,6 +514,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                 informUserAddBo.setSystemStatus(3);
                 informUserAddBo.setRemind("资料审核不通过通知");
                 informUserAddBo.setGoodsId(userProfileVo.getGoodsId());
+                informUserAddBo.setOrderGoodsId(userProfileVo.getOrderGoodsId());
                 GoodsVo goodsVo1 = iGoodsService.queryById(userProfileVo.getGoodsId());
                 informUserAddBo.setText("尊敬的用户:您上传" + goodsVo1.getGoodsName() + "课程的承诺书审核不通过,请重新完善吧");
                 iInformUserService.insertByAddBo(informUserAddBo);

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseMenuMapper.java

@@ -17,7 +17,7 @@ import java.util.List;
  * @date 2021-10-12
  */
 public interface CourseMenuMapper extends BaseMapper<CourseMenu> {
-    List<CourseMenuVo> selectList(CourseMenuQueryBo bo);
+    List<CourseMenuVo> getList(CourseMenuQueryBo bo);
 
     List<CourseUserMenuVo> menuList(CourseMenuQueryBo bo);
 

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseSectionMapper.java

@@ -5,6 +5,8 @@ import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.CourseStreamingBusiness;
 import com.zhongzheng.modules.course.vo.CourseSectionVo;
+import com.zhongzheng.modules.grade.vo.ClassGradeVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -16,4 +18,6 @@ import java.util.List;
  */
 public interface CourseSectionMapper extends BaseMapper<CourseSection> {
     List<CourseSectionVo> selectSectionList(CourseSectionQueryBo bo);
+
+    List<CourseSectionVo> overSectionList(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseSectionService.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.vo.CourseSectionImport;
 import com.zhongzheng.modules.course.vo.CourseSectionVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.text.ParseException;
 import java.util.Collection;
@@ -58,4 +59,6 @@ public interface ICourseSectionService extends IService<CourseSection> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 	Map<String,Object> importSection(List<CourseSectionImport> sectionList, Boolean isUpdateSupport, String operName) throws ParseException;
+
+	List<CourseSectionVo> overSectionList(Long startTime,Long endTime);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseMenuServiceImpl.java

@@ -54,7 +54,7 @@ public class CourseMenuServiceImpl extends ServiceImpl<CourseMenuMapper, CourseM
 
     @Override
     public List<CourseMenuVo> selectList(CourseMenuQueryBo bo) {
-        return courseMenuMapper.selectList(bo);
+        return courseMenuMapper.getList(bo);
     }
 
     @Override

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSectionServiceImpl.java

@@ -316,6 +316,11 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
         return rs;
     }
 
+    @Override
+    public List<CourseSectionVo> overSectionList(Long startTime, Long endTime) {
+        return this.baseMapper.overSectionList(startTime,endTime);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public String insertByAddBoImport(CourseSectionAddBo bo, String errorLog, Integer no) {
         CourseSection add = BeanUtil.toBean(bo, CourseSection.class);

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsCourseMapper.java

@@ -15,5 +15,5 @@ import java.util.List;
  * @date 2021-10-12
  */
 public interface GoodsCourseMapper extends BaseMapper<GoodsCourse> {
-    List<CourseVo> selectList(Long goodsId);
+    List<CourseVo> getList(Long goodsId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsCourseServiceImpl.java

@@ -51,7 +51,7 @@ public class GoodsCourseServiceImpl extends ServiceImpl<GoodsCourseMapper, Goods
 
     @Override
     public List<CourseVo> selectList(Long goodsId) {
-        return this.baseMapper.selectList(goodsId);
+        return this.baseMapper.getList(goodsId);
     }
 
     /**

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeUserMapper.java

@@ -73,5 +73,6 @@ public interface ClassGradeUserMapper extends BaseMapper<ClassGradeUser> {
 
     List<ClassGradeUserGoodsVo> selectPeriodNotPush(UserQueryBo bo);
 
+    List<ClassGradeUserGoodsVo> selectGoodsGradeList(Long goodsId);
 
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -114,4 +114,5 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	List<ClassGradeUserGoodsVo> selectPeriodNotPush(UserQueryBo bo);
 
+	List<ClassGradeUserGoodsVo> selectGoodsGradeList(Long goodsId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -1606,6 +1606,11 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return baseMapper.selectPeriodNotPush(bo);
     }
 
+    @Override
+    public List<ClassGradeUserGoodsVo> selectGoodsGradeList(Long goodsId) {
+        return baseMapper.selectGoodsGradeList(goodsId);
+    }
+
 
     /**
      * 实体类转化成视图对象

+ 6 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodVo.java

@@ -170,7 +170,12 @@ public class ClassPeriodVo implements Comparable<ClassPeriodVo> {
 	@Excel(name = "学习状态 0 未完整看完 1完整播放 -1未看过")
 	@ApiModelProperty("学习状态 0 未完整看完 1完整播放 -1未看过")
 	private Integer studyStatus;
-
+	/** 直播开始时间 */
+	@ApiModelProperty("直播开始时间")
+	private Long liveStartTime;
+	/** 直播结束时间 */
+	@ApiModelProperty("直播结束时间")
+	private Long liveEndTime;
 
 	@Override
 	public int compareTo(ClassPeriodVo o) {

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java

@@ -46,4 +46,6 @@ public interface IScheduleService extends IService<PolyvVideo> {
     void officialInfoPush(UserQueryBo bo);
 
     void officialPeriodPush(UserQueryBo bo);
+
+    void overLive(UserQueryBo bo);
 }

+ 166 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -22,7 +22,18 @@ import com.zhongzheng.modules.alisms.vo.ResultBean;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.vo.ProfileTpVo;
 import com.zhongzheng.modules.base.vo.UserProfileVo;
+import com.zhongzheng.modules.course.bo.CourseChapterSectionQueryBo;
+import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
+import com.zhongzheng.modules.course.bo.CourseModuleChapterQueryBo;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
+import com.zhongzheng.modules.course.service.ICourseChapterSectionService;
+import com.zhongzheng.modules.course.service.ICourseMenuService;
+import com.zhongzheng.modules.course.service.ICourseModuleChapterService;
+import com.zhongzheng.modules.course.service.ICourseSectionService;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
+import com.zhongzheng.modules.course.vo.CourseMenuVo;
+import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
+import com.zhongzheng.modules.course.vo.CourseSectionVo;
 import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
 import com.zhongzheng.modules.exam.bo.ExamBeforeQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamApply;
@@ -35,17 +46,21 @@ import com.zhongzheng.modules.exam.vo.ExamApplyVo;
 import com.zhongzheng.modules.exam.vo.ExamBeforeVo;
 import com.zhongzheng.modules.exam.vo.ExamNumberVo;
 import com.zhongzheng.modules.exam.vo.ExamUserApplyVo;
+import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
+import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsCourseVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.ClassGradeUserQueryBo;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.domain.ClassGradeUserTemp;
-import com.zhongzheng.modules.grade.service.IClassGradeGoodsService;
-import com.zhongzheng.modules.grade.service.IClassGradeService;
-import com.zhongzheng.modules.grade.service.IClassGradeUserService;
-import com.zhongzheng.modules.grade.service.IClassGradeUserTempService;
+import com.zhongzheng.modules.grade.domain.UserPeriod;
+import com.zhongzheng.modules.grade.domain.UserPeriodStatus;
+import com.zhongzheng.modules.grade.service.*;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserGoodsVo;
 import com.zhongzheng.modules.grade.vo.ClassGradeUserVo;
+import com.zhongzheng.modules.grade.vo.ClassPeriodSectionVo;
+import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
 import com.zhongzheng.modules.inform.bo.InformQueryBo;
 import com.zhongzheng.modules.inform.bo.InformUserAddBo;
 import com.zhongzheng.modules.inform.domain.Inform;
@@ -78,6 +93,7 @@ import com.zhongzheng.modules.schedule.service.IScheduleService;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.*;
 import com.zhongzheng.modules.user.mapper.UserPlanMapper;
+import com.zhongzheng.modules.user.mapper.UserStudyRecordMapper;
 import com.zhongzheng.modules.user.service.*;
 import com.zhongzheng.modules.user.vo.*;
 import com.zhongzheng.modules.wx.service.IWxPayService;
@@ -138,6 +154,16 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     private IClassGradeUserService iClassGradeUserService;
     @Autowired
     private IOrderService iOrderService;
+    @Autowired
+    private IGoodsCourseService iGoodsCourseService;
+
+    @Autowired
+    private ICourseSectionService iCourseSectionService;
+    @Autowired
+    private ICourseMenuService iCourseMenuService;
+
+    @Autowired
+    private IUserPeriodStatusService iUserPeriodStatusService;
 
     @Autowired
     private IUserService iUserService;
@@ -148,10 +174,16 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Autowired
     private IClassGradeUserTempService iClassGradeUserTempService;
 
+    @Autowired
+    private ICourseChapterSectionService iCourseChapterSectionService;
+
+    @Autowired
+    private ICourseModuleChapterService iCourseModuleChapterService;
 
     @Autowired
     private IUserSubscribeService iUserSubscribeService;
 
+
     @Autowired
     private IUserPlanService userPlanService;
 
@@ -167,6 +199,12 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Autowired
     private ExamNumberMapper examNumberMapper;
 
+    @Autowired
+    private IUserPeriodService iUserPeriodService;
+
+    @Autowired
+    private UserStudyRecordMapper userStudyRecordMapper;
+
     @Value("${aliyun.sms.OpenTheGoodsCode}")
     private String OpenTheGoodsCode;
 
@@ -874,6 +912,130 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         }
     }
 
+    /**
+     * 直播结束
+     * @param bo
+     */
+    @Override
+    public void overLive(UserQueryBo bo) {
+        Long nowTime = DateUtils.getNowTime();
+        Long startTime = nowTime - 3600 * 24 ;
+        List<CourseSectionVo> list = iCourseSectionService.overSectionList(startTime,nowTime);
+        List<Long> courseIds = new ArrayList<>();//课程ID
+        List<ClassPeriodVo> periodList = new ArrayList<>();//学时列表
+        for(CourseSectionVo sectionVo : list){
+            System.out.println(sectionVo.getSectionId());
+            //当节为根目录时
+            CourseMenuQueryBo menuQueryBo = new CourseMenuQueryBo();
+            menuQueryBo.setType(3);
+            menuQueryBo.setMenuId(sectionVo.getSectionId());
+            List<CourseMenuVo> menuList =  iCourseMenuService.queryList(menuQueryBo);
+            for(CourseMenuVo menuVo : menuList){
+                GoodsCourseQueryBo courseQueryBo = new GoodsCourseQueryBo();
+                courseQueryBo.setCourseId(menuVo.getCourseId());
+                List<GoodsCourseVo> goodsList = iGoodsCourseService.queryList(courseQueryBo);
+                for(GoodsCourseVo goodsCourseVo :goodsList){
+                    ClassPeriodVo periodVo = new ClassPeriodVo();
+                    periodVo.setGoodsId(goodsCourseVo.getGoodsId());
+                    periodVo.setCourseId(menuVo.getCourseId());
+                    periodVo.setModuleId(0L);
+                    periodVo.setChapterId(0L);
+                    periodVo.setSectionId(sectionVo.getSectionId());
+                    periodList.add(periodVo);
+                }
+            }
+
+            //当节在章下
+            CourseChapterSectionQueryBo chapterSectionQueryBo = new CourseChapterSectionQueryBo();
+            chapterSectionQueryBo.setSectionId(sectionVo.getSectionId());
+            List<CourseChapterSectionVo> chapterList =  iCourseChapterSectionService.queryList(chapterSectionQueryBo);
+            for(CourseChapterSectionVo chapterSectionVo : chapterList){
+                //当章在根目录时
+                CourseMenuQueryBo menuQueryBo2 = new CourseMenuQueryBo();
+                menuQueryBo2.setType(2);
+                menuQueryBo2.setMenuId(chapterSectionVo.getChapterId());
+                List<CourseMenuVo> menuList2 =  iCourseMenuService.queryList(menuQueryBo2);
+                for(CourseMenuVo menuVo : menuList2){
+                    GoodsCourseQueryBo courseQueryBo = new GoodsCourseQueryBo();
+                    courseQueryBo.setCourseId(menuVo.getCourseId());
+                    List<GoodsCourseVo> goodsList = iGoodsCourseService.queryList(courseQueryBo);
+                    for(GoodsCourseVo goodsCourseVo :goodsList){
+                        ClassPeriodVo periodVo = new ClassPeriodVo();
+                        periodVo.setGoodsId(goodsCourseVo.getGoodsId());
+                        periodVo.setCourseId(menuVo.getCourseId());
+                        periodVo.setModuleId(0L);
+                        periodVo.setChapterId(chapterSectionVo.getChapterId());
+                        periodVo.setSectionId(sectionVo.getSectionId());
+                        periodList.add(periodVo);
+                    }
+                }
+
+                //当章在模块下
+                CourseModuleChapterQueryBo moduleChapterQueryBo = new CourseModuleChapterQueryBo();
+                moduleChapterQueryBo.setChapterId(chapterSectionVo.getChapterId());
+                List<CourseModuleChapterVo> moduleList = iCourseModuleChapterService.queryList(moduleChapterQueryBo);
+                for(CourseModuleChapterVo moduleChapterVo : moduleList){
+                    //当模块在根目录时
+                    CourseMenuQueryBo menuQueryBo3 = new CourseMenuQueryBo();
+                    menuQueryBo3.setType(1);
+                    menuQueryBo3.setMenuId(moduleChapterVo.getModuleId());
+                    List<CourseMenuVo> menuList3 =  iCourseMenuService.queryList(menuQueryBo3);
+                    for(CourseMenuVo menuVo : menuList3){
+                        GoodsCourseQueryBo courseQueryBo = new GoodsCourseQueryBo();
+                        courseQueryBo.setCourseId(menuVo.getCourseId());
+                        List<GoodsCourseVo> goodsList = iGoodsCourseService.queryList(courseQueryBo);
+                        for(GoodsCourseVo goodsCourseVo :goodsList){
+                            ClassPeriodVo periodVo = new ClassPeriodVo();
+                            periodVo.setGoodsId(goodsCourseVo.getGoodsId());
+                            periodVo.setCourseId(menuVo.getCourseId());
+                            periodVo.setModuleId(moduleChapterVo.getModuleId());
+                            periodVo.setChapterId(chapterSectionVo.getChapterId());
+                            periodVo.setSectionId(sectionVo.getSectionId());
+                            periodList.add(periodVo);
+                        }
+                    }
+                }
+            }
+        }
+
+        //获取所有直播结束节对应的用户班级列表
+        for(ClassPeriodVo periodVo :periodList){
+            List<ClassGradeUserGoodsVo> gradeList = iClassGradeUserService.selectGoodsGradeList(periodVo.getGoodsId());
+            for(ClassGradeUserGoodsVo gradeUserGoodsVo : gradeList){
+                UserStudyRecord entity = BeanUtil.toBean(periodVo, UserStudyRecord.class);
+                entity.setGradeId(gradeUserGoodsVo.getGradeId());
+                entity.setUserId(gradeUserGoodsVo.getUserId());
+                System.out.println(entity);
+                Long periodId = null;
+                // 学习无记录加一条学时审核记录
+                if (userStudyRecordMapper.selectStudyRecord(entity) < 1) {
+                    UserPeriod userPeriod = new UserPeriod();
+                    userPeriod.setUserId(entity.getUserId());
+                    userPeriod.setCourseId(entity.getCourseId());
+                    userPeriod.setSectionId(entity.getSectionId());
+                    userPeriod.setGoodsId(entity.getGoodsId());
+                    userPeriod.setType(1);
+                    userPeriod.setCreateTime(DateUtils.getNowTime());
+                    userPeriod.setUpdateTime(DateUtils.getNowTime());
+                    userPeriod.setModuleId(entity.getModuleId());
+                    userPeriod.setChapterId(entity.getChapterId());
+                    userPeriod.setGradeId(entity.getGradeId());
+                    iUserPeriodService.save(userPeriod);
+                    periodId = userPeriod.getId();
+                    UserPeriodStatus userPeriodStatusAddBo = new UserPeriodStatus();
+                    userPeriodStatusAddBo.setPeriodStatus(1);
+                    userPeriodStatusAddBo.setStatus(2);  //待审核状态
+                    userPeriodStatusAddBo.setPeriodId(userPeriod.getId());
+                    userPeriodStatusAddBo.setCreateTime(DateUtils.getNowTime());
+                    userPeriodStatusAddBo.setUpdateTime(DateUtils.getNowTime());
+                    iUserPeriodStatusService.save(userPeriodStatusAddBo);
+                    periodId = userPeriodStatusAddBo.getId();
+                }
+            }
+        }
+
+    }
+
     //获得可用学习天数
     private static int getDutyDays(Date  startDateStr, Date endDateStr,Long[] longs,Long studyDay)  {
         int result = 0;

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -85,4 +85,5 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 	List<ClassPeriodVo> menuAllList(UserStudyRecordQueryBo bo);
 
 	List<SectionStudyRecordVo> listUserRecord(UserStudyRecordQueryBo bo);
+
 }

+ 4 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -271,8 +271,8 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         redisCache.setCacheObject(key,1L,5, TimeUnit.SECONDS);//5秒
 
         CourseSectionVo courseSectionVo =iCourseSectionService.queryById(bo.getSectionId());
-        if(courseSectionVo.getSectionType()==2&&Validator.isNotEmpty(bo.getPhoto())){  //直播有拍照即学完
-            bo.setStatus(1);
+        if(courseSectionVo.getSectionType()==2&&Validator.isNotEmpty(bo.getPhoto())){  //直播有拍照即学完 第五阶段去掉这个需求
+        //    bo.setStatus(1);
         }
         UserStudyRecordQueryBo userStudyRecordQueryBo = BeanUtil.toBean(bo, UserStudyRecordQueryBo.class);
         UserStudyRecordVo first = queryFirst(userStudyRecordQueryBo);
@@ -510,6 +510,8 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     }
 
 
+
+
     //判断当前未看完的节是否是点击播放的节
     private boolean compareSection(UserStudyRecordVo recordVo,UserStudyRecordQueryBo entity){
         if(recordVo.getModuleId().equals(entity.getModuleId())){

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMenuMapper.xml

@@ -51,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="liveUrl" column="live_url"/>
     </resultMap>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.course.bo.CourseMenuQueryBo"  resultMap="CourseMenuResultVo">
+    <select id="getList" parameterType="com.zhongzheng.modules.course.bo.CourseMenuQueryBo"  resultMap="CourseMenuResultVo">
         SELECT
             m.*,
             CASE

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseSectionMapper.xml

@@ -200,4 +200,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND c.import_no = #{importNo}
         </if>
     </select>
+
+    <select id="overSectionList" parameterType="map" resultMap="CourseSectionResultVo">
+        SELECT * from course_section cs where cs.section_type = 2 and cs.live_end_time >= #{startTime} and  #{endTime} >= cs.live_end_time
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsCourseMapper.xml

@@ -44,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 
-    <select id="selectList" parameterType="Long" resultMap="CourseResultVo">
+    <select id="getList" parameterType="Long" resultMap="CourseResultVo">
         SELECT
         c.*,
         cet.education_name,

+ 13 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -1173,4 +1173,17 @@
           AND IFNULL(gu.period_plush,0) != 1
           AND gu.period_status = 1
     </select>
+
+    <select id="selectGoodsGradeList" parameterType="Long" resultMap="ClassGradeUserGoodsVoResult">
+        SELECT
+            cgg.goods_id,
+            cgg.grade_id,
+            cgu.user_id
+        FROM
+            class_grade_goods cgg
+                LEFT JOIN class_grade_user cgu ON cgg.grade_id = cgu.grade_id
+        WHERE
+            cgg.goods_id = #{goodsId}
+          AND cgu.user_id IS NOT NULL
+    </select>
 </mapper>

+ 14 - 4
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -129,6 +129,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="durationTime" column="duration_time"/>
         <result property="courseSort" column="course_sort"/>
         <result property="sectionType" column="section_type"/>
+        <result property="liveStartTime" column="live_start_time"/>
+        <result property="liveEndTime" column="live_end_time"/>
     </resultMap>
 
 
@@ -1087,7 +1089,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cm.menu_id as id,
         cm.course_id,
         1 as type,
-        NULL as section_type
+        NULL as section_type,
+        NULL as live_start_time,
+        NULL as live_end_time
         FROM
         course_menu cm
         where 1=1
@@ -1101,7 +1105,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cm.menu_id as id,
         cm.course_id,
         2 as type,
-        NULL as section_type
+        NULL as section_type,
+        NULL as live_start_time,
+        NULL as live_end_time
         FROM
         course_menu cm
         LEFT JOIN goods_course gc on gc.course_id = cm.course_id
@@ -1114,7 +1120,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         cm.menu_id as id,
         cm.course_id,
         3 as type,
-        cs.section_type
+        cs.section_type,
+        cs.live_start_time,
+        cs.live_end_time
         FROM
         course_menu cm
         LEFT JOIN course_section cs on cm.menu_id = cs.section_id
@@ -1130,7 +1138,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ccs.sort,
         ccs.section_id AS id,
         cs.section_type,
-        3 AS type
+        3 AS type,
+        cs.live_start_time,
+        cs.live_end_time
         FROM
         course_chapter_section ccs
         LEFT JOIN course_section cs on ccs.section_id = cs.section_id