he2802 3 anos atrás
pai
commit
ca5fe5256f
27 arquivos alterados com 1362 adições e 5 exclusões
  1. 12 2
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java
  2. 70 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/bank/QuestionController.java
  3. 57 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java
  4. 81 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserNoteController.java
  5. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java
  6. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java
  7. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  8. 0 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  9. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseUserChapterSectionVo.java
  10. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  11. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java
  12. 229 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserQuestionVo.java
  13. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteAddBo.java
  14. 68 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteEditBo.java
  15. 71 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteQueryBo.java
  16. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserNote.java
  17. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserNoteMapper.java
  18. 55 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserNoteService.java
  19. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserSubscribeService.java
  20. 126 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserNoteServiceImpl.java
  21. 188 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  22. 32 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserDateNoteVo.java
  23. 71 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserNoteVo.java
  24. 90 0
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml
  25. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterSectionMapper.xml
  26. 52 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserNoteMapper.xml
  27. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/user/UserSubscribeMapper.xml

+ 12 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java

@@ -118,9 +118,19 @@ public class UserSubscribeController extends BaseController {
     public AjaxResult<UserSubscribeImport> importData(MultipartFile file) throws Exception {
     public AjaxResult<UserSubscribeImport> importData(MultipartFile file) throws Exception {
         ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
         ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
         List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
         List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
-
         List<UserSubscribeImport> userSubscribeImport = iUserSubscribeService.importData(userSubscribeImportList);
         List<UserSubscribeImport> userSubscribeImport = iUserSubscribeService.importData(userSubscribeImportList);
-        return util.exportExcel(userSubscribeImportList, "导入失败原因");
+        return util.exportExcel(userSubscribeImport, "导入失败原因");
+    }
+
+    @Log(title = "导入修改预约考试模板", businessType = BusinessType.IMPORT)
+    @ApiOperation("导入修改预约考试模板")
+    @PreAuthorize("@ss.hasPermi('system:apply:import')")
+    @PostMapping("/importUpdateData")
+    public AjaxResult<UserSubscribeImport> importUpdateData(MultipartFile file) throws Exception {
+        ExcelUtil<UserSubscribeImport> util = new ExcelUtil<UserSubscribeImport>(UserSubscribeImport.class);
+        List<UserSubscribeImport> userSubscribeImportList = util.importExcel(file.getInputStream());
+        List<UserSubscribeImport> userSubscribeImport = iUserSubscribeService.importUpdateData(userSubscribeImportList);
+        return util.exportExcel(userSubscribeImport, "导入失败原因");
     }
     }
 
 
 }
 }

+ 70 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -0,0 +1,70 @@
+package com.zhongzheng.controller.bank;
+
+import cn.hutool.core.lang.Validator;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.bank.bo.QuestionAddBo;
+import com.zhongzheng.modules.bank.bo.QuestionBusinessQueryBo;
+import com.zhongzheng.modules.bank.bo.QuestionEditBo;
+import com.zhongzheng.modules.bank.bo.QuestionQueryBo;
+import com.zhongzheng.modules.bank.domain.QuestionBusiness;
+import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
+import com.zhongzheng.modules.bank.service.IQuestionService;
+import com.zhongzheng.modules.bank.vo.QuestionImport;
+import com.zhongzheng.modules.bank.vo.QuestionVo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
+import com.zhongzheng.modules.goods.vo.GoodsUserVo;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.user.entity.ClientLoginUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 题库题目Controller
+ *
+ * @author hjl
+ * @date 2021-10-21
+ */
+@Api(value = "题库题目控制器", tags = {"题库题目管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/bank/question")
+public class QuestionController extends BaseController {
+
+    private final IQuestionService iQuestionService;
+
+    private final IQuestionBusinessService iQuestionBusinessService;
+
+    private final WxTokenService wxTokenService;
+
+
+    /**
+     * 查询商品列表
+     */
+    @ApiOperation("查询用户拥有题库商品")
+    @GetMapping("/listGoodsUserQuestion")
+    public TableDataInfo<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo) {
+        startPage();
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setUserId(loginUser.getUser().getUserId());
+        List<GoodsUserQuestionVo> list = iQuestionService.listGoodsUserQuestionVo(bo);
+        return getDataTable(list);
+    }
+}

+ 57 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseHandoutsController.java

@@ -0,0 +1,57 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.course.bo.CourseHandoutsAddBo;
+import com.zhongzheng.modules.course.bo.CourseHandoutsEditBo;
+import com.zhongzheng.modules.course.bo.CourseHandoutsQueryBo;
+import com.zhongzheng.modules.course.service.ICourseHandoutsService;
+import com.zhongzheng.modules.course.vo.CourseHandoutsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 讲义列Controller
+ * 
+ * @author ruoyi
+ * @date 2021-11-02
+ */
+@Api(value = "讲义列控制器", tags = {"讲义列管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/handouts")
+public class CourseHandoutsController extends BaseController {
+
+    private final ICourseHandoutsService iCourseHandoutsService;
+
+    /**
+     * 查询讲义列列表
+     */
+    @ApiOperation("查询讲义列列表")
+    @GetMapping("/list")
+    public TableDataInfo<CourseHandoutsVo> list(CourseHandoutsQueryBo bo) {
+        startPage();
+        List<CourseHandoutsVo> list = iCourseHandoutsService.queryList(bo);
+        return getDataTable(list);
+    }
+
+
+
+    /**
+     * 获取讲义列详细信息
+     */
+    @ApiOperation("获取讲义列详细信息")
+    @GetMapping("/{handoutsId}")
+    public AjaxResult<CourseHandoutsVo> getInfo(@PathVariable("handoutsId" ) Long handoutsId) {
+        return AjaxResult.success(iCourseHandoutsService.queryById(handoutsId));
+    }
+}

+ 81 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserNoteController.java

@@ -0,0 +1,81 @@
+package com.zhongzheng.controller.user;
+
+import java.util.List;
+import java.util.Arrays;
+
+import com.zhongzheng.modules.user.vo.UserDateNoteVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.user.vo.UserNoteVo;
+import com.zhongzheng.modules.user.bo.UserNoteQueryBo;
+import com.zhongzheng.modules.user.bo.UserNoteAddBo;
+import com.zhongzheng.modules.user.bo.UserNoteEditBo;
+import com.zhongzheng.modules.user.service.IUserNoteService;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 用户笔记记录Controller
+ * 
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Api(value = "用户笔记记录控制器", tags = {"用户笔记记录管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/user/note")
+public class UserNoteController extends BaseController {
+
+    private final IUserNoteService iUserNoteService;
+
+    /**
+     * 查询用户笔记记录列表
+     */
+    @ApiOperation("查询用户笔记记录列表")
+    @PreAuthorize("@ss.hasPermi('system:note:list')")
+    @GetMapping("/listDate")
+    public TableDataInfo<UserDateNoteVo> listDate(UserNoteQueryBo bo) {
+        startPage();
+        List<UserDateNoteVo> list = iUserNoteService.listDate(bo);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 新增用户笔记记录
+     */
+    @ApiOperation("新增用户笔记记录")
+    @PreAuthorize("@ss.hasPermi('system:note:add')")
+    @Log(title = "用户笔记记录", businessType = BusinessType.INSERT)
+    @PostMapping()
+    public AjaxResult<Void> add(@RequestBody UserNoteAddBo bo) {
+        return toAjax(iUserNoteService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改用户笔记记录
+     */
+    @ApiOperation("修改用户笔记记录")
+    @PreAuthorize("@ss.hasPermi('system:note:edit')")
+    @Log(title = "用户笔记记录", businessType = BusinessType.UPDATE)
+    @PostMapping("edit")
+    public AjaxResult<Void> edit(@RequestBody UserNoteEditBo bo) {
+        return toAjax(iUserNoteService.updateByEditBo(bo) ? 1 : 0);
+    }
+    
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java

@@ -6,6 +6,8 @@ import com.zhongzheng.modules.bank.domain.Question;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -18,4 +20,5 @@ import java.util.List;
 public interface QuestionMapper extends BaseMapper<Question> {
 public interface QuestionMapper extends BaseMapper<Question> {
     List<QuestionVo> selectList(QuestionQueryBo bo);
     List<QuestionVo> selectList(QuestionQueryBo bo);
 
 
+    List<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo);
 }
 }

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

@@ -9,6 +9,8 @@ import com.zhongzheng.modules.bank.bo.QuestionQueryBo;
 import com.zhongzheng.modules.bank.domain.Question;
 import com.zhongzheng.modules.bank.domain.Question;
 import com.zhongzheng.modules.bank.vo.QuestionImport;
 import com.zhongzheng.modules.bank.vo.QuestionImport;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
 
 
 import java.util.Collection;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
@@ -59,4 +61,6 @@ public interface IQuestionService extends IService<Question> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 
 	String importQuestion(List<QuestionImport> questionList, Boolean isUpdateSupport, String operName);
 	String importQuestion(List<QuestionImport> questionList, Boolean isUpdateSupport, String operName);
+
+    List<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo);
 }
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java

@@ -26,6 +26,8 @@ import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.exam.domain.ExamKnowledge;
 import com.zhongzheng.modules.exam.domain.ExamKnowledge;
 import com.zhongzheng.modules.exam.service.IExamKnowledgeService;
 import com.zhongzheng.modules.exam.service.IExamKnowledgeService;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo;
 import io.micrometer.core.lang.NonNull;
 import io.micrometer.core.lang.NonNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -278,6 +280,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         return errorLog;
         return errorLog;
     }
     }
 
 
+    @Override
+    public List<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo) {
+        return baseMapper.listGoodsUserQuestionVo(bo);
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public String insertByAddBoImport(QuestionAddBo bo,String errorLog,Integer no) {
     public String insertByAddBoImport(QuestionAddBo bo,String errorLog,Integer no) {
         Question add = BeanUtil.toBean(bo, Question.class);
         Question add = BeanUtil.toBean(bo, Question.class);

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

@@ -241,7 +241,6 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
             for (SubjectStudyRecordVo subjectStudyRecordVo : subjectStudyRecordVos) {
                 secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
                 secLong = new BigDecimal(secLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getSectionNum().toString())).longValue();
                 studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
                 studyLong = new BigDecimal(studyLong.toString()).add(new BigDecimal(subjectStudyRecordVo.getRecordNum().toString())).longValue();
-
             }
             }
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setStuAllNum(studyLong);
             goodsUserVo.setStuAllNum(studyLong);

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseUserChapterSectionVo.java

@@ -86,6 +86,11 @@ public class CourseUserChapterSectionVo {
 	@ApiModelProperty("1 需重修")
 	@ApiModelProperty("1 需重修")
 	private Integer rebuild;
 	private Integer rebuild;
 
 
+	/** 1模块卷 2章卷 3试卷 */
+	@Excel(name = "录播和回放的url地址")
+	@ApiModelProperty("录播和回放的url地址")
+	private String recordingUrl;
+
 	/** 直播开始时间 */
 	/** 直播开始时间 */
 	@ApiModelProperty("直播开始时间")
 	@ApiModelProperty("直播开始时间")
 	private Long liveStartTime;
 	private Long liveStartTime;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java

@@ -198,7 +198,7 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         }
         }
         //查询剩余考试次数
         //查询剩余考试次数
         Integer residueSubscribeNext = baseMapper.residueSubscribeNext(bo);
         Integer residueSubscribeNext = baseMapper.residueSubscribeNext(bo);
-        if (residueSubscribeNext < 1){
+        if (residueSubscribeNext == null && residueSubscribeNext < 1){
             return 3L;
             return 3L;
         }
         }
         Integer beforeSubscribeNext = baseMapper.beforeSubscribeNext(bo);
         Integer beforeSubscribeNext = baseMapper.beforeSubscribeNext(bo);

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java

@@ -139,4 +139,7 @@ GoodsQueryBo extends BaseEntity {
 
 
 	@ApiModelProperty("科目ID")
 	@ApiModelProperty("科目ID")
 	private Integer subjectId;
 	private Integer subjectId;
+
+	@ApiModelProperty("用户ID")
+	private Long userId;
 }
 }

+ 229 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserQuestionVo.java

@@ -0,0 +1,229 @@
+package com.zhongzheng.modules.goods.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+ * 商品视图对象 mall_package
+ *
+ * @author hjl
+ * @date 2021-10-12
+ */
+@Data
+@ApiModel("商品视图对象")
+public class GoodsUserQuestionVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long goodsId;
+
+	/** 年份 */
+	@Excel(name = "年份")
+	@ApiModelProperty("年份")
+	private Long year;
+	/** 供应方(服务) */
+	@Excel(name = "供应方" , readConverterExp = "服=务")
+	@ApiModelProperty("供应方(服务)")
+	private Long supplyId;
+	/** $column.columnComment */
+	@Excel(name = "供应方" , readConverterExp = "商品类型 1视频2题库 3面授 4服务 5组合")
+	@ApiModelProperty("商品类型 1视频2题库 3面授 4服务 5组合")
+	private Long goodsType;
+	/** 教育类型id */
+	@Excel(name = "教育类型id")
+	@ApiModelProperty("教育类型id")
+	private Long educationTypeId;
+	/** 业务层次id */
+	@Excel(name = "业务层次id")
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+	/** 所属院校 */
+	@Excel(name = "所属院校")
+	@ApiModelProperty("所属院校")
+	private Long schoolId;
+	/** 所属专业 */
+	@Excel(name = "所属专业")
+	@ApiModelProperty("所属专业")
+	private Long majorId;
+	/** 商品名称 */
+	@Excel(name = "商品名称")
+	@ApiModelProperty("商品名称")
+	private String goodsName;
+	/** 标准价格 */
+	@Excel(name = "标准价格")
+	@ApiModelProperty("标准价格")
+	private BigDecimal standPrice;
+	/** 最低价格 */
+	@Excel(name = "最低价格")
+	@ApiModelProperty("最低价格")
+	private BigDecimal lowestPrice;
+	/** 状态 1有效 0无效 */
+	@Excel(name = "状态 1有效 0无效")
+	@ApiModelProperty("状态 1有效 0无效")
+	private Integer status;
+	/** 有效期开始 */
+	@Excel(name = "有效期开始")
+	@ApiModelProperty("有效期开始")
+	private Long validityStartTime;
+	/** 有效期结束 */
+	@Excel(name = "有效期结束")
+	@ApiModelProperty("有效期结束")
+	private Long validityEndTime;
+	/** 学习有效期开始 */
+	@Excel(name = "学习有效期开始")
+	@ApiModelProperty("学习有效期开始")
+	private Long studyStartTime;
+	/** 学习有效期结束 */
+	@Excel(name = "学习有效期结束")
+	@ApiModelProperty("学习有效期结束")
+	private Long studyEndTime;
+	/** 证书ID,多个,拼接 */
+	@Excel(name = "证书ID,多个,拼接")
+	@ApiModelProperty("证书ID,多个,拼接")
+	private String certificateIds;
+	/** 描述 */
+	@Excel(name = "描述")
+	@ApiModelProperty("描述")
+	private String introduce;
+	/** 适合对象 */
+	@Excel(name = "适合对象")
+	@ApiModelProperty("适合对象")
+	private String suitableObject;
+	/** 购买须知 */
+	@Excel(name = "购买须知")
+	@ApiModelProperty("购买须知")
+	private String buyNote;
+	/** PC详情 */
+	@Excel(name = "PC详情")
+	@ApiModelProperty("PC详情")
+	private String pcDetailHtml;
+	/** 手机详情 */
+	@Excel(name = "手机详情")
+	@ApiModelProperty("手机详情")
+	private String mobileDetailHtml;
+	/** 1上架 0未上架 */
+	@Excel(name = "1上架 0未上架")
+	@ApiModelProperty("1上架 0未上架")
+	private Integer goodsStatus;
+	/** 封面地址 */
+	@Excel(name = "封面地址")
+	@ApiModelProperty("封面地址")
+	private String coverUrl;
+	/** 学时 */
+	@Excel(name = "学时")
+	@ApiModelProperty("学时")
+	private Integer classHours;
+	/** 标准价格详情json */
+	@Excel(name = "标准价格详情json")
+	@ApiModelProperty("标准价格详情json")
+	private String standPriceJson;
+	/** 编码 */
+	@Excel(name = "编码")
+	@ApiModelProperty("编码")
+	private String code;
+	@ApiModelProperty("创建时间")
+	private Long createTime;
+	@ApiModelProperty("更新试卷")
+	private Long updateTime;
+	@ApiModelProperty("供应方名称")
+	private String supplyName;
+	/** 项目ID */
+	@Excel(name = "项目ID")
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+
+
+	@ApiModelProperty("教育名称")
+	private String educationName;
+	@ApiModelProperty("项目名称")
+	private String projectName;
+	@ApiModelProperty("业务名称")
+	private String businessName;
+	@ApiModelProperty("学校名称")
+	private String schoolName;
+	@ApiModelProperty("专业名称")
+	private String categoryName;
+
+	/** 试听设置 */
+	@Excel(name = "试听设置")
+	@ApiModelProperty("试听设置")
+	private String goodsAuditionConfig;
+	/** 拍照设置 */
+	@Excel(name = "拍照设置")
+	@ApiModelProperty("拍照设置")
+	private String goodsPhotographConfig;
+
+	/** 试卷拍照设置 */
+	@Excel(name = "试卷拍照设置")
+	@ApiModelProperty("试卷拍照设置")
+	private String goodsPhotoExamConfig;
+	/** 播放设置 */
+	@Excel(name = "播放设置")
+	@ApiModelProperty("播放设置")
+	private String goodsPlayConfig;
+
+	@ApiModelProperty("试听配置列表")
+	private List<GoodsAuditionConfigVo> auditionList;
+
+	@ApiModelProperty("播放设置")
+	private GoodsPlayConfigVo goodsPlayConfigVo;
+
+	@ApiModelProperty("拍照设置")
+	private GoodsPhotographConfigVo goodsPhotographConfigVo;
+
+	@ApiModelProperty("试卷拍照设置")
+	private GoodsPhotoExamConfigVo goodsPhotoExamConfigVo;
+
+	@ApiModelProperty("试卷试做配置列表")
+	private List<GoodsExamConfigVo> examConfigList;
+
+	/** 试卷试做设置 */
+	@ApiModelProperty("试卷试做设置")
+	private String goodsExamConfig;
+
+	@ApiModelProperty("讲义id")
+	private Long handoutsId;
+
+	/** 模板类型置 */
+	@ApiModelProperty("模板类型置")
+	private String templateType;
+
+	/** 学时 */
+	@Excel(name = "学时")
+	@ApiModelProperty("学时")
+	private Long period;
+	/** 补考或前培开始时间 */
+	@Excel(name = "补考或前培开始时间")
+	@ApiModelProperty("补考或前培开始时间")
+	private Long makeStartTime;
+	/** 补考或前培结束时间 */
+	@Excel(name = "补考或前培结束时间")
+	@ApiModelProperty("补考或前培结束时间")
+	private Long makeEndTime;
+	/** 学习次数 */
+	@Excel(name = "学习次数")
+	@ApiModelProperty("学习次数")
+	private Long studyCount;
+
+	/** 前培和补考商品关联 */
+	@Excel(name = "前培和补考商品关联")
+	@ApiModelProperty("前培和补考商品关联")
+	private Long makeGoodsId;
+
+	/** 前培和补考商品关联 */
+	@Excel(name = "前培和补考商品关联")
+	@ApiModelProperty("前培和补考商品关联商品名")
+	private String makeGoodsName;
+
+	/** 前培和补考商品关联 */
+	@Excel(name = "前培和补考商品关联")
+	@ApiModelProperty("前培和补考商品关联编码")
+	private String makeGoodsCode;
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteAddBo.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户笔记记录添加对象 user_note
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@ApiModel("用户笔记记录添加对象")
+public class UserNoteAddBo {
+
+    /** 笔记内容 */
+    @ApiModelProperty("笔记内容")
+    private String noteText;
+    /** 笔记日期 */
+    @ApiModelProperty("笔记日期(只需要当天日期 时间为 00:00)")
+    private Long noteDate;
+    /** 课程ID */
+    @ApiModelProperty("课程ID")
+    private Long courseId;
+    /** 节ID */
+    @ApiModelProperty("节ID")
+    private Long sectionId;
+    /** 商品Id */
+    @ApiModelProperty("商品Id")
+    private Long goodsId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long updateTime;
+    /** 模块ID */
+    @ApiModelProperty("模块ID")
+    private Long moduleId;
+    /** 章ID */
+    @ApiModelProperty("章ID")
+    private Long chapterId;
+    /** 班级ID */
+    @ApiModelProperty("班级ID")
+    private Long gradeId;
+
+    /** 秒数 */
+    @ApiModelProperty("秒数")
+    private Long noteSecond;
+    /** 1有效 */
+    @ApiModelProperty("1有效")
+    private Integer status;
+}

+ 68 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteEditBo.java

@@ -0,0 +1,68 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 用户笔记记录编辑对象 user_note
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@ApiModel("用户笔记记录编辑对象")
+public class UserNoteEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long noteId;
+
+    /** 笔记内容 */
+    @ApiModelProperty("笔记内容")
+    private String noteText;
+
+    /** 笔记日期 */
+    @ApiModelProperty("笔记日期")
+    private Long noteDate;
+
+    /** 课程ID */
+    @ApiModelProperty("课程ID")
+    private Long courseId;
+
+    /** 节ID */
+    @ApiModelProperty("节ID")
+    private Long sectionId;
+
+    /** 商品Id */
+    @ApiModelProperty("商品Id")
+    private Long goodsId;
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long updateTime;
+
+
+    /** 模块ID */
+    @ApiModelProperty("模块ID")
+    private Long moduleId;
+
+    /** 章ID */
+    @ApiModelProperty("章ID")
+    private Long chapterId;
+
+    /** 班级ID */
+    @ApiModelProperty("班级ID")
+    private Long gradeId;
+    /** 秒数 */
+    @ApiModelProperty("秒数")
+    private Long noteSecond;
+
+    /** 1有效 */
+    @ApiModelProperty("1有效")
+    private Integer status;
+
+}

+ 71 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserNoteQueryBo.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.modules.user.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 用户笔记记录分页查询对象 user_note
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("用户笔记记录分页查询对象")
+public class UserNoteQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 笔记内容 */
+	@ApiModelProperty("笔记内容")
+	private String noteText;
+	/** 笔记日期 */
+	@ApiModelProperty("笔记日期")
+	private Long noteDate;
+	/** 课程ID */
+	@ApiModelProperty("课程ID")
+	private Long courseId;
+	/** 节ID */
+	@ApiModelProperty("节ID")
+	private Long sectionId;
+	/** 商品Id */
+	@ApiModelProperty("商品Id")
+	private Long goodsId;
+	/** 模块ID */
+	@ApiModelProperty("模块ID")
+	private Long moduleId;
+	/** 章ID */
+	@ApiModelProperty("章ID")
+	private Long chapterId;
+	/** 班级ID */
+	@ApiModelProperty("班级ID")
+	private Long gradeId;
+
+	/** 秒数 */
+	@ApiModelProperty("秒数")
+	private Long noteSecond;
+	/** 1有效 */
+	@ApiModelProperty("1有效")
+	private List<Integer> status;
+}

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserNote.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.user.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 用户笔记记录对象 user_note
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("user_note")
+public class UserNote implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "note_id")
+    private Long noteId;
+    /** 笔记内容 */
+    private String noteText;
+    /** 笔记日期 */
+    private Long noteDate;
+    /** 课程ID */
+    private Long courseId;
+    /** 节ID */
+    private Long sectionId;
+    /** 商品Id */
+    private Long goodsId;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** $column.columnComment */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 模块ID */
+    private Long moduleId;
+    /** 章ID */
+    private Long chapterId;
+    /** 班级ID */
+    private Long gradeId;
+    /** 秒数 */
+    private Long noteSecond;
+
+    /** 1有效 */
+    private Integer status;
+}

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserNoteMapper.java

@@ -0,0 +1,19 @@
+package com.zhongzheng.modules.user.mapper;
+
+import com.zhongzheng.modules.user.bo.UserNoteQueryBo;
+import com.zhongzheng.modules.user.domain.UserNote;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.user.vo.UserDateNoteVo;
+
+import java.util.List;
+
+/**
+ * 用户笔记记录Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+public interface UserNoteMapper extends BaseMapper<UserNote> {
+
+    List<UserDateNoteVo> listDate(UserNoteQueryBo bo);
+}

+ 55 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserNoteService.java

@@ -0,0 +1,55 @@
+package com.zhongzheng.modules.user.service;
+
+import com.zhongzheng.modules.user.domain.UserNote;
+import com.zhongzheng.modules.user.vo.UserDateNoteVo;
+import com.zhongzheng.modules.user.vo.UserNoteVo;
+import com.zhongzheng.modules.user.bo.UserNoteQueryBo;
+import com.zhongzheng.modules.user.bo.UserNoteAddBo;
+import com.zhongzheng.modules.user.bo.UserNoteEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户笔记记录Service接口
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+public interface IUserNoteService extends IService<UserNote> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	UserNoteVo queryById(Long noteId);
+
+	/**
+	 * 查询列表
+	 */
+	List<UserNoteVo> queryList(UserNoteQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入用户笔记记录
+	 * @param bo 用户笔记记录新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(UserNoteAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改用户笔记记录
+	 * @param bo 用户笔记记录编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(UserNoteEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<UserDateNoteVo> listDate(UserNoteQueryBo bo);
+}

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

@@ -59,4 +59,6 @@ public interface IUserSubscribeService extends IService<UserSubscribe> {
 	boolean editCertificate(List<UserSubscribeCertificateEditBo> bo);
 	boolean editCertificate(List<UserSubscribeCertificateEditBo> bo);
 
 
 	List<UserSubscribeImport> importData(List<UserSubscribeImport> userSubscribeImportList);
 	List<UserSubscribeImport> importData(List<UserSubscribeImport> userSubscribeImportList);
+
+	List<UserSubscribeImport> importUpdateData(List<UserSubscribeImport> userSubscribeImportList);
 }
 }

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

@@ -0,0 +1,126 @@
+package com.zhongzheng.modules.user.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.user.vo.UserDateNoteVo;
+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 com.zhongzheng.modules.user.bo.UserNoteAddBo;
+import com.zhongzheng.modules.user.bo.UserNoteQueryBo;
+import com.zhongzheng.modules.user.bo.UserNoteEditBo;
+import com.zhongzheng.modules.user.domain.UserNote;
+import com.zhongzheng.modules.user.mapper.UserNoteMapper;
+import com.zhongzheng.modules.user.vo.UserNoteVo;
+import com.zhongzheng.modules.user.service.IUserNoteService;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 用户笔记记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Service
+public class UserNoteServiceImpl extends ServiceImpl<UserNoteMapper, UserNote> implements IUserNoteService {
+
+    @Override
+    public UserNoteVo queryById(Long noteId){
+        UserNote db = this.baseMapper.selectById(noteId);
+        return BeanUtil.toBean(db, UserNoteVo.class);
+    }
+
+    @Override
+    public List<UserNoteVo> queryList(UserNoteQueryBo bo) {
+        LambdaQueryWrapper<UserNote> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StrUtil.isNotBlank(bo.getNoteText()), UserNote::getNoteText, bo.getNoteText());
+        lqw.eq(bo.getNoteDate() != null, UserNote::getNoteDate, bo.getNoteDate());
+        lqw.eq(bo.getCourseId() != null, UserNote::getCourseId, bo.getCourseId());
+        lqw.eq(bo.getSectionId() != null, UserNote::getSectionId, bo.getSectionId());
+        lqw.eq(bo.getGoodsId() != null, UserNote::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getModuleId() != null, UserNote::getModuleId, bo.getModuleId());
+        lqw.eq(bo.getChapterId() != null, UserNote::getChapterId, bo.getChapterId());
+        lqw.eq(bo.getGradeId() != null, UserNote::getGradeId, bo.getGradeId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<UserNoteVo> entity2Vo(Collection<UserNote> collection) {
+        List<UserNoteVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, UserNoteVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<UserNote> page = (Page<UserNote>)collection;
+            Page<UserNoteVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(UserNoteAddBo bo) {
+        UserNote add = BeanUtil.toBean(bo, UserNote.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(UserNoteEditBo bo) {
+        UserNote update = BeanUtil.toBean(bo, UserNote.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(UserNote entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+
+    @Override
+    public List<UserDateNoteVo> listDate(UserNoteQueryBo bo) {
+        List<UserDateNoteVo> userDateVos = baseMapper.listDate(bo);
+        for (UserDateNoteVo userDateVo : userDateVos) {
+            LambdaQueryWrapper<UserNote> lqw = Wrappers.lambdaQuery();
+            lqw.eq(userDateVo.getDateNote() != null, UserNote::getNoteDate, userDateVo.getDateNote());
+            lqw.eq(bo.getCourseId() != null, UserNote::getCourseId, bo.getCourseId());
+            lqw.eq(bo.getSectionId() != null, UserNote::getSectionId, bo.getSectionId());
+            lqw.eq(bo.getGoodsId() != null, UserNote::getGoodsId, bo.getGoodsId());
+            lqw.eq(bo.getModuleId() != null, UserNote::getModuleId, bo.getModuleId());
+            lqw.eq(bo.getChapterId() != null, UserNote::getChapterId, bo.getChapterId());
+            lqw.eq(bo.getGradeId() != null, UserNote::getGradeId, bo.getGradeId());
+            lqw.in(bo.getStatus() != null, UserNote::getStatus, bo.getStatus());
+            List<UserNoteVo> userNoteVos = entity2Vo(this.list(lqw));
+            userDateVo.setUserNotes(userNoteVos);
+        }
+        return userDateVos;
+    }
+}

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

@@ -342,4 +342,192 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         }
         }
         return userSubscribeImports;
         return userSubscribeImports;
     }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public List<UserSubscribeImport> importUpdateData(List<UserSubscribeImport> userSubscribeImportList) {
+        if (CollectionUtils.isEmpty(userSubscribeImportList)){
+            throw new IllegalArgumentException("请勿导入空表格");
+        }
+        List<UserSubscribeImport> userSubscribeImports = new ArrayList<>();
+        for (UserSubscribeImport userSubscribeImport : userSubscribeImportList) {
+            UserSubscribeEditBo userSbusciEditBo = new UserSubscribeEditBo();
+            //查询商品
+            if (StringUtils.isEmpty(userSubscribeImport.getCode())){
+                userSubscribeImport.setCause("未填商品编码");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            Long goodsId = baseMapper.selectGoodsId(userSubscribeImport.getCode());
+            if (goodsId == null){
+                userSubscribeImport.setCause("商品编码错误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            userSbusciEditBo.setGoodsId(goodsId);
+            //查询学员Id
+            if (StringUtils.isEmpty(userSubscribeImport.getUserName()) || userSubscribeImport.getIdCard() == null){
+                userSubscribeImport.setCause("学员信息未填");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            Long userId = baseMapper.selectUserId(userSubscribeImport.getUserName(),userSubscribeImport.getIdCard());
+            if (userId == null){
+                userSubscribeImport.setCause("用户信息错误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            userSbusciEditBo.setUserId(userId);
+
+            if (StringUtils.isEmpty(userSubscribeImport.getSubscribeStatus())){
+                userSubscribeImport.setCause("预约状态为空");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            if (userSubscribeImport.getSubscribeStatus().equals("正常")){
+                userSbusciEditBo.setSubscribeStatus(1);
+            }
+            if (userSubscribeImport.getSubscribeStatus().equals("取消")){
+                userSbusciEditBo.setSubscribeStatus(0);
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getBeforeStatus())){
+                if (userSubscribeImport.getBeforeStatus().equals("是")) {
+                    if (!StringUtils.isEmpty(userSubscribeImport.getBeforeName())){
+                        userSubscribeImport.setCause("前培标题有误");
+                        userSubscribeImports.add(userSubscribeImport);
+                        continue;
+                    }
+                    Long beforeId = baseMapper.selectBeforeId(userSubscribeImport.getBeforeName());
+                    if (beforeId == null) {
+                        userSubscribeImport.setCause("前培标题有误");
+                        userSubscribeImports.add(userSubscribeImport);
+                        continue;
+                    }
+                    userSbusciEditBo.setBeforeStatus(1);
+                    userSbusciEditBo.setBeforeId(beforeId);
+                    userSbusciEditBo.setBeforeExpend(1);
+                }else if (userSubscribeImport.getBeforeStatus().equals("否")){
+                    userSbusciEditBo.setBeforeStatus(0);
+                }
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getExamStatus())){
+                if (userSubscribeImport.getExamStatus().equals("待登记")){
+                    userSbusciEditBo.setExamStatus(0);
+                }else if(userSubscribeImport.getExamStatus().equals("正常")){
+                    userSbusciEditBo.setExamStatus(1);
+                }else if (userSubscribeImport.getExamStatus().equals("缺考")){
+                    userSbusciEditBo.setExamStatus(2);
+                }else if (userSubscribeImport.getExamStatus().equals("作弊")){
+                    userSbusciEditBo.setExamStatus(3);
+                }else if (userSubscribeImport.getExamStatus().equals("替考")){
+                    userSbusciEditBo.setExamStatus(4);
+                }
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getResult())){
+                if (userSubscribeImport.getResult().equals("不通过")){
+                    userSbusciEditBo.setResult(0);
+                }else if(userSubscribeImport.getResult().equals("通过")){
+                    userSbusciEditBo.setResult(1);
+                }
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getCertificateCode())){
+                userSbusciEditBo.setCertificateCode(userSubscribeImport.getCertificateCode());
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getApplyName())){
+                Long applyId = baseMapper.selectApplyId(userSubscribeImport.getApplyName());
+                if (applyId == null){
+                    userSubscribeImport.setCause("考试标题有误");
+                    userSubscribeImports.add(userSubscribeImport);
+                    continue;
+                }
+                userSbusciEditBo.setApplyId(applyId);
+            }else{
+                userSubscribeImport.setCause("考试标题有误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getStudentTypeName())){
+                if (userSubscribeImport.getStudentTypeName().equals("非补考学员")){
+                    userSbusciEditBo.setStudentType(1);
+                }else{
+                    userSbusciEditBo.setStudentType(2);
+                }
+            }else {
+                userSubscribeImport.setCause("学员报名类型有误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getApplySiteAddress())){
+                userSbusciEditBo.setApplySiteAddress(userSubscribeImport.getApplySiteAddress());
+            }else {
+                userSubscribeImport.setCause("地址未填");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
+            if (userSubscribeImport.getApplySiteExamTime() != null){
+                userSbusciEditBo.setApplySiteExamTime(Convert.toLong(userSubscribeImport.getApplySiteExamTime().getDay()));
+            }else {
+                userSubscribeImport.setCause("考试时间未填");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getApplySiteTime())){
+                String[] split = userSubscribeImport.getApplySiteTime().split("-");
+                if (split.length < 2){
+                    userSubscribeImport.setCause("考试时间段错误");
+                    userSubscribeImports.add(userSubscribeImport);
+                    continue;
+                }
+                String startTime=split[0];
+                String endTime=split[1];
+                startTime = startTime.replace(":","-");
+                endTime = endTime.replace(":","-");
+
+                userSbusciEditBo.setApplySiteStartTime(startTime);
+                userSbusciEditBo.setApplySiteEndTime(endTime);
+            }else {
+                userSubscribeImport.setCause("考试时间段未填");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getApplySiteAddressTrain())){
+                userSbusciEditBo.setApplySiteAddressTrain(userSubscribeImport.getApplySiteAddressTrain());
+            }
+
+            if (userSubscribeImport.getApplySiteExamTrainTime() != null){
+                userSbusciEditBo.setApplySiteExamTrainTime(Convert.toLong(userSubscribeImport.getApplySiteExamTrainTime().getDay()));
+            }
+
+            if (!StringUtils.isEmpty(userSubscribeImport.getApplySiteTrainTime())){
+                String[] split = userSubscribeImport.getApplySiteTrainTime().split("-");
+                if (split.length < 2){
+                    userSubscribeImport.setCause("考试时间段错误");
+                    userSubscribeImports.add(userSubscribeImport);
+                    continue;
+                }
+                String startTime=split[0];
+                String endTime=split[1];
+                startTime = startTime.replace(":","-");
+                endTime = endTime.replace(":","-");
+
+                userSbusciEditBo.setApplySiteStartTrainTime(startTime);
+                userSbusciEditBo.setApplySiteEndTrainTime(endTime);
+            }
+
+            userSbusciEditBo.setUpdateTime(DateUtils.getNowTime());
+            this.updateByEditBo(userSbusciEditBo);
+        }
+        return userSubscribeImports;
+    }
 }
 }

+ 32 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserDateNoteVo.java

@@ -0,0 +1,32 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.zhongzheng.modules.user.domain.UserNote;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 用户笔记记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@ApiModel("用户笔记记录视图对象")
+public class UserDateNoteVo {
+	private static final long serialVersionUID = 1L;
+
+	/** 笔记内容 */
+	@Excel(name = "笔记内容")
+	@ApiModelProperty("笔记内容")
+	private Long dateNote;
+
+	/** 笔记内容 */
+	@Excel(name = "笔记内容")
+	@ApiModelProperty("笔记内容")
+	private List<UserNoteVo> userNotes;
+}

+ 71 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserNoteVo.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.modules.user.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 用户笔记记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-12-14
+ */
+@Data
+@ApiModel("用户笔记记录视图对象")
+public class UserNoteVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long noteId;
+
+	/** 笔记内容 */
+	@Excel(name = "笔记内容")
+	@ApiModelProperty("笔记内容")
+	private String noteText;
+	/** 笔记日期 */
+	@Excel(name = "笔记日期")
+	@ApiModelProperty("笔记日期")
+	private Long noteDate;
+	/** 课程ID */
+	@Excel(name = "课程ID")
+	@ApiModelProperty("课程ID")
+	private Long courseId;
+	/** 节ID */
+	@Excel(name = "节ID")
+	@ApiModelProperty("节ID")
+	private Long sectionId;
+
+	/** 节ID */
+	@Excel(name = "节ID")
+	@ApiModelProperty("节ID")
+	private Long sectionName;
+	/** 商品Id */
+	@Excel(name = "商品Id")
+	@ApiModelProperty("商品Id")
+	private Long goodsId;
+	/** 模块ID */
+	@Excel(name = "模块ID")
+	@ApiModelProperty("模块ID")
+	private Long moduleId;
+	/** 章ID */
+	@Excel(name = "章ID")
+	@ApiModelProperty("章ID")
+	private Long chapterId;
+	/** 班级ID */
+	@Excel(name = "班级ID")
+	@ApiModelProperty("班级ID")
+	private Long gradeId;
+	/** 秒数 */
+	@ApiModelProperty("秒数")
+	private Long noteSecond;
+	/** 1有效 */
+	@ApiModelProperty("1有效")
+	private Integer status;
+
+}

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

@@ -106,6 +106,58 @@
         <result property="knowledgeName" column="knowledge_name"/>
         <result property="knowledgeName" column="knowledge_name"/>
     </resultMap>
     </resultMap>
 
 
+    <resultMap type="com.zhongzheng.modules.goods.vo.GoodsUserQuestionVo" id="GoodsUserQuestionVo">
+        <result property="goodsId" column="goods_id"/>
+        <result property="year" column="year"/>
+        <result property="supplyId" column="supply_id"/>
+        <result property="goodsType" column="goods_type"/>
+        <result property="educationTypeId" column="education_type_id"/>
+        <result property="businessId" column="business_id"/>
+        <result property="schoolId" column="school_id"/>
+        <result property="majorId" column="major_id"/>
+        <result property="goodsName" column="goods_name"/>
+        <result property="standPrice" column="stand_price"/>
+        <result property="lowestPrice" column="lowest_price"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="status" column="status"/>
+        <result property="validityStartTime" column="validity_start_time"/>
+        <result property="validityEndTime" column="validity_end_time"/>
+        <result property="studyStartTime" column="study_start_time"/>
+        <result property="studyEndTime" column="study_end_time"/>
+        <result property="certificateIds" column="certificate_ids"/>
+        <result property="introduce" column="introduce"/>
+        <result property="suitableObject" column="suitable_object"/>
+        <result property="buyNote" column="buy_note"/>
+        <result property="pcDetailHtml" column="pc_detail_html"/>
+        <result property="mobileDetailHtml" column="mobile_detail_html"/>
+        <result property="goodsStatus" column="goods_status"/>
+        <result property="coverUrl" column="cover_url"/>
+        <result property="classHours" column="class_hours"/>
+        <result property="standPriceJson" column="stand_price_json"/>
+        <result property="code" column="code"/>
+        <result property="projectId" column="project_id"/>
+        <result property="goodsAuditionConfig" column="goods_audition_config"/>
+        <result property="goodsPhotographConfig" column="goods_photograph_config"/>
+        <result property="goodsPlayConfig" column="goods_play_config"/>
+        <result property="goodsExamConfig" column="goods_exam_config"/>
+
+        <result property="supplyName" column="supply_name"/>
+        <result property="educationName" column="education_name"/>
+        <result property="projectName" column="project_name"/>
+        <result property="businessName" column="business_name"/>
+        <result property="schoolName" column="school_name"/>
+        <result property="categoryName" column="category_name"/>
+        <result property="handoutsId" column="handouts_id"/>
+        <result property="templateType" column="template_type"/>
+        <result property="period" column="period"/>
+        <result property="makeStartTime" column="make_start_time"/>
+        <result property="makeEndTime" column="make_end_time"/>
+        <result property="studyCount" column="study_count"/>
+        <result property="makeGoodsName" column="make_goods_name"/>
+        <result property="makeGoodsCode" column="make_goods_code"/>
+    </resultMap>
+
     <select id="selectList" parameterType="com.zhongzheng.modules.bank.bo.QuestionQueryBo" resultMap="QuestionResultVo">
     <select id="selectList" parameterType="com.zhongzheng.modules.bank.bo.QuestionQueryBo" resultMap="QuestionResultVo">
        SELECT DISTINCT
        SELECT DISTINCT
         q.*
         q.*
@@ -177,4 +229,42 @@
         </if>
         </if>
 
 
     </select>
     </select>
+
+
+    <select id="listGoodsUserQuestionVo" parameterType="com.zhongzheng.modules.bank.bo.QuestionQueryBo" resultMap="GoodsUserQuestionVo">
+        SELECT
+            g.*,
+            ps.supply_name,
+            cet.education_name,
+            cpt.project_name,
+            cb.business_name,
+            s.school_name,
+            m.category_name,
+            ot.type AS template_type,
+            ( SELECT gs.goods_name FROM goods gs WHERE 1 = 1 AND g.make_goods_id = gs.goods_id ) AS make_goods_name,
+            ( SELECT gs.CODE FROM goods gs WHERE 1 = 1 AND g.make_goods_id = gs.goods_id ) AS make_goods_code,
+            o.user_id
+        FROM
+            goods g
+                LEFT JOIN pay_supply ps ON g.supply_id = ps.supply_id
+                LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+                LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+                LEFT JOIN course_business cb ON g.business_id = cb.id
+                LEFT JOIN school s ON s.id = g.school_id
+                LEFT JOIN major m ON g.major_id = m.id
+                LEFT JOIN order_input_template ot ON cb.template_status = ot.id
+                LEFT JOIN goods_attached ga ON g.goods_id = ga.goods_id
+                LEFT JOIN question_business qb ON ga.major_id = qb.major_id
+                LEFT JOIN order_goods og on g.goods_id =og.goods_id
+                LEFT JOIN `order` o on o.order_sn = og.order_sn
+        WHERE
+            1 = 1
+          AND g.goods_type = 2
+          AND o.user_id=#{userId}
+          AND og.`status` =1
+          and og.pay_status in (2,3)
+          AND og.refund_status in (0,3,1)
+        GROUP BY g.goods_id
+        ORDER BY g.update_time DESC
+    </select>
 </mapper>
 </mapper>

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

@@ -43,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="durationTime" column="duration_time"/>
         <result property="durationTime" column="duration_time"/>
         <result property="liveStartTime" column="live_start_time"/>
         <result property="liveStartTime" column="live_start_time"/>
         <result property="liveEndTime" column="live_end_time"/>
         <result property="liveEndTime" column="live_end_time"/>
+        <result property="recordingUrl" column="recording_url"/>
     </resultMap>
     </resultMap>
 
 
 
 

+ 52 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserNoteMapper.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.user.mapper.UserNoteMapper">
+
+    <resultMap type="com.zhongzheng.modules.user.domain.UserNote" id="UserNoteResult">
+        <result property="noteId" column="note_id"/>
+        <result property="noteText" column="note_text"/>
+        <result property="noteDate" column="note_date"/>
+        <result property="courseId" column="course_id"/>
+        <result property="sectionId" column="section_id"/>
+        <result property="goodsId" column="goods_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="moduleId" column="module_id"/>
+        <result property="chapterId" column="chapter_id"/>
+        <result property="gradeId" column="grade_id"/>
+    </resultMap>
+
+    <resultMap type="com.zhongzheng.modules.user.vo.UserDateNoteVo" id="UserDateNoteVo">
+        <result property="dateNote" column="date_note"/>
+    </resultMap>
+
+    <select id="listDate" parameterType="com.zhongzheng.modules.user.bo.UserNoteQueryBo" resultMap="UserDateNoteVo">
+        SELECT
+            DISTINCT un.note_date as date_note
+        FROM
+            user_note un
+        WHERE 1=1
+            AND un.status = 1
+        <if test="goodsId != null and goodsId !='' ">
+            AND un.goods_id=#{goodsId}
+        </if>
+        <if test="moduleId != null and moduleId !='' ">
+            AND un.module_id=#{moduleId}
+        </if>
+        <if test="courseId != null and courseId !='' ">
+            AND un.course_id =#{courseId}
+        </if>
+        <if test="sectionId != null and sectionId !='' ">
+            AND un.section_id =#{sectionId}
+        </if>
+        <if test="chapterId != null and chapterId !='' ">
+            AND un.chapter_id =#{chapterId}
+        </if>
+        <if test="gradeId != null and gradeId !='' ">
+            AND un.grade_id =#{gradeId}
+        </if>
+        order by un.note_date desc
+    </select>
+</mapper>

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

@@ -117,7 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     </select>
 
 
     <select id="selectUserId" parameterType="map"  resultType="Long">
     <select id="selectUserId" parameterType="map"  resultType="Long">
-        SELECT u.userId FROM `user` u where u.renalname=#{userName} and u.id_card=#{idCard}
+        SELECT u.user_id FROM `user` u where u.realname=#{userName} and u.id_card=#{idCard}
     </select>
     </select>
 
 
     <select id="selectBeforeId" parameterType="map"  resultType="Long">
     <select id="selectBeforeId" parameterType="map"  resultType="Long">