he2802 2 lat temu
rodzic
commit
d0eabedc21
21 zmienionych plików z 278 dodań i 84 usunięć
  1. 1 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java
  2. 45 28
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  3. 1 12
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseAddBo.java
  4. 1 12
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseEditBo.java
  5. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java
  6. 15 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java
  7. 1 6
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java
  8. 8 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java
  9. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java
  10. 1 12
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseVo.java
  11. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  12. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  13. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateAddBo.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java
  15. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java
  16. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserCertificateServiceImpl.java
  17. 126 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  18. 0 6
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  19. 8 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml
  20. 5 2
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  21. 10 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java

@@ -206,6 +206,6 @@ public class UserStudyRecordController extends BaseController {
     public AjaxResult<Integer> syncSevenPublicClass(UserStudyRecordQueryBo bo){
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
-        return AjaxResult.success(iUserStudyRecordService.syncSevenPublicClass(bo.getOrderGoodsId(),bo.getUserId()));
+        return AjaxResult.success(iUserStudyRecordService.syncSevenModulePublicClass(bo.getOrderGoodsId(),bo.getUserId()));
     }
 }

+ 45 - 28
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -26,8 +26,13 @@ import com.zhongzheng.modules.base.mapper.CertificateTpMapper;
 import com.zhongzheng.modules.base.service.ICertificateTpService;
 import com.zhongzheng.modules.base.vo.CertificatePhotoVo;
 import com.zhongzheng.modules.base.vo.CertificateTpVo;
+import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.mapper.CourseMenuMapper;
+import com.zhongzheng.modules.course.service.ICourseMenuService;
+import com.zhongzheng.modules.course.service.ICourseModuleService;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.course.vo.CourseMenuVo;
+import com.zhongzheng.modules.course.vo.CourseModuleVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
@@ -91,6 +96,11 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
     @Autowired
     private IGoodsCourseService iGoodsCourseService;
 
+    @Autowired
+    private ICourseMenuService iCourseMenuService;
+
+    @Autowired
+    private ICourseModuleService iCourseModuleService;
 
     @Value("${certificate.host}")
     private String CERTIFICATE_HOST;
@@ -209,23 +219,30 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             courseQueryBo.setGoodsId(goodsVo.getGoodsId());
             List<CourseVo> courseVoList = iGoodsCourseService.selectList(courseQueryBo);
             for(CourseVo courseVo : courseVoList){
-                bo.setCourseId(courseVo.getCourseId());
-                //获取章列表
-                List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(bo);
-                BigDecimal totalTime = new BigDecimal(0);
-                for(CourseChapterVo chapterVo : chapterList){
-                    totalTime=totalTime.add(new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId())));
-                }
-                goodsVo.setClassHours(totalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
-                List<Long> tpIds = new ArrayList<>();
-                tpIds.add(courseVo.getCertificateTpId());
-                CertificateTpQueryBo queryBo = new CertificateTpQueryBo();
-                queryBo.setTpIds(tpIds);
-                queryBo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
-                List<CertificateTpVo> list = selectListByBo(queryBo);
-
-                for(CertificateTpVo tpVo : list){
-                    drawCertificate(tpVo,goodsVo,bo,userVo,studyRecordVo,classGradeUser,chapterList,courseVo.getCourseId());
+                CourseMenuQueryBo menuQueryBo = new CourseMenuQueryBo();
+                menuQueryBo.setCourseId(courseVo.getCourseId());
+                menuQueryBo.setType(1);
+                List<CourseMenuVo> menuVoList = iCourseMenuService.queryList(menuQueryBo);
+                for(CourseMenuVo menuVo : menuVoList){
+                    bo.setModuleId(menuVo.getMenuId());
+                    CourseModuleVo moduleVo = iCourseModuleService.queryById(menuVo.getMenuId());
+                    //获取章列表
+                    List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(bo);
+                    BigDecimal totalTime = new BigDecimal(0);
+                    for(CourseChapterVo chapterVo : chapterList){
+                        totalTime=totalTime.add(new BigDecimal(courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId())));
+                    }
+                    goodsVo.setClassHours(totalTime.divide(new BigDecimal(45*60),BigDecimal.ROUND_HALF_UP));
+                    List<Long> tpIds = new ArrayList<>();
+                    tpIds.add(moduleVo.getCertificateTpId());
+                    CertificateTpQueryBo queryBo = new CertificateTpQueryBo();
+                    queryBo.setTpIds(tpIds);
+                    queryBo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
+                    List<CertificateTpVo> list = selectListByBo(queryBo);
+
+                    for(CertificateTpVo tpVo : list){
+                        drawCertificate(tpVo,goodsVo,bo,userVo,studyRecordVo,classGradeUser,chapterList,courseVo.getCourseId());
+                    }
                 }
             }
 
@@ -234,7 +251,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         return null;
     }
 
-    private void  drawCertificate(CertificateTpVo tpVo,GoodsVo goodsVo,ClassGradeUserQueryBo bo,UserVo userVo,UserStudyRecordVo studyRecordVo,ClassGradeUser classGradeUser,List<CourseChapterVo> chapterList,Long courseId){
+    private void  drawCertificate(CertificateTpVo tpVo,GoodsVo goodsVo,ClassGradeUserQueryBo bo,UserVo userVo,UserStudyRecordVo studyRecordVo,ClassGradeUser classGradeUser,List<CourseChapterVo> chapterList,Long moduleId){
         String nowDate = DateUtils.getDate();
         if("certificate01".equals(tpVo.getKeyValue())){
             CertificatePhotoVo vo = new CertificatePhotoVo();
@@ -255,7 +272,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath = drawPic(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
 
         }
@@ -278,7 +295,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath = drawPic(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
 
         }
@@ -309,7 +326,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
         else if("certificate04".equals(tpVo.getKeyValue())){
@@ -339,7 +356,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
         else if("certificate05".equals(tpVo.getKeyValue())){
@@ -369,7 +386,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
         else if("certificate06".equals(tpVo.getKeyValue())){
@@ -399,7 +416,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
         else if("certificate07".equals(tpVo.getKeyValue())){
@@ -429,7 +446,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
         else if("certificate08".equals(tpVo.getKeyValue())){
@@ -459,12 +476,12 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             List<String> chapterListTxt = changeChapterList(chapterList);
             vo.setChapterList(chapterListTxt);
             String ossPath =drawPicOneBuild(vo);
-            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,courseId);
+            UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath,moduleId);
             iUserCertificateService.insertByAddBo(addBo);
         }
     }
 
-    private UserCertificateAddBo mergeData(ClassGradeUserQueryBo bo, GoodsVo goodsVo,CertificatePhotoVo vo,Long certificateTpId,String certificatePath,Long courseId){
+    private UserCertificateAddBo mergeData(ClassGradeUserQueryBo bo, GoodsVo goodsVo,CertificatePhotoVo vo,Long certificateTpId,String certificatePath,Long moduleId){
         UserCertificateAddBo addBo = new UserCertificateAddBo();
         addBo.setUserId(bo.getUserId());
         addBo.setGoodsId(bo.getGoodsId());
@@ -484,7 +501,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         addBo.setTrainEndTime(vo.getTrainEndTime());
         addBo.setChapterStr(ArrayUtils.toString(vo.getChapterList(), ","));
         addBo.setMoreCertificateStatus(goodsVo.getMoreCertificateStatus());
-        addBo.setCourseId(courseId);
+        addBo.setModuleId(moduleId);
         return addBo;
     }
     private String getCertificateCode(){

+ 1 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseAddBo.java

@@ -82,16 +82,5 @@ public class CourseAddBo {
     /** 优选生成 0否 1是 */
     @ApiModelProperty("优选生成 0否 1是")
     private Integer firstChoice;
-    /** 证书类型ID */
-    @Excel(name = "证书类型ID")
-    @ApiModelProperty("证书类型ID")
-    private Long certificateTypeId;
-    /** 证书ID */
-    @Excel(name = "证书ID")
-    @ApiModelProperty("证书ID")
-    private Long certificateId;
-    /** 证书模板ID */
-    @Excel(name = "证书模板ID")
-    @ApiModelProperty("证书模板ID")
-    private Long certificateTpId;
+
 }

+ 1 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseEditBo.java

@@ -100,16 +100,5 @@ public class CourseEditBo {
     /** 优选生成 0否 1是 */
     @ApiModelProperty("优选生成 0否 1是")
     private Integer firstChoice;
-    /** 证书类型ID */
-    @Excel(name = "证书类型ID")
-    @ApiModelProperty("证书类型ID")
-    private Long certificateTypeId;
-    /** 证书ID */
-    @Excel(name = "证书ID")
-    @ApiModelProperty("证书ID")
-    private Long certificateId;
-    /** 证书模板ID */
-    @Excel(name = "证书模板ID")
-    @ApiModelProperty("证书模板ID")
-    private Long certificateTpId;
+
 }

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleAddBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -53,4 +54,18 @@ public class CourseModuleAddBo {
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")
     private Long freeExamId;
+    /** 证书类型ID */
+    @Excel(name = "证书类型ID")
+    @ApiModelProperty("证书类型ID")
+    private Long certificateTypeId;
+    /** 证书ID */
+    @Excel(name = "证书ID")
+    @ApiModelProperty("证书ID")
+    private Long certificateId;
+    /** 证书模板ID */
+    @Excel(name = "证书模板ID")
+    @ApiModelProperty("证书模板ID")
+    private Long certificateTpId;
+    @ApiModelProperty("公共标识:1公共章 0非公共章")
+    private Integer commonSign;
 }

+ 15 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseModuleEditBo.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.course.bo;
 
+import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -62,5 +63,18 @@ public class CourseModuleEditBo {
     /** 赠送卷ID */
     @ApiModelProperty("赠送卷ID")
     private Long freeExamId;
-
+    /** 证书类型ID */
+    @Excel(name = "证书类型ID")
+    @ApiModelProperty("证书类型ID")
+    private Long certificateTypeId;
+    /** 证书ID */
+    @Excel(name = "证书ID")
+    @ApiModelProperty("证书ID")
+    private Long certificateId;
+    /** 证书模板ID */
+    @Excel(name = "证书模板ID")
+    @ApiModelProperty("证书模板ID")
+    private Long certificateTpId;
+    @ApiModelProperty("公共标识:1公共章 0非公共章")
+    private Integer commonSign;
 }

+ 1 - 6
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java

@@ -74,11 +74,6 @@ private static final long serialVersionUID=1L;
     private Long oId;
     /** 优选生成 0否 1是 */
     private Integer firstChoice;
-    /** 证书类型ID */
-    private Long certificateTypeId;
-    /** 证书ID */
-    private Long certificateId;
-    /** 证书模板ID */
-    private Long certificateTpId;
+
 
 }

+ 8 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java

@@ -51,5 +51,12 @@ private static final long serialVersionUID=1L;
     private Long tenantId;
     @TableField(exist = false)
     private Long oId;
-
+    /** 证书类型ID */
+    private Long certificateTypeId;
+    /** 证书ID */
+    private Long certificateId;
+    /** 证书模板ID */
+    private Long certificateTpId;
+    /** 公共标识:1公共章 0非公共章 */
+    private String commonSign;
 }

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseModuleVo.java

@@ -82,4 +82,18 @@ public class CourseModuleVo {
 	private Long freeExamId;
 	@ApiModelProperty("赠送卷名称")
 	private String freeExamName;
+	/** 证书类型ID */
+	@Excel(name = "证书类型ID")
+	@ApiModelProperty("证书类型ID")
+	private Long certificateTypeId;
+	/** 证书ID */
+	@Excel(name = "证书ID")
+	@ApiModelProperty("证书ID")
+	private Long certificateId;
+	/** 证书模板ID */
+	@Excel(name = "证书模板ID")
+	@ApiModelProperty("证书模板ID")
+	private Long certificateTpId;
+	@ApiModelProperty("公共标识:1公共章 0非公共章")
+	private Integer commonSign;
 }

+ 1 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseVo.java

@@ -121,16 +121,5 @@ public class CourseVo {
 	@Excel(name = "优选生成 0否 1是")
 	@ApiModelProperty("优选生成 0否 1是")
 	private Integer firstChoice;
-	/** 证书类型ID */
-	@Excel(name = "证书类型ID")
-	@ApiModelProperty("证书类型ID")
-	private Long certificateTypeId;
-	/** 证书ID */
-	@Excel(name = "证书ID")
-	@ApiModelProperty("证书ID")
-	private Long certificateId;
-	/** 证书模板ID */
-	@Excel(name = "证书模板ID")
-	@ApiModelProperty("证书模板ID")
-	private Long certificateTpId;
+
 }

+ 7 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -31,9 +31,11 @@ import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.service.ICourseBusinessService;
 import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
+import com.zhongzheng.modules.course.service.ICourseModuleService;
 import com.zhongzheng.modules.course.service.ICourseProjectTypeService;
 import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.course.vo.CourseModuleVo;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
@@ -183,6 +185,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
     @Autowired
     private IUserPeriodService iUserPeriodService;
 
+    @Autowired
+    private ICourseModuleService iCourseModuleService;
+
     @Autowired
     private ISysOldOrgService sysOldOrgService;
 
@@ -2763,6 +2768,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         for (ClassPeriodVo classPeriodVo : classPeriodVos) {
             //为模块搜索下面的章 和节 并搜索学时记录
             if (classPeriodVo.getType() == 1) {
+                CourseModuleVo moduleVo = iCourseModuleService.queryById(classPeriodVo.getId());
                 List<ClassPeriodChapterVo> classPeriodChapterVos = baseMapper.listperiodChapter(classPeriodVo.getId(), bo.getGoodsId(), classPeriodVo.getCourseId(), bo.getUserId(), bo.getGradeId(),bo.getOrderGoodsId());
                 Collections.sort(classPeriodChapterVos);
                 classPeriodChapterVos.addAll(baseMapper.listperiodModuleExam(bo.getGoodsId(), classPeriodVo.getCourseId(), bo.getUserId(), classPeriodVo.getId()));
@@ -2803,7 +2809,7 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
                                         classPeriodSectionVo.setStudyStartTime(photoList.get(0).getCreateTime());
                                     }
                                     if ((startTotalTime == 0L && Validator.isNotEmpty(classPeriodSectionVo.getStudyStartTime())) || (Validator.isNotEmpty(classPeriodSectionVo.getStudyStartTime()) && (startTotalTime.longValue() > classPeriodSectionVo.getStudyStartTime().longValue()))) {
-                                        if(og.getSevenClassCopy()==1||classPeriodChapterVo.getCommonSign()==0){
+                                        if(og.getSevenClassCopy()==1||moduleVo.getCommonSign()==0){
                                             startTotalTime = classPeriodSectionVo.getStudyStartTime();
                                         }
                                     }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -199,6 +199,9 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
     @Autowired
     private ICourseChapterService iCourseChapterService;
 
+    @Autowired
+    private ICourseModuleService iCourseModuleService;
+
     @Value("${oldStudySys.syncPath}")
     private String SYNC_PATH;
 
@@ -421,6 +424,16 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
             userPeriods.eq(UserPeriodStatus::getStatus, 2);
             userPeriodStatusService.update(userPeriodStatus, userPeriods);
 
+            CourseModuleVo moduleVo = iCourseModuleService.queryById(period.getModuleId());
+            if(Validator.isNotEmpty(moduleVo)&&Validator.isNotEmpty(moduleVo.getCommonSign())&&moduleVo.getCommonSign()==1){
+                if(bo.getStatus()==0){
+                    LambdaUpdateWrapper<OrderGoods> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                    objectLambdaUpdateWrapper.eq(OrderGoods::getOrderGoodsId, period.getOrderGoodsId());
+                    objectLambdaUpdateWrapper.set(OrderGoods::getSevenClassStatus, 4);
+                    iOrderGoodsService.update(null, objectLambdaUpdateWrapper);
+                }
+            }
+
             CourseChapterVo chapterVo = iCourseChapterService.queryById(period.getChapterId());
             if(Validator.isNotEmpty(chapterVo)&&Validator.isNotEmpty(chapterVo.getCommonSign())&&chapterVo.getCommonSign()==1){
                 if(bo.getStatus()==0){

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserCertificateAddBo.java

@@ -80,8 +80,8 @@ public class UserCertificateAddBo {
     @ApiModelProperty("章名,拼接")
     private String chapterStr;
     /** 课程id */
-    @ApiModelProperty("课程id")
-    private Long courseId;
+    @ApiModelProperty("模块id")
+    private Long moduleId;
     /** 1单证书 2多证书 */
     @ApiModelProperty("1单证书 2多证书")
     private Integer moreCertificateStatus;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserStudyRecordMapper.java

@@ -114,6 +114,8 @@ public interface UserStudyRecordMapper extends BaseMapper<UserStudyRecord> {
 
     UserStudyRecord getSevenStudyRecord(@Param("orderGoodsId") Long orderGoodsId,@Param("gradeId") Long gradeId);
 
+    UserStudyRecord getSevenModuleStudyRecord(@Param("orderGoodsId") Long orderGoodsId,@Param("gradeId") Long gradeId);
+
     UserPeriod selectSevenUserPeriod(UserStudyRecord bo);
 
     GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo queryBo);

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

@@ -146,6 +146,8 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 
 	Integer syncSevenPublicClass(Long orderGoodsId,Long userId);
 
+	Integer syncSevenModulePublicClass(Long orderGoodsId,Long userId);
+
 	GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo subjectStudyRecordQueryBo);
 
 	Boolean syncUserDateStudyLog();

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

@@ -84,6 +84,7 @@ public class UserCertificateServiceImpl extends ServiceImpl<UserCertificateMappe
         queryBo.setUserId(userCertificateVo.getUserId());
         queryBo.setGoodsId(userCertificateVo.getGoodsId());
         queryBo.setGradeId(userCertificateVo.getGradeId());
+
         List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(queryBo);
         for(CourseChapterVo chapterVo : chapterList){
             Long secTotalTime = courseMenuMapper.countChapterTotalTime(chapterVo.getChapterId());

+ 126 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -1375,6 +1375,132 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
         return 2;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Integer syncSevenModulePublicClass(Long orderGoodsId, Long userId) {
+        if(Validator.isEmpty(orderGoodsId)||Validator.isEmpty(userId)){
+            throw new CustomException("参数错误");
+        }
+        OrderGoods newOrderGoods = iOrderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderGoodsId, orderGoodsId));
+        if(newOrderGoods.getSevenClassStatus()==1||newOrderGoods.getSevenClassStatus()==2||newOrderGoods.getSevenClassStatus()==3){
+            return 0;
+        }
+        Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, newOrderGoods.getGoodsId()));
+        String fullName;
+        CourseBusinessQueryBo queryBusinessBo = new CourseBusinessQueryBo();
+        queryBusinessBo.setId(goods.getBusinessId());
+        fullName = iCourseBusinessService.queryFullName(queryBusinessBo);
+        if(!fullName.contains("继续教育")||!fullName.contains("施工现场专业人员")){
+            return 0;
+        }
+        if(Validator.isEmpty(newOrderGoods.getSevenYear())){
+            return 0;
+        }
+        OrderGoods oldOrderGoods = iOrderGoodsService.getSevenLastOne(goods.getProjectId(),newOrderGoods.getSevenYear(),userId);
+        if(Validator.isEmpty(oldOrderGoods)){
+            newOrderGoods.setSevenClassVersion(newOrderGoods.getSevenClassVersion()+1);
+            newOrderGoods.setSevenClassStatus(1);
+            newOrderGoods.setUpdateTime(DateUtils.getNowTime());
+            iOrderGoodsService.updateById(newOrderGoods);
+            return 1;
+        }
+        if(newOrderGoods.getSevenClassStatus()==4){
+            newOrderGoods.setSevenClassVersion(oldOrderGoods.getSevenClassVersion()+1);
+            newOrderGoods.setSevenClassStatus(1);
+            newOrderGoods.setUpdateTime(DateUtils.getNowTime());
+            iOrderGoodsService.updateById(newOrderGoods);
+            return 1;
+        }
+        UserStudyRecord userStudyRecord = baseMapper.getSevenModuleStudyRecord(oldOrderGoods.getOrderGoodsId(),oldOrderGoods.getGradeId());
+        if(Validator.isEmpty(userStudyRecord)){
+            throw new CustomException("公共学习数据错误");
+        }
+        LambdaQueryWrapper<GoodsCourse> lqwCourse = Wrappers.lambdaQuery();
+        lqwCourse.eq(GoodsCourse::getGoodsId, goods.getGoodsId());
+        List<GoodsCourse> courseList = iGoodsCourseService.list(lqwCourse);
+        Long courseId = null;
+        for(GoodsCourse course : courseList){
+            CourseMenu courseMenu = iCourseMenuService.getOne(new LambdaQueryWrapper<CourseMenu>().eq(CourseMenu::getCourseId, course.getCourseId())
+                    .eq(CourseMenu::getType, 1).eq(CourseMenu::getMenuId, userStudyRecord.getModuleId()).eq(CourseMenu::getParentId, 0));
+            if(Validator.isNotEmpty(courseMenu)){
+                courseId = course.getCourseId();
+            }
+        }
+        if(Validator.isEmpty(courseId)){
+            throw new CustomException("课程定位错误");
+        }
+        String key = "SYNC_SEVEN_Record:"+orderGoodsId;
+        Long keyStatus = redisCache.getCacheObject(key);
+        if(Validator.isNotEmpty(keyStatus)&&keyStatus==100L){
+            return 100;
+        }
+        redisCache.setCacheObject(key, 100L,5, TimeUnit.SECONDS);
+        LambdaQueryWrapper<UserStudyRecord> lqw = Wrappers.lambdaQuery();
+        lqw.eq(UserStudyRecord::getOrderGoodsId, userStudyRecord.getOrderGoodsId());
+        lqw.eq(UserStudyRecord::getGradeId, userStudyRecord.getGradeId());
+        lqw.eq(UserStudyRecord::getModuleId, userStudyRecord.getModuleId());
+        lqw.eq(UserStudyRecord::getCurrentStatus, 1);
+        List<UserStudyRecord> list = this.list(lqw);
+        for(UserStudyRecord vo : list){
+            UserStudyRecord copyVo = BeanUtil.toBean(vo, UserStudyRecord.class);
+            copyVo.setOrderGoodsId(newOrderGoods.getOrderGoodsId());
+            copyVo.setGradeId(newOrderGoods.getGradeId());
+            copyVo.setGoodsId(newOrderGoods.getGoodsId());
+            copyVo.setCourseId(courseId);
+            copyVo.setRecordId(null);
+            this.save(copyVo);
+            Long periodId = null;
+            UserPeriod copyUserPeriod = baseMapper.selectSevenUserPeriod(copyVo);
+            UserPeriodStatus copyUserPeriodStatus;
+            UserPeriod userPeriod = baseMapper.selectSevenUserPeriod(vo);
+            if(Validator.isEmpty(userPeriod)){
+                throw new CustomException("学时数据错误");
+            }
+            UserPeriodStatus userPeriodStatus = iUserPeriodStatusService.getOne(new LambdaQueryWrapper<UserPeriodStatus>()
+                    .eq(UserPeriodStatus::getPeriodId, userPeriod.getId())
+                    .eq(UserPeriodStatus::getStatus, 1)
+                    .eq(UserPeriodStatus::getPeriodStatus, 1));
+            if(Validator.isEmpty(copyUserPeriod)){
+                copyUserPeriod = BeanUtil.toBean(userPeriod, UserPeriod.class);
+                copyUserPeriod.setOrderGoodsId(newOrderGoods.getOrderGoodsId());
+                copyUserPeriod.setGradeId(newOrderGoods.getGradeId());
+                copyUserPeriod.setGoodsId(newOrderGoods.getGoodsId());
+                copyUserPeriod.setCourseId(courseId);
+                copyUserPeriod.setId(null);
+                iUserPeriodService.save(copyUserPeriod);
+
+                copyUserPeriodStatus = BeanUtil.toBean(userPeriodStatus, UserPeriodStatus.class);
+                copyUserPeriodStatus.setPeriodId(copyUserPeriod.getId());
+                copyUserPeriodStatus.setId(null);
+                iUserPeriodStatusService.save(copyUserPeriodStatus);
+            }else{
+                copyUserPeriodStatus = iUserPeriodStatusService.getOne(new LambdaQueryWrapper<UserPeriodStatus>()
+                        .eq(UserPeriodStatus::getPeriodId, copyUserPeriod.getId())
+                        .eq(UserPeriodStatus::getStatus, 1)
+                        .eq(UserPeriodStatus::getPeriodStatus, 1));
+            }
+            LambdaQueryWrapper<UserStudyRecordPhoto> lqwPhoto = Wrappers.lambdaQuery();
+            lqwPhoto.eq(UserStudyRecordPhoto::getPeriodId, userPeriodStatus.getId());
+            lqwPhoto.eq(UserStudyRecordPhoto::getRecordId, vo.getRecordId());
+            lqwPhoto.eq(UserStudyRecordPhoto::getStatus, 1);
+            List<UserStudyRecordPhoto> listPhoto = userStudyRecordPhotoService.list(lqwPhoto);
+            for(UserStudyRecordPhoto photo : listPhoto){
+                UserStudyRecordPhoto copyPhoto = BeanUtil.toBean(photo, UserStudyRecordPhoto.class);
+                copyPhoto.setRecordId(copyVo.getRecordId());
+                copyPhoto.setPeriodId(copyUserPeriodStatus.getId());
+                copyPhoto.setId(null);
+                userStudyRecordPhotoService.save(copyPhoto);
+            }
+        }
+        newOrderGoods.setSevenClassVersion(oldOrderGoods.getSevenClassVersion());
+        newOrderGoods.setSevenClassStatus(2);
+        newOrderGoods.setSevenClassCopy(oldOrderGoods.getOrderGoodsId());
+        newOrderGoods.setUpdateTime(DateUtils.getNowTime());
+        iOrderGoodsService.updateById(newOrderGoods);
+        redisCache.deleteObject(key);
+        return 2;
+    }
+
     @Override
     public GoodsSectionNumVo getGoodsSectionNum(SubjectStudyRecordQueryBo queryBo) {
         String tenantId = ServletUtils.getRequest().getHeader("TenantId");

+ 0 - 6
zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml

@@ -27,9 +27,6 @@
         <result property="projectId" column="project_id"/>
         <result property="courseShow" column="course_show"/>
         <result property="firstChoice" column="first_choice"/>
-        <result property="certificateTypeId" column="certificate_type_id"/>
-        <result property="certificateId" column="certificate_id"/>
-        <result property="certificateTpId" column="certificate_tp_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.course.vo.CourseVo" id="CourseResultVo">
@@ -61,9 +58,6 @@
         <result property="subjectName" column="subject_name"/>
         <result property="courseShow" column="course_show"/>
         <result property="firstChoice" column="first_choice"/>
-        <result property="certificateTypeId" column="certificate_type_id"/>
-        <result property="certificateId" column="certificate_id"/>
-        <result property="certificateTpId" column="certificate_tp_id"/>
         <collection property="goodsList" column="course_id" select="findGoodsList"/>
     </resultMap>
 

+ 8 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml

@@ -16,6 +16,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="code" column="code"/>
         <result property="examType" column="exam_type"/>
         <result property="freeExamId" column="free_exam_id"/>
+        <result property="certificateTypeId" column="certificate_type_id"/>
+        <result property="certificateId" column="certificate_id"/>
+        <result property="certificateTpId" column="certificate_tp_id"/>
+        <result property="commonSign" column="common_sign"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.course.vo.CourseModuleVo" id="CourseModuleResultVo">
@@ -34,6 +38,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="examType" column="exam_type"/>
         <result property="freeExamId" column="free_exam_id"/>
         <result property="freeExamName" column="free_exam_name"/>
+        <result property="certificateTypeId" column="certificate_type_id"/>
+        <result property="certificateId" column="certificate_id"/>
+        <result property="certificateTpId" column="certificate_tp_id"/>
+        <result property="commonSign" column="common_sign"/>
         <collection property="businessList" column="module_id" select="findBusinessList" />
         <collection property="courseList" column="module_id" select="findCourseList"/>
     </resultMap>

+ 5 - 2
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -1539,6 +1539,9 @@
                 LEFT JOIN goods_course gc ON gc.course_id = m.course_id
         WHERE
             gc.goods_id = #{goodsId}
+            <if test="moduleId != null and moreCertificateStatus == 2 ">
+                AND p.module_id = #{moduleId}
+            </if>
           AND m.type =  1 UNION
         SELECT
             cc.chapter_id,
@@ -1550,8 +1553,8 @@
                 LEFT JOIN goods_course gc ON gc.course_id = m.course_id
         WHERE
             gc.goods_id = #{goodsId}
-            <if test="courseId != null and moreCertificateStatus == 2 ">
-                AND gc.course_id = #{courseId}
+            <if test="moduleId != null and moreCertificateStatus == 2 ">
+                AND 1 = 0
             </if>
           AND m.type =  2)ui
         ORDER BY ui.sort

+ 10 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -1786,6 +1786,16 @@
             usr.order_goods_id = #{orderGoodsId} AND usr.grade_id = #{gradeId} AND cc.common_sign = 1 AND usr.current_status = 1 AND usr.`status` = 1  LIMIT 1
     </select>
 
+    <select id="getSevenModuleStudyRecord" parameterType="map" resultType="com.zhongzheng.modules.user.domain.UserStudyRecord">
+        SELECT
+            usr.*
+        FROM
+            user_study_record usr
+                LEFT JOIN course_module cm ON usr.module_id = cm.module_id
+        WHERE
+            usr.order_goods_id = #{orderGoodsId} AND usr.grade_id = #{gradeId} AND cm.common_sign = 1 AND usr.current_status = 1 AND usr.`status` = 1  LIMIT 1
+    </select>
+
     <select id="selectSevenUserPeriod" parameterType="com.zhongzheng.modules.user.domain.UserBankRecord" resultType="com.zhongzheng.modules.grade.domain.UserPeriod">
         SELECT
         up.*