he2802 3 роки тому
батько
коміт
0a49286fe0
83 змінених файлів з 866 додано та 90 видалено
  1. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/ExamController.java
  2. 9 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionChapterController.java
  3. 9 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java
  4. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionModuleController.java
  5. 14 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  6. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseChapterController.java
  7. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java
  8. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseModuleController.java
  9. 10 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseSectionController.java
  10. 18 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/goods/GoodsController.java
  11. 1 1
      zhongzheng-admin/src/main/resources/application-dev.yml
  12. 4 4
      zhongzheng-admin/src/main/resources/application-prod.yml
  13. 10 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java
  14. 20 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonCourseController.java
  15. 8 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java
  16. 2 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java
  17. 4 4
      zhongzheng-api/src/main/resources/application-prod.yml
  18. 1 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java
  19. 1 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserDetailsServiceImpl.java
  20. 18 20
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  21. 92 4
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java
  22. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/bo/ActivityRecommendGoodsQueryBo.java
  23. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityRecommendGoodsMapper.java
  24. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityRecommendGoodsService.java
  25. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityRecommendService.java
  26. 12 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendGoodsServiceImpl.java
  27. 34 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java
  28. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionBatchDelBo.java
  29. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionChapterExamQueryBo.java
  30. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionModuleChapterQueryBo.java
  31. 3 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamService.java
  32. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterService.java
  33. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleService.java
  34. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java
  35. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java
  36. 13 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterServiceImpl.java
  37. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleServiceImpl.java
  38. 13 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  39. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/QuestionVo.java
  40. 35 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  41. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseChapterService.java
  42. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseModuleService.java
  43. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseSectionService.java
  44. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseService.java
  45. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java
  46. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseChapterServiceImpl.java
  47. 11 7
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleChapterServiceImpl.java
  48. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleServiceImpl.java
  49. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseSectionServiceImpl.java
  50. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  51. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAttachedQueryBo.java
  52. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsBatchDelBo.java
  53. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsBatchUpdateStatusBo.java
  54. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java
  55. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  56. 16 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsAttachedServiceImpl.java
  57. 42 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  58. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedPaperVo.java
  59. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentVo.java
  60. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java
  61. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockTimeVo.java
  62. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  63. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  64. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserBankRecordMapper.java
  65. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserBankRecordService.java
  66. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java
  67. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java
  68. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  69. 3 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  70. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/SectionStudyRecordVo.java
  71. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/bo/WxShareGoodsBo.java
  72. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/IWxLoginService.java
  73. 3 0
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityRecommendGoodsMapper.xml
  74. 4 1
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml
  75. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml
  76. 31 5
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionModuleChapterMapper.xml
  77. 14 2
      zhongzheng-system/src/main/resources/mapper/modules/collect/CollectQuestionMapper.xml
  78. 2 2
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseMapper.xml
  79. 32 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml
  80. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  81. 6 0
      zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml
  82. 13 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserBankRecordMapper.xml
  83. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/ExamController.java

@@ -60,6 +60,16 @@ public class ExamController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 试卷批量删除
+     */
+    @ApiOperation("试卷批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelExam(@RequestBody QuestionBatchDelBo bo) {
+        return toAjax(iExamService.batchDelExam(bo) ? 1 : 0);
+    }
+
+
     /**
      * 导出试卷列表
      */

+ 9 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionChapterController.java

@@ -61,6 +61,15 @@ public class QuestionChapterController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 章卷批量删除
+     */
+    @ApiOperation("章卷批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelChapterExam(@RequestBody QuestionBatchDelBo bo) {
+        return toAjax(iQuestionChapterService.batchDelChapterExam(bo) ? 1 : 0);
+    }
+
     /**
      * 导出章卷列表
      */

+ 9 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -80,6 +80,15 @@ public class QuestionController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 题目批量删除
+     */
+    @ApiOperation("题目批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelQuestion(@RequestBody QuestionBatchDelBo bo) {
+        return toAjax(iQuestionService.batchDelQuestion(bo) ? 1 : 0);
+    }
+
     /**
      * 导出题库题目列表
      */

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionModuleController.java

@@ -13,6 +13,7 @@ import com.zhongzheng.modules.bank.service.IQuestionModuleService;
 import com.zhongzheng.modules.bank.vo.ExamQuestionVo;
 import com.zhongzheng.modules.bank.vo.QuestionChapterVo;
 import com.zhongzheng.modules.bank.vo.QuestionModuleVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,6 +64,15 @@ public class QuestionModuleController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 模块卷批量删除
+     */
+    @ApiOperation("模块卷批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelModuleExam(@RequestBody QuestionBatchDelBo bo) {
+        return toAjax(iQuestionModuleService.batchDelModuleExam(bo) ? 1 : 0);
+    }
+
     /**
      * 导出题目模块列表
      */

+ 14 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -11,6 +11,7 @@ import com.zhongzheng.common.utils.file.FileUploadUtils;
 import com.zhongzheng.common.utils.file.FileUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.framework.config.ServerConfig;
+import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsService;
@@ -25,6 +26,7 @@ import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.service.impl.OrderServiceImpl;
 import com.zhongzheng.modules.system.service.ISysUserService;
 import com.zhongzheng.modules.user.vo.UserExportVo;
+import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,6 +63,9 @@ public class CommonController
     @Autowired
     private IOrderService iOrderService;
 
+    @Autowired
+    private WxLoginService wxLoginService;
+
     /**
      * 通用下载请求
      *
@@ -194,4 +199,13 @@ public class CommonController
         iOrderService.arrangeGrade("安管继续教育网络班B类",890L,3097L,null,114L,"",174L);
         return AjaxResult.success();
     }
+
+
+    @ApiOperation("获取商品分享码")
+    @PostMapping("/shareGoodsCode")
+    public AjaxResult getWxSmallAccessToken(@RequestBody WxShareGoodsBo bo)
+    {
+        String token = wxLoginService.shareGoodsCode(bo);
+        return AjaxResult.success(token);
+    }
 }

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseChapterController.java

@@ -12,6 +12,7 @@ import com.zhongzheng.modules.course.service.ICourseChapterBusinessService;
 import com.zhongzheng.modules.course.service.ICourseChapterService;
 import com.zhongzheng.modules.course.service.ICourseSectionBusinessService;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,6 +61,15 @@ public class CourseChapterController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 章批量删除
+     */
+    @ApiOperation("章批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelChapter(@RequestBody GoodsBatchDelBo bo) {
+        return toAjax(iCourseChapterService.batchDelChapter(bo) ? 1 : 0);
+    }
+
     /**
      * 导出课程大章列表
      */

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseController.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.modules.course.bo.*;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import com.zhongzheng.modules.goods.vo.ExportLiveGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsLiveExportVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
@@ -62,6 +63,15 @@ public class CourseController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 课程批量删除
+     */
+    @ApiOperation("课程批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelCourse(@RequestBody GoodsBatchDelBo bo) {
+        return toAjax(iCourseService.batchDelCourse(bo) ? 1 : 0);
+    }
+
     /**
      * 导出课程列表
      */

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseModuleController.java

@@ -23,6 +23,7 @@ import com.zhongzheng.modules.course.service.ICourseSectionService;
 import com.zhongzheng.modules.course.vo.CourseChapterSectionImport;
 import com.zhongzheng.modules.course.vo.CourseModuleVo;
 import com.zhongzheng.modules.course.vo.CourseSectionImport;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -77,6 +78,15 @@ public class CourseModuleController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 模块批量删除
+     */
+    @ApiOperation("模块批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelModule(@RequestBody GoodsBatchDelBo bo) {
+        return toAjax(iCourseModuleService.batchDelModule(bo) ? 1 : 0);
+    }
+
     /**
      * 导出课程模块列表
      */

+ 10 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseSectionController.java

@@ -20,6 +20,7 @@ import com.zhongzheng.modules.course.service.ICourseSectionWatchPerService;
 import com.zhongzheng.modules.course.vo.CourseSectionImport;
 import com.zhongzheng.modules.course.vo.CourseSectionVo;
 import com.zhongzheng.modules.course.vo.CourseSectionWatchPerVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -74,6 +75,15 @@ public class CourseSectionController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 节批量删除
+     */
+    @ApiOperation("节批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelSection(@RequestBody GoodsBatchDelBo bo) {
+        return toAjax(iCourseSectionService.batchDelSection(bo) ? 1 : 0);
+    }
+
     /**
      * 导出课程小节列表
      */

+ 18 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/goods/GoodsController.java

@@ -153,6 +153,24 @@ public class GoodsController extends BaseController {
         return toAjax(iGoodsService.updateByEditBo(bo) ? 1 : 0);
     }
 
+    /**
+     * 商品批量上下架
+     */
+    @ApiOperation("商品批量上下架")
+    @PostMapping("/batch/updateStatus")
+    public AjaxResult<Void> batchUpdateStatus(@RequestBody GoodsBatchUpdateStatusBo bo) {
+        return toAjax(iGoodsService.GoodsBatchUpdateStatusBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 商品批量删除
+     */
+    @ApiOperation("商品批量删除")
+    @PostMapping("/batch/del")
+    public AjaxResult<Void> batchDelGoods(@RequestBody GoodsBatchDelBo bo) {
+        return toAjax(iGoodsService.batchDelGoods(bo) ? 1 : 0);
+    }
+
     /**
      * 删除商品
      */

+ 1 - 1
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -130,7 +130,7 @@ certificate:
 
 liveGotoURL: http://120.79.166.78:19014/
 
-enCodeVersion: develop
+enCodeVersion: release
 
 oldStudySys:
     syncPath: http://gdxypx.xy.com/System/BussinessApi/PostUserStudyRecords

+ 4 - 4
zhongzheng-admin/src/main/resources/application-prod.yml

@@ -136,7 +136,7 @@ oldStudySys:
     syncPath: https://www.xyyxt.net/System/BussinessApi/PostUserStudyRecords
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
-    infoAccount: peixunjigou
-    token: 0ca175b9c0f726a831d895e26933246
+    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoAccount: GDSXY
+    token: 01b5d9833987efdff54483cdc9720da6

+ 10 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java

@@ -1,12 +1,14 @@
 package com.zhongzheng.controller.cmmon;
 
 import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo;
 import com.zhongzheng.modules.activity.service.IActivityRecommendService;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -51,6 +53,13 @@ public class ActivityRecommendController extends BaseController {
         return iActivityRecommendService.getGoodsList(bo);
     }
 
-
+    /**
+     * 查询推荐商品科目列表
+     */
+    @ApiOperation("查询推荐商品科目列表")
+    @GetMapping("/subjectList")
+    public AjaxResult<List<CourseSubjectVo>> getSubjectList(ActivityRecommendGoodsQueryBo bo) {
+        return AjaxResult.success(iActivityRecommendService.getSubjectList(bo));
+    }
 
 }

+ 20 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonCourseController.java

@@ -4,6 +4,9 @@ import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
+import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
+import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.bank.bo.ExamQuestionQueryBo;
 import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
 import com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo;
@@ -14,14 +17,17 @@ import com.zhongzheng.modules.bank.vo.ExamQuestionVo;
 import com.zhongzheng.modules.bank.vo.ExamVo;
 import com.zhongzheng.modules.bank.vo.QuestionChapterVo;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
+import com.zhongzheng.modules.course.bo.CourseSubjectQueryBo;
 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.ICourseSubjectService;
 import com.zhongzheng.modules.course.vo.*;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsCourseTeacherQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
 import com.zhongzheng.modules.goods.service.IGoodsCourseTeacherService;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import com.zhongzheng.modules.goods.vo.GoodsCourseTeacherVo;
 import io.swagger.annotations.Api;
@@ -34,6 +40,8 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -56,6 +64,8 @@ public class CommonCourseController extends BaseController {
 
     private final IGoodsCourseTeacherService iGoodsCourseTeacherService;
 
+    private final ICourseSubjectService iCourseSubjectService;
+
 
 
     /**
@@ -100,4 +110,14 @@ public class CommonCourseController extends BaseController {
         return AjaxResult.success(list);
     }
 
+    /**
+     * 查询科目列表
+     */
+    @ApiOperation("查询科目列表")
+    @GetMapping("/subjectList")
+    public AjaxResult<List<CourseSubjectVo>> getSubjectList(CourseSubjectQueryBo bo) {
+        bo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
+        List<CourseSubjectVo> list = iCourseSubjectService.queryList(bo);
+        return AjaxResult.success(list);
+    }
 }

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

@@ -157,6 +157,14 @@ public class UserStudyRecordController extends BaseController {
         return AjaxResult.success(iUserStudyRecordService.getUserWatchLast(bo));
     }
 
+    @ApiOperation("查询用户最后一次学习的信息(含卷)")
+    @GetMapping("/getUserStudyLast")
+    public AjaxResult<SectionStudyRecordVo> getUserStudyLast(UserStudyRecordQueryBo bo){
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        return AjaxResult.success(iUserStudyRecordService.getUserStudyLast(bo));
+    }
+
     @ApiOperation("查询保利威直播间的播放状态")
     @GetMapping("/getChannelBasicInfo")
     public AjaxResult<LiveChannelBasicInfoResponse> getChannelBasicInfo(PolyvLiveQueryBo bo) throws Exception {

+ 2 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java

@@ -16,6 +16,7 @@ import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -146,7 +147,7 @@ public class WxLoginController
         return AjaxResult.success(map);
     }
 
-    @ApiOperation("刷新令牌")
+    @ApiOperation("刷新登录令牌")
     @GetMapping("/refreshToken/{userAccount}")
     public AjaxResult refreshToken(@PathVariable("userAccount") String userAccount)
     {
@@ -157,5 +158,4 @@ public class WxLoginController
     }
 
 
-
 }

+ 4 - 4
zhongzheng-api/src/main/resources/application-prod.yml

@@ -148,7 +148,7 @@ oldStudySys:
     syncPath: https://www.xyyxt.net/System/PostUserStudyRecords
 
 officialPush:
-    infoPath: http://jypt-dev.gdcic.net/organjxjy/ShangBaoMingdan
-    periodPath: http://jypt-dev.gdcic.net/organjxjy/XueshiShenqing
-    infoAccount: peixunjigou
-    token: 0ca175b9c0f726a831d895e26933246
+    infoPath: http://jypt.gdcic.net/organjxjy/ShangBaoMingdan
+    periodPath: http://jypt.gdcic.net/organjxjy/XueshiShenqing
+    infoAccount: GDSXY
+    token: 01b5d9833987efdff54483cdc9720da6

+ 1 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -14,6 +14,7 @@ import javax.net.ssl.X509TrustManager;
 
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import org.apache.http.Consts;
 import org.apache.http.Header;
 import cn.hutool.core.lang.Validator;

+ 1 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserDetailsServiceImpl.java

@@ -52,7 +52,7 @@ public class UserDetailsServiceImpl implements UserDetailsService
             log.info("登录用户:{} 已被删除.", username);
             throw new BaseException("对不起,您的账号:" + username + " 已被删除");
         }
-        else if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
+        else if (user.getStatus().longValue()==0L)
         {
             log.info("登录用户:{} 已被停用.", username);
             throw new BaseException("对不起,您的账号:" + username + " 已停用");

+ 18 - 20
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -627,24 +627,26 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         if(bo.getTel().length()!=11){
             throw new CustomException("手机号格式错误");
         }
-        if(bo.getIdCard()==null){
+        /*if(bo.getIdCard()==null){
             throw new CustomException("身份证不能为空");
-        }
-        if(bo.getIdCard().length()!=18){
+        }*/
+        /*if(bo.getIdCard().length()!=18){
             throw new CustomException("身份证格式错误");
         }
         if(bo.getRealname()==null){
             throw new CustomException("真实姓名不能为空");
-        }
+        }*/
         User user = getOne(new LambdaQueryWrapper<User>()
                 .eq(User::getTelphone,bo.getTel()).last("limit 1"));
         if(Validator.isNotNull(user)){
             throw new CustomException("该手机号已注册");
         }
-        User user2 = getOne(new LambdaQueryWrapper<User>()
-                .eq(User::getIdCard,bo.getIdCard()).last("limit 1"));
-        if(Validator.isNotNull(user2)){
-            throw new CustomException("该身份证已被使用");
+        if(Validator.isNotEmpty(bo.getIdCard())){
+            User user2 = getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getIdCard,bo.getIdCard()).last("limit 1"));
+            if(Validator.isNotNull(user2)){
+                throw new CustomException("该身份证已被使用");
+            }
         }
         User inertData = new User();
         inertData.setTelphone(bo.getTel());
@@ -855,21 +857,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public List<UserIdCardBatchVo> batchUserId(List<UserIdCardAddBo> list) {
         List<UserIdCardBatchVo> list1 = new ArrayList<>();
         for(UserIdCardAddBo bo : list){
-            if(Validator.isEmpty(bo.getIdCard())){
-                throw new CustomException("用户身份证缺失");
-            }
             if(Validator.isEmpty(bo.getTelphone())){
                 throw new CustomException("用户手机号码缺失");
             }
-            if(Validator.isEmpty(bo.getRealname())){
-                throw new CustomException("用户姓名缺失");
-            }
             User user1 = getOne(new LambdaQueryWrapper<User>()
                     .eq(User::getTelphone,bo.getTelphone()).last("limit 1"));
             //手机号码存在
             if(Validator.isNotEmpty(user1)){
                 UserIdCardBatchVo user = BeanUtil.toBean(bo, UserIdCardBatchVo.class);
-                if(Validator.isNotEmpty(user1.getIdCard())&&!bo.getIdCard().equals(user1.getIdCard())){
+                if(Validator.isNotEmpty(bo.getIdCard())&&Validator.isNotEmpty(user1.getIdCard())&&!user1.getIdCard().equals(bo.getIdCard())){
                     throw new CustomException(bo.getRealname()+"身份证号码不一致");
                 }
                 if(Validator.isEmpty(user1.getIdCard())){
@@ -882,11 +878,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 list1.add(user);
                 continue;
             }else{
-                User user2 = getOne(new LambdaQueryWrapper<User>()
-                        .eq(User::getIdCard,bo.getIdCard()).last("limit 1"));
-                if(Validator.isNotEmpty(user2)){
-                    throw new CustomException(bo.getRealname()+"身份证号码已存在,创建失败");
-                }
+               /* if(Validator.isNotEmpty(bo.getIdCard())){
+                    User user2 = getOne(new LambdaQueryWrapper<User>()
+                            .eq(User::getIdCard,bo.getIdCard()).last("limit 1"));
+                    if(Validator.isNotEmpty(user2)){
+                        throw new CustomException(bo.getRealname()+"身份证号码已存在,创建失败");
+                    }
+                }*/
                 UserSystemRegisterBo registerBo = BeanUtil.toBean(bo, UserSystemRegisterBo.class);
                 registerBo.setTel(bo.getTelphone());
                 registerBo.setRegisterPlat("4");

+ 92 - 4
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.client.j2se.MatrixToImageWriter;
@@ -20,6 +21,8 @@ import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.common.utils.ip.IpUtils;
 import com.zhongzheng.modules.alisms.service.IAliSmsService;
 import com.zhongzheng.modules.course.bo.SectionWatchPerBo;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.user.bo.UserWxFollowAddBo;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -28,6 +31,7 @@ import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserWxFollowService;
 import com.zhongzheng.modules.wx.bo.TemplatData;
 import com.zhongzheng.modules.wx.bo.WxLoginBody;
+import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
 import com.zhongzheng.modules.wx.service.IWxLoginService;
 import org.apache.commons.codec.binary.Base64;
 import org.slf4j.Logger;
@@ -38,10 +42,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.ByteArrayOutputStream;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -142,6 +143,9 @@ public class WxLoginService implements IWxLoginService {
     @Autowired
     private IUserWxFollowService iUserWxFollowService;
 
+    @Autowired
+    private IGoodsService iGoodsService;
+
 
     public Map<String, String> test_login() {
         String unionId = "oQ2yp56PgQ-PfwN4vxTZhR5eTpzk";
@@ -531,6 +535,19 @@ public class WxLoginService implements IWxLoginService {
         obj.put("scene",sceneParam.toString());
         obj.put("env_version",enCodeVersion);
         String result = HttpUtils.sendPost(url, obj);
+        if (result.contains("errcode")){
+            List<String> codes = Arrays.asList("40001", "42001");
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
+                //微信access_token 过期或者失效,刷新access_token
+                String key = "WX_SMALL_ACCESS_TOKEN";
+                redisCache.deleteObject(key);
+                String wxGzhAccessTokenTo = getWxSmallAccessToken();
+                String paramTo = String.format(small_wxEnCodeParam, wxGzhAccessTokenTo);
+                String urlTo = small_wxEnCodeUrl + "?" + paramTo;
+                return HttpUtils.sendPost(urlTo, obj);
+            }
+        }
         return result;
     }
 
@@ -880,6 +897,19 @@ public class WxLoginService implements IWxLoginService {
         obj.put("scene",String.format("tid=%s",activityId));
         obj.put("env_version",enCodeVersion);
         String result = HttpUtils.sendPost(url, obj);
+        if (result.contains("errcode")){
+            List<String> codes = Arrays.asList("40001", "42001");
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
+                //微信access_token 过期或者失效,刷新access_token
+                String key = "WX_SMALL_ACCESS_TOKEN";
+                redisCache.deleteObject(key);
+                String wxGzhAccessTokenTo = getWxSmallAccessToken();
+                String paramTo = String.format(small_wxEnCodeParam, wxGzhAccessTokenTo);
+                String urlTo = small_wxEnCodeUrl + "?" + paramTo;
+                return HttpUtils.sendPost(urlTo, obj);
+            }
+        }
         return result;
     }
 
@@ -894,6 +924,64 @@ public class WxLoginService implements IWxLoginService {
         obj.put("env_version",enCodeVersion);
 //        obj.put("env_version","trial");
         String result = HttpUtils.sendPost(url, obj);
+        if (result.contains("errcode")){
+            List<String> codes = Arrays.asList("40001", "42001");
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
+                //微信access_token 过期或者失效,刷新access_token
+                String key = "WX_SMALL_ACCESS_TOKEN";
+                redisCache.deleteObject(key);
+                String wxGzhAccessTokenTo = getWxSmallAccessToken();
+                String paramTo = String.format(small_wxEnCodeParam, wxGzhAccessTokenTo);
+                String urlTo = small_wxEnCodeUrl + "?" + paramTo;
+                return HttpUtils.sendPost(urlTo, obj);
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public String shareGoodsCode(WxShareGoodsBo bo) {
+        GoodsVo goodsVo = iGoodsService.queryById(bo.getGoodsId());
+        if(Validator.isEmpty(goodsVo)){
+            throw new CustomException("商品ID错误");
+        }
+        StringBuilder sceneParam = new StringBuilder();
+        String pageUrl = "";
+
+        String wxGzhAccessToken = getWxSmallAccessToken();
+        String param = String.format(small_wxEnCodeParam, wxGzhAccessToken);
+        String url = small_wxEnCodeUrl + "?" + param;
+        JSONObject obj = new JSONObject();
+
+        if(goodsVo.getGoodsType()==2){
+            pageUrl = "pages2/bank/detail";
+            sceneParam.append("id=").append(goodsVo.getGoodsId()).append("&");
+            sceneParam.append("sc=").append(bo.getShareCode());
+        }
+        if(goodsVo.getGoodsType()==1||goodsVo.getGoodsType()==6){
+            pageUrl = "pages3/course/detail";
+            sceneParam.append("id=").append(goodsVo.getGoodsId()).append("&");
+            sceneParam.append("goodsType=").append(goodsVo.getGoodsType()).append("&");
+            sceneParam.append("sc=").append(bo.getShareCode());
+        }
+        obj.put("page", pageUrl);
+        obj.put("scene",sceneParam.toString());
+        obj.put("env_version",enCodeVersion);
+        String result = HttpUtils.sendPost(url, obj);
+        if (result.contains("errcode")){
+            List<String> codes = Arrays.asList("40001", "42001");
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
+                //微信access_token 过期或者失效,刷新access_token
+                String key = "WX_SMALL_ACCESS_TOKEN";
+                redisCache.deleteObject(key);
+                String wxGzhAccessTokenTo = getWxSmallAccessToken();
+                String paramTo = String.format(small_wxEnCodeParam, wxGzhAccessTokenTo);
+                String urlTo = small_wxEnCodeUrl + "?" + paramTo;
+                return HttpUtils.sendPost(urlTo, obj);
+            }
+        }
         return result;
     }
 

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/bo/ActivityRecommendGoodsQueryBo.java

@@ -42,6 +42,8 @@ public class ActivityRecommendGoodsQueryBo extends BaseEntity {
 	/** 商品id */
 	@ApiModelProperty("商品id")
 	private Long goodsId;
+	@ApiModelProperty("科目ID")
+	private Long subjectId;
 	/** 排序 */
 	@ApiModelProperty("排序")
 	private Integer sort;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityRecommendGoodsMapper.java

@@ -19,5 +19,5 @@ public interface ActivityRecommendGoodsMapper extends BaseMapper<ActivityRecomme
 
     Page<GoodsVo> getGoodsListByPage(Page<Object> objectPage,@Param("recommendId") Long recommendId);
 
-    Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(Page<Object> objectPage,@Param("recommendId") Long recommendId);
+    Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(Page<Object> objectPage,@Param("recommendId") Long recommendId,@Param("subjectId") Long subjectId);
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityRecommendGoodsService.java

@@ -7,6 +7,7 @@ import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsEditBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.activity.domain.ActivityRecommendGoods;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 
 import java.util.Collection;
@@ -56,5 +57,5 @@ public interface IActivityRecommendGoodsService extends IService<ActivityRecomme
 
     Page<GoodsVo> getGoodsListByPage(Page<Object> objectPage, Long recommendId);
 
-	Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(Page<Object> objectPage, Long recommendId);
+	Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(Page<Object> objectPage, Long recommendId,Long subjectId);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityRecommendService.java

@@ -9,6 +9,7 @@ import com.zhongzheng.modules.activity.domain.ActivityRecommend;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -58,4 +59,6 @@ public interface IActivityRecommendService extends IService<ActivityRecommend> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 	TableDataInfo<ActivityRecommendGoodsVo> getGoodsList(ActivityRecommendGoodsQueryBo bo);
+
+	List<CourseSubjectVo> getSubjectList(ActivityRecommendGoodsQueryBo bo);
 }

+ 12 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendGoodsServiceImpl.java

@@ -3,6 +3,9 @@ package com.zhongzheng.modules.activity.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsAddBo;
@@ -13,16 +16,20 @@ import com.zhongzheng.modules.activity.mapper.ActivityRecommendGoodsMapper;
 import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.course.domain.CourseChapterSection;
+import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.service.ICourseSubjectService;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
+import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -110,7 +117,7 @@ public class ActivityRecommendGoodsServiceImpl extends ServiceImpl<ActivityRecom
     }
 
     @Override
-    public com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(com.baomidou.mybatisplus.extension.plugins.pagination.Page<Object> objectPage, Long recommendId) {
-        return baseMapper.getRecommendGoodsListByPage(objectPage,recommendId);
+    public com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityRecommendGoodsVo> getRecommendGoodsListByPage(com.baomidou.mybatisplus.extension.plugins.pagination.Page<Object> objectPage, Long recommendId,Long subjectId) {
+        return baseMapper.getRecommendGoodsListByPage(objectPage,recommendId,subjectId);
     }
 }

+ 34 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java

@@ -19,10 +19,15 @@ import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
 import com.zhongzheng.modules.activity.service.IActivityRecommendService;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
+import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.service.ICourseSubjectService;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsSpecAttributeRelation;
+import com.zhongzheng.modules.goods.domain.GoodsSpecTemplate;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.service.IGoodsSpecAttributeRelationService;
+import com.zhongzheng.modules.goods.service.IGoodsSpecTemplateService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +52,10 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
     private IGoodsService iGoodsService;
     @Autowired
     private IGoodsSpecAttributeRelationService goodsSpecAttributeRelationService;
+    @Autowired
+    private ICourseSubjectService iCourseSubjectService;
+    @Autowired
+    private IGoodsSpecTemplateService goodsSpecTemplateService;
 
 
     @Override
@@ -195,13 +204,16 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
     public TableDataInfo<ActivityRecommendGoodsVo> getGoodsList(ActivityRecommendGoodsQueryBo bo) {
         TableDataInfo<ActivityRecommendGoodsVo> result = new TableDataInfo<>();
         com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityRecommendGoodsVo> page =
-                iActivityRecommendGoodsService.getRecommendGoodsListByPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(bo.getPageNum(), bo.getPageSize()),bo.getRecommendId());
+                iActivityRecommendGoodsService.getRecommendGoodsListByPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(bo.getPageNum(), bo.getPageSize()),bo.getRecommendId(),bo.getSubjectId());
         if (CollectionUtils.isEmpty(page.getRecords())){
             return result;
         }
         page.getRecords().forEach(item -> {
             Goods goods = iGoodsService.getById(item.getGoodsId());
-            if (ObjectUtils.isNotNull(goods.getSpecTemplateId())){
+            if (ObjectUtils.isNotNull(goods.getSpecTemplateId()) &&
+                    goodsSpecTemplateService.count(new LambdaQueryWrapper<GoodsSpecTemplate>()
+                    .eq(GoodsSpecTemplate::getSpecTemplateId,goods.getSpecTemplateId())
+                    .eq(GoodsSpecTemplate::getStatus,1)) > 0){
                 item.setSpecTemplateId(goods.getSpecTemplateId());
             }else {
                 List<GoodsSpecAttributeRelation> list = goodsSpecAttributeRelationService.list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
@@ -219,4 +231,24 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
         result.setCode(200);
         return result;
     }
+
+    @Override
+    public List<CourseSubjectVo> getSubjectList(ActivityRecommendGoodsQueryBo bo) {
+        List<ActivityRecommendGoods> recommendGoods = iActivityRecommendGoodsService.list(new LambdaQueryWrapper<ActivityRecommendGoods>()
+                .eq(ActivityRecommendGoods::getRecommendId, bo.getRecommendId())
+                .orderByAsc(ActivityRecommendGoods::getSort));
+        if (CollectionUtils.isEmpty(recommendGoods)){
+            return new ArrayList<>();
+        }
+        List<Goods> goodsList = iGoodsService.listByIds(recommendGoods.stream().map(ActivityRecommendGoods::getGoodsId).collect(Collectors.toList()));
+        Set<Long> subjectIds = new HashSet<>();
+        goodsList.stream().filter(x -> com.baomidou.mybatisplus.core.toolkit.StringUtils.isNotBlank(x.getSubjectIds())).forEach(item -> {
+            Arrays.stream(item.getSubjectIds().split(",")).forEach(id -> {
+                subjectIds.add(Long.valueOf(id));
+            });
+        });
+        //获取科目信息
+        List<CourseSubject> subjects = iCourseSubjectService.listByIds(subjectIds);
+        return subjects.stream().map(item -> BeanUtil.toBean(item,CourseSubjectVo.class)).collect(Collectors.toList());
+    }
 }

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionBatchDelBo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.bank.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 批量删除
+ *
+ * @author  hjl
+ * @date 2021-10-28
+ */
+@Data
+@ApiModel("批量删除")
+public class QuestionBatchDelBo {
+
+    @ApiModelProperty("商品id集合")
+    private List<Long> ids;
+
+    @ApiModelProperty("状态 1有效 0无效")
+    private Integer status;
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionChapterExamQueryBo.java

@@ -55,4 +55,6 @@ public class QuestionChapterExamQueryBo extends BaseEntity {
 	@ApiModelProperty("模块卷ID")
 	private Long moduleExamId;
 	private Long orderGoodsId;
+	@ApiModelProperty("试卷类型ID")
+	private Long paperId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/bo/QuestionModuleChapterQueryBo.java

@@ -51,4 +51,7 @@ public class QuestionModuleChapterQueryBo extends BaseEntity {
 
 	@ApiModelProperty("商品ID")
 	private Long goodsId;
+
+	@ApiModelProperty("试卷类型ID")
+	private Long paperId;
 }

+ 3 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IExamService.java

@@ -1,10 +1,7 @@
 package com.zhongzheng.modules.bank.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zhongzheng.modules.bank.bo.ExamAddBo;
-import com.zhongzheng.modules.bank.bo.ExamEditBo;
-import com.zhongzheng.modules.bank.bo.ExamQueryBo;
-import com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo;
+import com.zhongzheng.modules.bank.bo.*;
 import com.zhongzheng.modules.bank.domain.Exam;
 import com.zhongzheng.modules.bank.vo.ExamVo;
 import com.zhongzheng.modules.exam.bo.ExamPaperQueryBo;
@@ -58,4 +55,6 @@ public interface IExamService extends IService<Exam> {
 	ExamVo getNextExam(QuestionChapterExamQueryBo bo);
 
 	List<ExamVo> getPaperExamList(ExamPaperQueryBo bo);
+
+    boolean batchDelExam(QuestionBatchDelBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionChapterService.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.bank.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.bank.bo.QuestionBatchDelBo;
 import com.zhongzheng.modules.bank.bo.QuestionChapterAddBo;
 import com.zhongzheng.modules.bank.bo.QuestionChapterEditBo;
 import com.zhongzheng.modules.bank.bo.QuestionChapterQueryBo;
@@ -56,4 +57,6 @@ public interface IQuestionChapterService extends IService<QuestionChapter> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    boolean batchDelChapterExam(QuestionBatchDelBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionModuleService.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.modules.bank.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.bank.bo.QuestionBatchDelBo;
 import com.zhongzheng.modules.bank.bo.QuestionModuleAddBo;
 import com.zhongzheng.modules.bank.bo.QuestionModuleEditBo;
 import com.zhongzheng.modules.bank.bo.QuestionModuleQueryBo;
@@ -51,4 +52,6 @@ public interface IQuestionModuleService extends IService<QuestionModule> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    boolean batchDelModuleExam(QuestionBatchDelBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java

@@ -4,6 +4,7 @@ package com.zhongzheng.modules.bank.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.modules.bank.bo.QuestionAddBo;
+import com.zhongzheng.modules.bank.bo.QuestionBatchDelBo;
 import com.zhongzheng.modules.bank.bo.QuestionEditBo;
 import com.zhongzheng.modules.bank.bo.QuestionQueryBo;
 import com.zhongzheng.modules.bank.domain.Question;
@@ -80,4 +81,6 @@ public interface IQuestionService extends IService<Question> {
     String importWordQuestion(MultipartFile file, Long eduId, Long projectId, Long businessId, Long subjectId);
 
 	Map<String,Object> importWordQuestionList(MultipartFile file, Long eduId, Long projectId, Long businessId, Long subjectId);
+
+    boolean batchDelQuestion(QuestionBatchDelBo bo);
 }

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/ExamServiceImpl.java

@@ -3,6 +3,8 @@ package com.zhongzheng.modules.bank.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -274,4 +276,14 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements IE
     public List<ExamVo> getPaperExamList(ExamPaperQueryBo bo) {
         return this.baseMapper.getPaperExamList(bo);
     }
+
+    @Override
+    public boolean batchDelExam(QuestionBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("试卷ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<Exam>()
+                .set(Exam::getStatus,bo.getStatus())
+                .in(Exam::getExamId,bo.getIds()));
+    }
 }

+ 13 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionChapterServiceImpl.java

@@ -2,14 +2,13 @@ package com.zhongzheng.modules.bank.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.bank.bo.*;
-import com.zhongzheng.modules.bank.domain.QuestionBusiness;
-import com.zhongzheng.modules.bank.domain.QuestionChapter;
-import com.zhongzheng.modules.bank.domain.QuestionChapterExam;
-import com.zhongzheng.modules.bank.domain.QuestionModuleChapter;
+import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.mapper.QuestionChapterMapper;
 import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
 import com.zhongzheng.modules.bank.service.IQuestionChapterExamService;
@@ -204,4 +203,14 @@ public class QuestionChapterServiceImpl extends ServiceImpl<QuestionChapterMappe
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public boolean batchDelChapterExam(QuestionBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("章卷ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<QuestionChapter>()
+                .set(QuestionChapter::getStatus,bo.getStatus())
+                .in(QuestionChapter::getChapterExamId,bo.getIds()));
+    }
 }

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionModuleServiceImpl.java

@@ -2,6 +2,8 @@ package com.zhongzheng.modules.bank.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -14,6 +16,7 @@ import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
 import com.zhongzheng.modules.bank.service.IQuestionModuleChapterService;
 import com.zhongzheng.modules.bank.service.IQuestionModuleService;
 import com.zhongzheng.modules.bank.vo.QuestionModuleVo;
+import com.zhongzheng.modules.course.domain.CourseModule;
 import com.zhongzheng.modules.goods.domain.GoodsAttached;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -181,4 +184,14 @@ public class QuestionModuleServiceImpl extends ServiceImpl<QuestionModuleMapper,
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public boolean batchDelModuleExam(QuestionBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("模块卷ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<QuestionModule>()
+                .set(QuestionModule::getStatus,bo.getStatus())
+                .in(QuestionModule::getModuleExamId,bo.getIds()));
+    }
 }

+ 13 - 4
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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.entity.SysUser;
 import com.zhongzheng.common.core.redis.RedisCache;
@@ -15,10 +17,7 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.bank.bo.*;
-import com.zhongzheng.modules.bank.domain.ExamQuestion;
-import com.zhongzheng.modules.bank.domain.Question;
-import com.zhongzheng.modules.bank.domain.QuestionBusiness;
-import com.zhongzheng.modules.bank.domain.QuestionModuleChapter;
+import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.mapper.QuestionMapper;
 import com.zhongzheng.modules.bank.service.IExamQuestionService;
 import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
@@ -1716,6 +1715,16 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         return result;
     }
 
+    @Override
+    public boolean batchDelQuestion(QuestionBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("题目ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<Question>()
+                .set(Question::getStatus,bo.getStatus())
+                .in(Question::getQuestionId,bo.getIds()));
+    }
+
 
     private String removeNo(String txt) {
         int intIndex = txt.indexOf("、");

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/vo/QuestionVo.java

@@ -111,4 +111,13 @@ public class QuestionVo {
 	@Excel(name = "导入顺序")
 	@ApiModelProperty("导入顺序")
 	private Integer importSort;
+
+	@ApiModelProperty("试卷ID")
+	private Long examId;
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+	@ApiModelProperty("收藏题目ID")
+	private Long collectQuestionId;
 }

+ 35 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -170,12 +170,13 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
         //获取章列表
         List<CourseChapterVo> chapterList =  iClassGradeUserService.findChapterList(bo);
         UserVo userVo = iUserService.queryById(bo.getUserId());
-        if(Validator.isNotEmpty(goodsVo.getCertificateIds())){
-            String[] s = goodsVo.getCertificateIds().split(",");
+        if(Validator.isNotEmpty(goodsVo.getCertificateTpId())){
+    //        String[] s = goodsVo.getCertificateIds().split(",");
             List<Long> tpIds = new ArrayList<>();
-            for(String each : s) {
+           /* for(String each : s) {
                 tpIds.add(Long.valueOf(each));
-            }
+            }*/
+            tpIds.add(goodsVo.getCertificateTpId());
             CertificateTpQueryBo queryBo = new CertificateTpQueryBo();
             queryBo.setTpIds(tpIds);
             queryBo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
@@ -378,6 +379,36 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
                     UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath);
                     iUserCertificateService.insertByAddBo(addBo);
                 }
+                else if("certificate08".equals(tpVo.getKeyValue())){
+                    CertificatePhotoVo vo = new CertificatePhotoVo();
+                    String code = "XYPX02YJ"+nowDate.substring(0, 4)+getCertificateCode();
+                    vo.setCode(code);
+                    vo.setRealname(userVo.getRealname());
+                    vo.setIdCard(userVo.getIdCard());
+                    String date = DateUtils.timestampToDate(goodsVo.getCreateTime());
+                    vo.setYear(date.substring(0, 4));
+                    vo.setType("选修");
+                    vo.setMajor("网络班");
+                    String sex = "男";
+                    if(Validator.isNotEmpty(userVo.getSex())&&userVo.getSex()==2){
+                        sex = "女";
+                    }
+                    vo.setSex(sex);
+                    vo.setClassHours(goodsVo.getClassHours()+"");
+                    vo.setDateY(nowDate.substring(0, 4));
+                    vo.setDateM(nowDate.substring(5, 7));
+                    vo.setDateD(nowDate.substring(8, 10));
+                    vo.setMajor("一级建造师继续教育培训");
+                    vo.setRemark1("其中水");
+                    vo.setRemark2("利水电课 "+goodsVo.getClassHours()+" 学时,测试成绩合格。");
+                    vo.setTrainStartTime(studyRecordVo.getFirstStartTime()); //培训开始时间
+                    vo.setTrainEndTime(classGradeUser.getPeriodWaitTime());//学时变为待审核时间,也是学习完成时间
+                    List<String> chapterListTxt = changeChapterList(chapterList);
+                    vo.setChapterList(chapterListTxt);
+                    String ossPath =drawPicOneBuild(vo);
+                    UserCertificateAddBo addBo = mergeData(bo,goodsVo,vo,tpVo.getTpId(),ossPath);
+                    iUserCertificateService.insertByAddBo(addBo);
+                }
             }
         }
         return null;

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

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.course.bo.CourseChapterEditBo;
 import com.zhongzheng.modules.course.bo.CourseChapterQueryBo;
 import com.zhongzheng.modules.course.domain.CourseChapter;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 
 import java.util.Collection;
 import java.util.List;
@@ -55,4 +56,6 @@ public interface ICourseChapterService extends IService<CourseChapter> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    boolean batchDelChapter(GoodsBatchDelBo bo);
 }

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

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.course.bo.CourseModuleEditBo;
 import com.zhongzheng.modules.course.bo.CourseModuleQueryBo;
 import com.zhongzheng.modules.course.domain.CourseModule;
 import com.zhongzheng.modules.course.vo.CourseModuleVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 
 import java.util.Collection;
 import java.util.List;
@@ -51,4 +52,6 @@ public interface ICourseModuleService extends IService<CourseModule> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    boolean batchDelModule(GoodsBatchDelBo bo);
 }

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

@@ -11,6 +11,7 @@ import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.vo.CourseChapterSectionImport;
 import com.zhongzheng.modules.course.vo.CourseSectionImport;
 import com.zhongzheng.modules.course.vo.CourseSectionVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import net.polyv.live.v1.entity.chat.LiveGetMessageListResponse;
 import org.apache.ibatis.annotations.Param;
 
@@ -74,4 +75,6 @@ public interface ICourseSectionService extends IService<CourseSection> {
 	List<CourseSectionVo> livingSectionList(Long userId);
 
 	List<LiveGetMessageListResponse.MessageList> GetHistoryChatMsg(CourseSectionQueryBo bo) throws IOException, NoSuchAlgorithmException;
+
+    boolean batchDelSection(GoodsBatchDelBo bo);
 }

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

@@ -7,6 +7,7 @@ import com.zhongzheng.modules.course.bo.*;
 import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.vo.CourseUserVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
@@ -76,4 +77,6 @@ public interface ICourseService extends IService<Course> {
 	CourseUserVo getCourseUserVoInfo(Long courseId);
 
 	Long rebuildNext(ClassGradeUserQueryBo bo);
+
+    boolean batchDelCourse(GoodsBatchDelBo bo);
 }

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java

@@ -63,7 +63,7 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
 
     @Override
     public List<CourseBusinessVo> queryList(CourseBusinessQueryBo bo) {
-        List<CourseBusinessVo> vo = baseMapper.queryList(bo).stream().collect(Collectors.toList());
+        List<CourseBusinessVo> vo = entity2Vo(baseMapper.queryList(bo));
         if (CollectionUtils.isEmpty(vo)){
             return new ArrayList<>();
         }
@@ -76,7 +76,7 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
                 item.setTopicId(courseTopic.getTopicId());
             }
         });
-        return entity2Vo(vo);
+        return vo;
     }
 
     /**

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseChapterServiceImpl.java

@@ -3,6 +3,8 @@ package com.zhongzheng.modules.course.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -14,6 +16,7 @@ import com.zhongzheng.modules.course.mapper.CourseChapterMapper;
 import com.zhongzheng.modules.course.mapper.CourseSectionMapper;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import com.zhongzheng.modules.goods.domain.GoodsAttached;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -196,6 +199,16 @@ public class CourseChapterServiceImpl extends ServiceImpl<CourseChapterMapper, C
         return this.removeByIds(ids);
     }
 
+    @Override
+    public boolean batchDelChapter(GoodsBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("模块ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<CourseChapter>()
+                .set(CourseChapter::getStatus,bo.getStatus())
+                .in(CourseChapter::getChapterId,bo.getIds()));
+    }
+
     private boolean checkNameUnique(CourseChapter entity) {
         CourseChapter info = getOne(new LambdaQueryWrapper<CourseChapter>()
                 .eq(CourseChapter::getPrefixName,entity.getPrefixName()).eq(CourseChapter::getName,entity.getName()).last("limit 1"));

+ 11 - 7
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleChapterServiceImpl.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -109,14 +110,17 @@ public class CourseModuleChapterServiceImpl extends ServiceImpl<CourseModuleChap
     @Override
     public List<CourseUserModuleChapterVo> chapterList(CourseMenuQueryBo bo) {
         List<CourseUserModuleChapterVo> courseUserModuleChapterVos = baseMapper.chapterList(bo);
-        if (!CollectionUtils.isEmpty(courseUserModuleChapterVos)) {
-            List<CourseUserModuleChapterVo> examList = baseMapper.examList(bo);
-            for(CourseUserModuleChapterVo vo : examList){
-                Integer learning = baseMapper.learningExamCheck(0L, vo.getGradeId(), bo.getUserId(), bo.getModuleId(), bo.getChapterId(), vo.getTypeId(),bo.getCourseId());
-                if(Validator.isNotEmpty(learning)){
-                    vo.setLearning(new Long(learning));
-                }
+        List<CourseUserModuleChapterVo> examList = baseMapper.examList(bo);
+        for(CourseUserModuleChapterVo vo : examList){
+            Integer learning = baseMapper.learningExamCheck(0L, vo.getGradeId(), bo.getUserId(), bo.getModuleId(), bo.getChapterId(), vo.getTypeId(),bo.getCourseId());
+            if(Validator.isNotEmpty(learning)){
+                vo.setLearning(new Long(learning));
             }
+        }
+        if (!CollectionUtils.isEmpty(courseUserModuleChapterVos)) {
+            courseUserModuleChapterVos.addAll(examList);
+        }else{
+            courseUserModuleChapterVos = new ArrayList<>();
             courseUserModuleChapterVos.addAll(examList);
         }
 

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
@@ -12,6 +13,7 @@ import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.mapper.CourseModuleMapper;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseModuleVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import com.zhongzheng.modules.goods.domain.GoodsAttached;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -185,6 +187,16 @@ public class CourseModuleServiceImpl extends ServiceImpl<CourseModuleMapper, Cou
         return this.removeByIds(ids);
     }
 
+    @Override
+    public boolean batchDelModule(GoodsBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("模块ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<CourseModule>()
+                .set(CourseModule::getStatus,bo.getStatus())
+                .in(CourseModule::getModuleId,bo.getIds()));
+    }
+
     private boolean checkNameUnique(CourseModule entity) {
         CourseModule info = getOne(new LambdaQueryWrapper<CourseModule>()
                 .eq(CourseModule::getPrefixName,entity.getPrefixName()).eq(CourseModule::getModuleName,entity.getModuleName()).last("limit 1"));

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

@@ -5,6 +5,8 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -19,6 +21,7 @@ import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.mapper.CourseSectionMapper;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.*;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
 import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.vo.GoodsCourseVo;
@@ -635,6 +638,16 @@ public class CourseSectionServiceImpl extends ServiceImpl<CourseSectionMapper, C
         return null;
     }
 
+    @Override
+    public boolean batchDelSection(GoodsBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("节ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<CourseSection>()
+                .set(CourseSection::getStatus,bo.getStatus())
+                .in(CourseSection::getSectionId,bo.getIds()));
+    }
+
     @Transactional(rollbackFor = Exception.class)
     public String insertByAddBoImport(CourseSectionAddBo bo, String errorLog, Integer no) {
         CourseSection add = BeanUtil.toBean(bo, CourseSection.class);

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -25,6 +25,8 @@ import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.exam.domain.*;
 import com.zhongzheng.modules.exam.service.*;
 import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo;
+import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
+import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsCourse;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
@@ -147,6 +149,16 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         return rebuild;
     }
 
+    @Override
+    public boolean batchDelCourse(GoodsBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("课程ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<Course>()
+                .set(Course::getStatus,bo.getStatus())
+                .in(Course::getCourseId,bo.getIds()));
+    }
+
     @Override
     public List<CourseVo> queryList(CourseQueryBo bo) {
         LambdaQueryWrapper<Course> lqw = Wrappers.lambdaQuery();

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsAttachedQueryBo.java

@@ -54,4 +54,6 @@ public class GoodsAttachedQueryBo extends BaseEntity {
 	private Integer isDo;
 	@ApiModelProperty("订单商品id")
 	private Long orderGoodsId;
+	@ApiModelProperty("试卷类型ID")
+	private Long paperId;
 }

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsBatchDelBo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.goods.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 批量删除
+ *
+ * @author  hjl
+ * @date 2021-10-28
+ */
+@Data
+@ApiModel("批量删除")
+public class GoodsBatchDelBo {
+
+    @ApiModelProperty("商品id集合")
+    private List<Long> ids;
+
+    @ApiModelProperty("状态 1有效 0无效")
+    private Integer status;
+}

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsBatchUpdateStatusBo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.goods.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 批量处理上下架
+ *
+ * @author  hjl
+ * @date 2021-10-28
+ */
+@Data
+@ApiModel("批量处理上下架")
+public class GoodsBatchUpdateStatusBo {
+
+    @ApiModelProperty("商品id集合")
+    private List<Long> goodsIds;
+
+    @ApiModelProperty("1上架 0未上架")
+    private Integer goodsStatus;
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsAttachedMapper.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.domain.GoodsAttached;
+import com.zhongzheng.modules.goods.vo.GoodsAttachedPaperVo;
 import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -18,4 +20,6 @@ import java.util.List;
 public interface GoodsAttachedMapper extends BaseMapper<GoodsAttached> {
     List<GoodsAttachedVo> getList(GoodsAttachedQueryBo bo);
     List<GoodsAttachedVo> selectDoList(GoodsAttachedQueryBo bo);
+
+    List<GoodsAttachedPaperVo> getPaperIds(@Param("goodsId") Long goodsId);
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java

@@ -1,8 +1,10 @@
 package com.zhongzheng.modules.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
+import com.zhongzheng.modules.course.vo.CourseSubjectVo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.*;
@@ -90,4 +92,8 @@ public interface IGoodsService extends IService<Goods> {
 	boolean updateSpecTemplate(GoodsSpecTempEditBo bo);
 
 	List<SyncGoodsExport> selectRjJzsList(GoodsQueryBo bo);
+
+	boolean GoodsBatchUpdateStatusBo(GoodsBatchUpdateStatusBo bo);
+
+	boolean batchDelGoods(GoodsBatchDelBo bo);
 }

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

@@ -2,6 +2,8 @@ package com.zhongzheng.modules.goods.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedAddBo;
 import com.zhongzheng.modules.goods.bo.GoodsAttachedEditBo;
@@ -10,6 +12,7 @@ import com.zhongzheng.modules.goods.domain.GoodsAttached;
 import com.zhongzheng.modules.goods.mapper.GoodsAttachedMapper;
 import com.zhongzheng.modules.goods.mapper.GoodsMapper;
 import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
+import com.zhongzheng.modules.goods.vo.GoodsAttachedPaperVo;
 import com.zhongzheng.modules.goods.vo.GoodsAttachedVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -60,7 +63,19 @@ public class GoodsAttachedServiceImpl extends ServiceImpl<GoodsAttachedMapper, G
 
     @Override
     public List<GoodsAttachedVo> getList(GoodsAttachedQueryBo bo) {
-        return goodsAttachedMapper.getList(bo);
+        List<GoodsAttachedVo> list = goodsAttachedMapper.getList(bo);
+        if (ObjectUtils.isNotNull(bo.getPaperId())){
+            List<GoodsAttachedPaperVo> paperVos = goodsAttachedMapper.getPaperIds(bo.getGoodsId());
+            if (CollectionUtils.isNotEmpty(paperVos)){
+                //需要过滤的
+                List<Long> goodsAttIds = paperVos.stream().filter(x -> x.getExamPaperId().equals(bo.getPaperId()))
+                        .map(GoodsAttachedPaperVo::getGoodsAttachedId).collect(Collectors.toList());
+                if (CollectionUtils.isNotEmpty(goodsAttIds)){
+                    list = list.stream().filter(item -> goodsAttIds.contains(item.getId())).collect(Collectors.toList());
+                }
+            }
+        }
+        return list;
     }
 
     /**

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

@@ -12,6 +12,7 @@ import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.course.bo.CourseMenuAddBo;
 import com.zhongzheng.modules.course.bo.CourseMenuListAddBo;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
@@ -143,6 +144,23 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 vo.setTotalExamNum(totalNum);
             }
         }
+        list.forEach(goods -> {
+            if (ObjectUtils.isNotNull(goods.getSpecTemplateId()) &&
+                    goodsSpecTemplateService.count(new LambdaQueryWrapper<GoodsSpecTemplate>()
+                            .eq(GoodsSpecTemplate::getSpecTemplateId,goods.getSpecTemplateId())
+                            .eq(GoodsSpecTemplate::getStatus,1)) > 0){
+                goods.setSpecTemplateId(goods.getSpecTemplateId());
+            }else {
+                List<GoodsSpecAttributeRelation> relationList = goodsSpecAttributeRelationService.list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
+                        .eq(GoodsSpecAttributeRelation::getGoodsId, goods.getGoodsId())
+                        .orderByAsc(GoodsSpecAttributeRelation::getCreateTime)
+                        .last("LIMIT 1"));
+                if (CollectionUtils.isNotEmpty(relationList)){
+                    GoodsSpecAttributeRelation relation = relationList.stream().findFirst().get();
+                    goods.setSpecTemplateId(relation.getSpecTemplateId());
+                }
+            }
+        });
         //继教二建统计学时
         if (Validator.isNotEmpty(bo.getChapterNum())) {
             list.forEach(goodsVo -> {
@@ -193,7 +211,10 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Override
     public GoodsVo selectDetail(Long goodsId) {
         GoodsVo goodsVo = baseMapper.selectDetail(goodsId);
-        if (ObjectUtils.isNotNull(goodsVo) && ObjectUtils.isNull(goodsVo.getSpecTemplateId())){
+        if (ObjectUtils.isNull(goodsVo.getSpecTemplateId()) ||
+                goodsSpecTemplateService.count(new LambdaQueryWrapper<GoodsSpecTemplate>()
+                        .eq(GoodsSpecTemplate::getSpecTemplateId,goodsVo.getSpecTemplateId())
+                        .eq(GoodsSpecTemplate::getStatus,1)) < 1){
             //没有绑定规格模板
             //查询是否有绑定的模板
             List<GoodsSpecAttributeRelation> list = goodsSpecAttributeRelationService
@@ -709,6 +730,26 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return exportList;
     }
 
+    @Override
+    public boolean GoodsBatchUpdateStatusBo(GoodsBatchUpdateStatusBo bo) {
+        if (CollectionUtils.isEmpty(bo.getGoodsIds())){
+            throw new CustomException("商品ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<Goods>()
+                .set(Goods::getGoodsStatus,bo.getGoodsStatus())
+                .in(Goods::getGoodsId,bo.getGoodsIds()));
+    }
+
+    @Override
+    public boolean batchDelGoods(GoodsBatchDelBo bo) {
+        if (CollectionUtils.isEmpty(bo.getIds())){
+            throw new CustomException("商品ID不能为空");
+        }
+        return update(new LambdaUpdateWrapper<Goods>()
+                .set(Goods::getStatus,bo.getStatus())
+                .in(Goods::getGoodsId,bo.getIds()));
+    }
+
     /**
      * 获取商品规格模板列表
      * @author change

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsAttachedPaperVo.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.goods.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 题库试卷类型Vo
+ *
+ * @author  hjl
+ * @date 2021-10-28
+ */
+@Data
+@ApiModel("题库试卷类型Vo")
+public class GoodsAttachedPaperVo {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty("goodsAttachedId")
+	private Long goodsAttachedId;
+
+	@ApiModelProperty("试卷类型ID")
+	private Long examPaperId;
+}

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassPeriodStudentVo.java

@@ -131,8 +131,8 @@ public class ClassPeriodStudentVo {
 	private Long studyEndTime;
 
 	/** 学员编码 */
-	@Excel(name = "當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过")
-	@ApiModelProperty("當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过")
+	@Excel(name = "當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过 3审核中")
+	@ApiModelProperty("當前班級學員審核狀態 -1不可审核 0待審  1未通过 2通过 3审核中")
 	private Integer allStatus;
 
 	/** 待重修 */

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java

@@ -629,6 +629,7 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
         mockTimeVo.setEndTime(endTimeStr);
         mockTimeVo.setApplyId(bo.getApplyId());
         mockTimeVo.setExamTime(nowTime);
+        mockTimeVo.setMockActivity(apply.getMockActivity());
         return mockTimeVo;
     }
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/vo/MockTimeVo.java

@@ -26,4 +26,7 @@ public class MockTimeVo {
 
     @ApiModelProperty("结束时间")
     private String endTime;
+
+    @ApiModelProperty("是否活动模考 0否 1是")
+    private Integer mockActivity;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -549,6 +549,8 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                 goodsVo.setPeriodPlush(classGradeVo.getPeriodPlush());
                 goodsVo.setGradeStatus(classGradeVo.getStatus());
                 goodsVo.setOfficialName(classGradeVo.getOfficialName());
+                goodsVo.setClassStartTime(classGradeVo.getClassStartTime());
+                goodsVo.setClassEndTime(classGradeVo.getClassEndTime());
 
                 LambdaQueryWrapper<UserSubscribe> lq = Wrappers.lambdaQuery();
                 lq.eq(UserSubscribe::getOrderGoodsId, goodsVo.getOrderGoodsId());

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -1621,6 +1621,9 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         List<UserMockSubscribe> userMockSubscribeList = iUserMockSubscribeService.list(lqw);
         userMockSubscribeList.removeIf(userMockSubscribe -> {
             try {
+                if(Validator.isEmpty(userMockSubscribe.getApplySiteExamTime())||Validator.isEmpty(userMockSubscribe.getApplySiteStartTime())){
+                    return true;
+                }
                 return System.currentTimeMillis()/1000 + 3600 <= formatTime(userMockSubscribe.getApplySiteExamTime(), userMockSubscribe.getApplySiteStartTime());
             } catch (ParseException e) {
                 e.printStackTrace();

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

@@ -19,4 +19,6 @@ public interface UserBankRecordMapper extends BaseMapper<UserBankRecord> {
     Long getUserExamDoNum(UserBankRecordQueryBo bo);
 
     List<UserBankRecordVo> getUserBankList(UserBankRecordQueryBo bo);
+
+    UserBankRecord getUserLastExam(UserBankRecordQueryBo bo);
 }

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

@@ -30,6 +30,8 @@ public interface IUserBankRecordService extends IService<UserBankRecord> {
 	 */
 	List<UserBankRecordVo> queryList(UserBankRecordQueryBo bo);
 
+	UserBankRecord getUserLastExam(UserBankRecordQueryBo bo);
+
 	/**
 	 * 根据新增业务对象插入用户的做题历史
 	 * @param bo 用户的做题历史新增业务对象

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

@@ -106,6 +106,8 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 	List<LiveListChannelViewlogResponse.LiveChannelViewlog> userSectionLiveLog(UserStudyRecordQueryBo bo) throws IOException, NoSuchAlgorithmException;
 
 	SectionStudyRecordVo getUserWatchLast(UserStudyRecordQueryBo bo);
+
+	SectionStudyRecordVo getUserStudyLast(UserStudyRecordQueryBo bo);
 	/**
 	 * 课程统计报表
 	 * @author change

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java

@@ -105,6 +105,11 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
         return entity2Vo(this.list(lqw));
     }
 
+    @Override
+    public UserBankRecord getUserLastExam(UserBankRecordQueryBo bo) {
+        return this.baseMapper.getUserLastExam(bo);
+    }
+
     /**
     * 实体类转化成视图对象
     *

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

@@ -674,6 +674,32 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     }
 
 
+    @Override
+    public SectionStudyRecordVo getUserStudyLast(UserStudyRecordQueryBo bo) {
+        SectionStudyRecordVo vo = this.baseMapper.getUserWatchLast(bo);
+        if(Validator.isNotEmpty(vo)){
+            Integer learning = courseChapterSectionMapper.learningCheck(vo.getSectionId(), vo.getGradeId(), bo.getUserId(), vo.getModuleId(), vo.getChapterId(), 0L,vo.getCourseId());
+            if (learning > 0) {
+                vo.setLearning(1L);
+            }
+        }
+        UserBankRecordQueryBo queryBo = new UserBankRecordQueryBo();
+        queryBo.setUserId(bo.getUserId());
+        UserBankRecord bankVo = iUserBankRecordService.getUserLastExam(queryBo);
+        if(Validator.isEmpty(vo)&&Validator.isNotEmpty(bankVo)){
+            vo = new SectionStudyRecordVo();
+            vo.setOrderGoodsId(bankVo.getOrderGoodsId());
+        }
+        if(Validator.isNotEmpty(vo)&&Validator.isNotEmpty(bankVo)){
+            if(vo.getUpdateTime().longValue()<bankVo.getUpdateTime().longValue()){
+                vo = new SectionStudyRecordVo();
+                vo.setOrderGoodsId(bankVo.getOrderGoodsId());
+            }
+        }
+        return vo;
+    }
+
+
     //判断当前未看完的节是否是点击播放的节
     private boolean compareSection(UserStudyRecordVo recordVo,UserStudyRecordQueryBo entity){
         if(recordVo.getModuleId().equals(entity.getModuleId())){

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -923,7 +923,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                     userSubscribeImports.add(userSubscribeImport);
                     continue;
                 }
-                if(startTime.length()!=5||endTime.length()!=5){
+                if(startTime.length()>5||endTime.length()>5||startTime.length()<4||endTime.length()<4){
                     userSubscribeImport.setCause("考试时间段错误");
                     userSubscribeImports.add(userSubscribeImport);
                     continue;
@@ -1159,7 +1159,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                     userSubscribeImports.add(userSubscribeImport);
                     continue;
                 }
-                if(startTime.length()!=5||endTime.length()!=5){
+                if(startTime.length()>5||endTime.length()>5||startTime.length()<4||endTime.length()<4){
                     userSubscribeImport.setCause("考试时间段错误");
                     userSubscribeImports.add(userSubscribeImport);
                     continue;
@@ -1503,7 +1503,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                     userSubscribeImports.add(userSubscribeImport);
                     continue;
                 }
-                if(startTime.length()!=5||endTime.length()!=5){
+                if(startTime.length()>5||endTime.length()>5||startTime.length()<4||endTime.length()<4){
                     userSubscribeImport.setCause("考试时间段错误");
                     userSubscribeImports.add(userSubscribeImport);
                     continue;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/SectionStudyRecordVo.java

@@ -123,4 +123,6 @@ public class SectionStudyRecordVo {
     private String recordingUrl;
     @ApiModelProperty("1已学习")
     private Long learning;
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
 }

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/bo/WxShareGoodsBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.wx.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+@ApiModel("微信商品分享")
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+public class WxShareGoodsBo {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+
+    @ApiModelProperty("分享码")
+    private String shareCode;
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/IWxLoginService.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.wx.service;
 
 
 import com.zhongzheng.modules.course.bo.SectionWatchPerBo;
+import com.zhongzheng.modules.wx.bo.WxShareGoodsBo;
 
 import java.util.Map;
 
@@ -30,4 +31,6 @@ public interface IWxLoginService
 
     String getTopicEnCode(Long topicId);
 
+    String shareGoodsCode(WxShareGoodsBo bo);
+
 }

+ 3 - 0
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityRecommendGoodsMapper.xml

@@ -44,6 +44,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE
             rg.recommend_id = #{recommendId}
           and g.goods_status = 1 and g.`status` = 1
+        <if test="subjectId != null and subjectId != ''">
+            AND g.subject_ids like CONCAT('%',#{subjectId},'%')
+        </if>
         order by rg.sort asc
     </select>
 </mapper>

+ 4 - 1
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionChapterExamMapper.xml

@@ -67,8 +67,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         WHERE
             qce.chapter_exam_id =#{chapterExamId}
+        <if test="paperId != null and paperId != ''">
+            AND e.exam_paper_id = #{paperId}
+        </if>
           AND e.status = 1
-
+        order by qce.sort asc
     </select>
 
     <select id="getDoList" parameterType="com.zhongzheng.modules.bank.bo.QuestionChapterExamQueryBo" resultMap="QuestionChapterExamResultVo">

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml

@@ -314,7 +314,7 @@
                 LEFT JOIN `order` o on o.order_sn = og.order_sn
         WHERE
             1 = 1
-          AND g.goods_type in (1,2)
+          AND g.goods_type in (2)
           AND o.user_id=#{userId}
           AND og.`status` =1
           and og.pay_status in (2,3,4)

+ 31 - 5
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionModuleChapterMapper.xml

@@ -24,18 +24,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="questionNum" column="question_num"/>
     </resultMap>
 
+<!--    <select id="getList" parameterType="com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo" resultMap="QuestionModuleChapterResultVo">-->
+<!--        SELECT-->
+<!--            qc.*,-->
+<!--            mc.sort AS chapter_sort,-->
+<!--            (SELECT COUNT(qce.exam_id) FROM question_chapter_exam qce where qce.chapter_exam_id = qc.chapter_exam_id ) as exam_num,-->
+<!--            (SELECT COUNT(eq.question_id) FROM question_chapter_exam qce LEFT JOIN exam_question eq on qce.exam_id = eq.exam_id where qce.chapter_exam_id = qc.chapter_exam_id) as question_num-->
+<!--        FROM-->
+<!--            question_module_chapter mc-->
+<!--                LEFT JOIN question_chapter qc ON mc.chapter_exam_id = qc.chapter_exam_id-->
+<!--        WHERE-->
+<!--            mc.module_exam_id = #{moduleExamId}-->
+<!--        ORDER BY mc.sort-->
+
+<!--    </select>-->
     <select id="getList" parameterType="com.zhongzheng.modules.bank.bo.QuestionModuleChapterQueryBo" resultMap="QuestionModuleChapterResultVo">
         SELECT
             qc.*,
             mc.sort AS chapter_sort,
-            (SELECT COUNT(qce.exam_id) FROM question_chapter_exam qce where qce.chapter_exam_id = qc.chapter_exam_id ) as exam_num,
-            (SELECT COUNT(eq.question_id) FROM question_chapter_exam qce LEFT JOIN exam_question eq on qce.exam_id = eq.exam_id where qce.chapter_exam_id = qc.chapter_exam_id) as question_num
+            ( SELECT COUNT( qce.exam_id ) FROM question_chapter_exam qce WHERE qce.chapter_exam_id = qc.chapter_exam_id ) AS exam_num,
+            (
+                SELECT
+                    COUNT( eq.question_id )
+                FROM
+                    question_chapter_exam qce
+                        LEFT JOIN exam_question eq ON qce.exam_id = eq.exam_id
+                WHERE
+                    qce.chapter_exam_id = qc.chapter_exam_id
+            ) AS question_num
         FROM
             question_module_chapter mc
                 LEFT JOIN question_chapter qc ON mc.chapter_exam_id = qc.chapter_exam_id
-        WHERE
-            mc.module_exam_id = #{moduleExamId}
-        ORDER BY mc.sort
+        WHERE 1=1
+        <if test="paperId != null and paperId != ''">
+            AND qc.chapter_exam_id IN ( SELECT qce.chapter_exam_id FROM question_chapter_exam qce LEFT JOIN exam e ON qce.exam_id = e.exam_id WHERE e.exam_paper_id = #{paperId} )
+        </if>
+          AND mc.module_exam_id = #{moduleExamId}
+        ORDER BY
+            mc.sort
 
     </select>
 

+ 14 - 2
zhongzheng-system/src/main/resources/mapper/modules/collect/CollectQuestionMapper.xml

@@ -41,11 +41,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="knowledgeIds" column="knowledge_ids"/>
         <result property="publishStatus" column="publish_status"/>
         <result property="code" column="code"/>
+        <result property="examId" column="collect_exam_id"/>
+        <result property="goodsId" column="collect_goods_id"/>
+        <result property="orderGoodsId" column="collect_order_goods_id"/>
+        <result property="collectQuestionId" column="collect_question_id"/>
     </resultMap>
 
     <select id="selectList" parameterType="com.zhongzheng.modules.collect.bo.CollectQuestionQueryBo"  resultMap="QuestionResultVo">
         SELECT
-        DISTINCT q.*
+        DISTINCT q.*,
+        cq.collect_question_id as collect_question_id,
+        cq.exam_id as collect_exam_id,
+        cq.goods_id as collect_goods_id,
+        cq.order_goods_id as collect_order_goods_id
         FROM
         collect_question cq
         LEFT JOIN question q ON cq.question_id = q.question_id
@@ -95,7 +103,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectExamQuestionList" parameterType="com.zhongzheng.modules.collect.bo.CollectQuestionQueryBo"  resultMap="QuestionResultVo">
         SELECT
-            DISTINCT q.*
+            DISTINCT q.*,
+            cq.exam_id as collect_exam_id ,
+            cq.goods_id as collect_goods_id,
+            cq.order_goods_id as collect_order_goods_id,
+            cq.collect_question_id as collect_question_id
         FROM
         collect_question cq
         LEFT JOIN question q ON q.question_id = cq.question_id

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

@@ -589,7 +589,7 @@
                                course_menu_exam m
 
                            where
-                               m.type in (1) GROUP BY m.course_id
+                               m.type in (1,3) GROUP BY m.course_id
             ) ge on gc.course_id = ge.course_id
         where 1=1
           and gc.goods_id =#{goodsId}
@@ -628,7 +628,7 @@
         FROM
         goods_course c  LEFT JOIN  course_menu_exam m ON m.course_id = c.course_id
         where
-        m.type = 1
+        m.type in (1,3)
         and c.goods_id = #{goodsId}) as exam_num,
         (SELECT COUNT(DISTINCT ubr.module_id,ubr.chapter_id,ubr.exam_id) FROM user_bank_record ubr LEFT JOIN class_grade_goods cgg on cgg.goods_id
         = ubr.goods_id where ubr.`status`=1 and ubr.report_status=1 and ubr.grade_id = cg.grade_id and ubr.user_id = cgu.user_id and ubr.current_status = 1) as record_num,

+ 32 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsAttachedMapper.xml

@@ -309,4 +309,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 					   ga.type = 1
 					   AND ga.major_id IN ( SELECT module_exam_id FROM user_exam_record WHERE user_id = #{userId} AND order_goods_id = #{orderGoodsId} AND module_exam_id > 0 GROUP BY module_exam_id )))
 	</select>
+
+	<select id="getPaperIds" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.goods.vo.GoodsAttachedPaperVo">
+		SELECT
+			ga.id as goodsAttachedId,
+			e.exam_paper_id as examPaperId
+		FROM
+			goods_attached ga
+				LEFT JOIN question_module_chapter qmc ON ga.major_id = qmc.module_exam_id
+				LEFT JOIN question_chapter_exam qce ON qmc.chapter_exam_id = qce.chapter_exam_id
+				LEFT JOIN exam e ON qce.exam_id = e.exam_id
+		WHERE
+			ga.goods_id = #{goodsId} AND ga.type = 1
+		UNION ALL
+		SELECT
+			ga.id as goodsAttachedId,
+			e.exam_paper_id as examPaperId
+		FROM
+			goods_attached ga
+				LEFT JOIN question_chapter_exam qce ON ga.major_id = qce.chapter_exam_id
+				LEFT JOIN exam e ON qce.exam_id = e.exam_id
+		WHERE
+			ga.goods_id = #{goodsId} AND ga.type = 2
+		UNION ALL
+		SELECT
+			ga.id as goodsAttachedId,
+			e.exam_paper_id as examPaperId
+		FROM
+			goods_attached ga
+				LEFT JOIN exam e ON ga.major_id = e.exam_id
+		WHERE
+			ga.goods_id = #{goodsId} AND ga.type = 3
+	</select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -273,7 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND (#{classStartTime} BETWEEN g.class_start_time and g.class_end_time or #{classEndTime} BETWEEN g.class_start_time and g.class_end_time)
         </if>
         <if test="pastDue != null or pastDue != null ">
-            AND (unix_timestamp(now()) &lt; g.class_end_time or g.class_start_time is null)
+            AND ((unix_timestamp(now())+10*24*3600) &lt; g.class_end_time or g.class_start_time is null)
         </if>
         <if test="educationTypeId != null and educationTypeId !='' ">
             AND (

+ 6 - 0
zhongzheng-system/src/main/resources/mapper/modules/mock/MockApplyMapper.xml

@@ -122,6 +122,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="mockActivity != null and mockActivity != ''">
             and ma.mock_activity = #{mockActivity}
         </if>
+        <if test="mockActivity != null and mockActivity != '' and mockActivity == 1">
+            and ma.apply_id not in (select mock_apply_id from exam_activity where status = 1 )
+        </if>
         <if test="educationTypeId != null and educationTypeId != ''">
             and ma.education_type_id = #{educationTypeId}
         </if>
@@ -185,6 +188,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="endTime != null and endTime != ''">
             and mmst.exam_time &lt; #{endTime}
         </if>
+        <if test="searchKey != null and searchKey != ''">
+            and ma.apply_name like CONCAT('%',#{searchKey},'%')
+        </if>
         ORDER BY mmst.exam_time
     </select>
     <select id="listApplyBusiness" resultType="com.zhongzheng.modules.mock.vo.MockApplyVo">

+ 13 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserBankRecordMapper.xml

@@ -140,4 +140,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         AND ubr.user_id = #{userId}
     </select>
 
+    <select id="getUserLastExam" parameterType="com.zhongzheng.modules.user.bo.UserBankRecordQueryBo" resultMap="UserBankRecordVoResult">
+        SELECT
+            ubr.*
+        FROM
+            user_bank_record ubr
+        WHERE
+            ubr.user_id = #{userId}
+
+        ORDER BY
+            ubr.update_time DESC
+        LIMIT 1
+    </select>
+
 </mapper>

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

@@ -96,6 +96,7 @@
         <result property="liveStartTime" column="live_start_time"/>
         <result property="liveEndTime" column="live_end_time"/>
         <result property="recordingUrl" column="recording_url"/>
+        <result property="updateTime" column="update_time"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.ExamStudyRecordVo" id="ExamStudyRecordVoResult">