yangdamao 2 年之前
父節點
當前提交
e6d1468559

+ 2 - 2
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/goods/TopGoodsController.java

@@ -3,9 +3,9 @@ package com.zhongzheng.controller.goods;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.goods.vo.TopGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.service.ITopGoodsService;
 import com.zhongzheng.modules.top.goods.service.ITopGoodsService;
-import com.zhongzheng.modules.top.goods.vo.TopGoodsVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -25,7 +25,7 @@ import java.util.List;
 @Api(value = "商品控制器", tags = {"商品管理"})
 @Api(value = "商品控制器", tags = {"商品管理"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
 @RestController
-@RequestMapping("/sys/goods")
+@RequestMapping("/goods")
 public class TopGoodsController extends BaseController {
 public class TopGoodsController extends BaseController {
 
 
     private final ITopGoodsService iTopGoodsService;
     private final ITopGoodsService iTopGoodsService;

+ 65 - 62
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopGoodsQueryBo.java

@@ -1,16 +1,13 @@
 package com.zhongzheng.modules.top.goods.bo;
 package com.zhongzheng.modules.top.goods.bo;
 
 
+import com.zhongzheng.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 
 
-import java.util.Date;
-import java.util.Map;
-import java.util.HashMap;
-
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import com.zhongzheng.common.core.domain.BaseEntity;
+import java.util.List;
 
 
 /**
 /**
  * 商品分页查询对象 top_goods
  * 商品分页查询对象 top_goods
@@ -40,18 +37,28 @@ public class TopGoodsQueryBo extends BaseEntity {
 	/** 年份 */
 	/** 年份 */
 	@ApiModelProperty("年份")
 	@ApiModelProperty("年份")
 	private Long year;
 	private Long year;
-	/** 供应方id */
-	@ApiModelProperty("供应方id")
+	/** 供应方(服务) */
+	@ApiModelProperty("供应方(服务)")
 	private Long supplyId;
 	private Long supplyId;
-	/** 商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播 */
-	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播")
+	/** 商品类型 1视频2题库 3补考 4前培 */
+	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
 	private Integer goodsType;
 	private Integer goodsType;
+
+	/** 商品类型 1视频2题库 3补考 4前培 */
+	@ApiModelProperty("商品类型集合 1视频2题库 3补考 4前培 ")
+	private List<Integer> goodsTypes;
 	/** 教育类型id */
 	/** 教育类型id */
 	@ApiModelProperty("教育类型id")
 	@ApiModelProperty("教育类型id")
 	private Long educationTypeId;
 	private Long educationTypeId;
+	@ApiModelProperty("项目类型id")
+	private Long projectId;
 	/** 业务层次id */
 	/** 业务层次id */
 	@ApiModelProperty("业务层次id")
 	@ApiModelProperty("业务层次id")
 	private Long businessId;
 	private Long businessId;
+	@ApiModelProperty("业务层次id")
+	private List<Long> businessIds;
+	@ApiModelProperty("商品id")
+	private List<Long> goodsIds;
 	/** 所属院校 */
 	/** 所属院校 */
 	@ApiModelProperty("所属院校")
 	@ApiModelProperty("所属院校")
 	private Long schoolId;
 	private Long schoolId;
@@ -61,6 +68,8 @@ public class TopGoodsQueryBo extends BaseEntity {
 	/** 商品名称 */
 	/** 商品名称 */
 	@ApiModelProperty("商品名称")
 	@ApiModelProperty("商品名称")
 	private String goodsName;
 	private String goodsName;
+	@ApiModelProperty("商品编码")
+	private String code;
 	/** 标准价格 */
 	/** 标准价格 */
 	@ApiModelProperty("标准价格")
 	@ApiModelProperty("标准价格")
 	private BigDecimal standPrice;
 	private BigDecimal standPrice;
@@ -69,7 +78,7 @@ public class TopGoodsQueryBo extends BaseEntity {
 	private BigDecimal lowestPrice;
 	private BigDecimal lowestPrice;
 	/** 状态 1有效 0无效 */
 	/** 状态 1有效 0无效 */
 	@ApiModelProperty("状态 1有效 0无效")
 	@ApiModelProperty("状态 1有效 0无效")
-	private Integer status;
+	private List<Integer> status;
 	/** 有效期开始 */
 	/** 有效期开始 */
 	@ApiModelProperty("有效期开始")
 	@ApiModelProperty("有效期开始")
 	private Long validityStartTime;
 	private Long validityStartTime;
@@ -109,30 +118,17 @@ public class TopGoodsQueryBo extends BaseEntity {
 	/** 学时 */
 	/** 学时 */
 	@ApiModelProperty("学时")
 	@ApiModelProperty("学时")
 	private BigDecimal classHours;
 	private BigDecimal classHours;
+
+	/** 商品ID */
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
 	/** 标准价格详情json */
 	/** 标准价格详情json */
 	@ApiModelProperty("标准价格详情json")
 	@ApiModelProperty("标准价格详情json")
 	private String standPriceJson;
 	private String standPriceJson;
-	/** 编码 */
-	@ApiModelProperty("编码")
-	private String code;
-	/** 项目ID */
-	@ApiModelProperty("项目ID")
-	private Long projectId;
-	/** 试听设置 */
-	@ApiModelProperty("试听设置")
-	private String goodsAuditionConfig;
-	/** 拍照设置 */
-	@ApiModelProperty("拍照设置")
-	private String goodsPhotographConfig;
-	/** 播放设置 */
-	@ApiModelProperty("播放设置")
-	private String goodsPlayConfig;
-	/** 试卷试做设置 */
-	@ApiModelProperty("试卷试做设置")
-	private String goodsExamConfig;
-	/** 讲义id */
-	@ApiModelProperty("讲义id")
-	private Long handoutsId;
+
+	/** 学时 */
+	@ApiModelProperty("学时")
+	private Long period;
 	/** 补考或前培开始时间 */
 	/** 补考或前培开始时间 */
 	@ApiModelProperty("补考或前培开始时间")
 	@ApiModelProperty("补考或前培开始时间")
 	private Long makeStartTime;
 	private Long makeStartTime;
@@ -142,33 +138,48 @@ public class TopGoodsQueryBo extends BaseEntity {
 	/** 学习次数 */
 	/** 学习次数 */
 	@ApiModelProperty("学习次数")
 	@ApiModelProperty("学习次数")
 	private Long studyCount;
 	private Long studyCount;
-	/** 试卷拍照设置 */
-	@ApiModelProperty("试卷拍照设置")
-	private String goodsPhotoExamConfig;
-	/** 前培和补考商品关联 */
-	@ApiModelProperty("前培和补考商品关联")
+
+	@ApiModelProperty("科目ID")
+	private Long subjectId;
+
+	@ApiModelProperty("用户ID")
+	private Long userId;
+
+	@ApiModelProperty("被补考的商品")
 	private Long makeGoodsId;
 	private Long makeGoodsId;
-	/** 服务期类型 1年 2月 3日 4区间 */
-	@ApiModelProperty("服务期类型 1年 2月 3日 4区间")
-	private Integer serviceTimeType;
-	/** 服务期数值 */
-	@ApiModelProperty("服务期数值")
-	private Long serviceTimeNum;
-	/** 每天最大节学习数量 */
-	@ApiModelProperty("每天最大节学习数量")
-	private Long sectionMaxNum;
+
+	@ApiModelProperty("获取节数量 1")
+	private Long sectionNum;
+
+	@ApiModelProperty("搜索kEY")
+	private String searchKey;
+
+	@ApiModelProperty("获取有课程的视频商品 1获取 ")
+	private Long haveCourse;
+
+	@ApiModelProperty("排序模式 1默认 2价格从低到高 3价格从高到低")
+	private Integer sortType;
+
 	/** 考试次数 */
 	/** 考试次数 */
 	@ApiModelProperty("考试次数")
 	@ApiModelProperty("考试次数")
 	private Long examNumber;
 	private Long examNumber;
 	/** 前培次数 */
 	/** 前培次数 */
 	@ApiModelProperty("前培次数")
 	@ApiModelProperty("前培次数")
 	private Long doNumber;
 	private Long doNumber;
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 	/** 讲师ID */
 	/** 讲师ID */
 	@ApiModelProperty("讲师ID")
 	@ApiModelProperty("讲师ID")
 	private Long teacherId;
 	private Long teacherId;
+	/** 是否返回订单数量 */
+	@ApiModelProperty("是否返回订单数量 1带 0不带")
+	private Long getOrderNum;
 	/** 科目ID,拼接 */
 	/** 科目ID,拼接 */
 	@ApiModelProperty("科目ID,拼接")
 	@ApiModelProperty("科目ID,拼接")
 	private String subjectIds;
 	private String subjectIds;
+	/** 科目ID,拼接 */
+	@ApiModelProperty("科目ID集合")
+	private List<Long> subjectIdList;
 	/** 证书类型ID */
 	/** 证书类型ID */
 	@ApiModelProperty("证书类型ID")
 	@ApiModelProperty("证书类型ID")
 	private Long certificateTypeId;
 	private Long certificateTypeId;
@@ -178,24 +189,16 @@ public class TopGoodsQueryBo extends BaseEntity {
 	/** 证书模板ID */
 	/** 证书模板ID */
 	@ApiModelProperty("证书模板ID")
 	@ApiModelProperty("证书模板ID")
 	private Long certificateTpId;
 	private Long certificateTpId;
-	/** 商品划线价 */
-	@ApiModelProperty("商品划线价")
-	private BigDecimal linePrice;
-	/** 默认规格模板ID */
-	@ApiModelProperty("默认规格模板ID")
-	private Long specTemplateId;
-	/** 是否显示:0否 1是 */
-	@ApiModelProperty("是否显示:0否 1是")
+	@ApiModelProperty("是否返回商品购买用户数量 1带 0不带")
+	private Long getUserNum;
+	@ApiModelProperty("获取章数量 1")
+	private Long chapterNum;
+	/** 商品服务期校验字段 */
+	@ApiModelProperty("商品服务期校验字段:1,未过期 2,已过期")
+	private Integer serviceCheck;
+	/** 商品服务期校验字段 */
+	@ApiModelProperty("显示状态:1,显示 0,不显示")
 	private Integer showStatus;
 	private Integer showStatus;
-	/** 显示排序字段 */
-	@ApiModelProperty("显示排序字段")
-	private Long showSort;
-	/** 外部跳转链接 */
-	@ApiModelProperty("外部跳转链接")
-	private String externalLink;
-	/** 是否外链商品:0否 1是 */
-	@ApiModelProperty("是否外链商品:0否 1是")
-	private Integer externalLinkStatus;
 	/** 是否提交官方审核 0没有 1有 */
 	/** 是否提交官方审核 0没有 1有 */
 	@ApiModelProperty("是否提交官方审核 0没有 1有")
 	@ApiModelProperty("是否提交官方审核 0没有 1有")
 	private Integer commitPeriodStatus;
 	private Integer commitPeriodStatus;

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopGoodsMapper.java

@@ -1,9 +1,9 @@
 package com.zhongzheng.modules.top.goods.mapper;
 package com.zhongzheng.modules.top.goods.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.goods.vo.TopGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopGoods;
 import com.zhongzheng.modules.top.goods.domain.TopGoods;
-import com.zhongzheng.modules.top.goods.vo.TopGoodsVo;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -16,4 +16,6 @@ import java.util.List;
 public interface TopGoodsMapper extends BaseMapper<TopGoods> {
 public interface TopGoodsMapper extends BaseMapper<TopGoods> {
 
 
     List<TopGoodsVo> selectAllList(TopGoodsQueryBo bo);
     List<TopGoodsVo> selectAllList(TopGoodsQueryBo bo);
+
+    Long getSectionNum(Long goodsId);
 }
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopQuestionMapper.java

@@ -2,6 +2,10 @@ package com.zhongzheng.modules.top.goods.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
+import com.zhongzheng.modules.top.goods.vo.TopBankGoodsExamVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
 /**
  * 题库题目Mapper接口
  * 题库题目Mapper接口
@@ -11,4 +15,5 @@ import com.zhongzheng.modules.top.goods.domain.TopQuestion;
  */
  */
 public interface TopQuestionMapper extends BaseMapper<TopQuestion> {
 public interface TopQuestionMapper extends BaseMapper<TopQuestion> {
 
 
+    List<TopBankGoodsExamVo> getBankGoodsExamList(@Param("goodsId") Long goodsId);
 }
 }

+ 1 - 33
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopGoodsService.java

@@ -1,11 +1,11 @@
 package com.zhongzheng.modules.top.goods.service;
 package com.zhongzheng.modules.top.goods.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.goods.vo.TopGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsAddBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsAddBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopGoods;
 import com.zhongzheng.modules.top.goods.domain.TopGoods;
-import com.zhongzheng.modules.top.goods.vo.TopGoodsVo;
 
 
 import java.util.Collection;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
@@ -17,38 +17,6 @@ import java.util.List;
  * @date 2023-03-15
  * @date 2023-03-15
  */
  */
 public interface ITopGoodsService extends IService<TopGoods> {
 public interface ITopGoodsService extends IService<TopGoods> {
-	/**
-	 * 查询单个
-	 * @return
-	 */
-	TopGoodsVo queryById(Long goodsId);
-
-	/**
-	 * 查询列表
-	 */
-	List<TopGoodsVo> queryList(TopGoodsQueryBo bo);
-
-	/**
-	 * 根据新增业务对象插入商品
-	 * @param bo 商品新增业务对象
-	 * @return
-	 */
-	Boolean insertByAddBo(TopGoodsAddBo bo);
-
-	/**
-	 * 根据编辑业务对象修改商品
-	 * @param bo 商品编辑业务对象
-	 * @return
-	 */
-	Boolean updateByEditBo(TopGoodsEditBo bo);
-
-	/**
-	 * 校验并删除数据
-	 * @param ids 主键集合
-	 * @param isValid 是否校验,true-删除前校验,false-不校验
-	 * @return
-	 */
-	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
 
     boolean goodsBatchCopyTenant();
     boolean goodsBatchCopyTenant();
 
 

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopQuestionService.java

@@ -5,6 +5,7 @@ import com.zhongzheng.modules.top.goods.bo.TopQuestionAddBo;
 import com.zhongzheng.modules.top.goods.bo.TopQuestionEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopQuestionEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopQuestionQueryBo;
 import com.zhongzheng.modules.top.goods.bo.TopQuestionQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
+import com.zhongzheng.modules.top.goods.vo.TopBankGoodsExamVo;
 import com.zhongzheng.modules.top.goods.vo.TopQuestionVo;
 import com.zhongzheng.modules.top.goods.vo.TopQuestionVo;
 
 
 import java.util.Collection;
 import java.util.Collection;
@@ -49,4 +50,6 @@ public interface ITopQuestionService extends IService<TopQuestion> {
 	 * @return
 	 * @return
 	 */
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<TopBankGoodsExamVo> getBankGoodsExamList(Long goodsId);
 }
 }

+ 14 - 210
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopGoodsServiceImpl.java

@@ -2,36 +2,24 @@ package com.zhongzheng.modules.top.goods.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.lang.Validator;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.pagehelper.Page;
-import com.zhongzheng.common.annotation.DataScope;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.service.*;
 import com.zhongzheng.modules.bank.service.*;
 import com.zhongzheng.modules.base.domain.*;
 import com.zhongzheng.modules.base.domain.*;
 import com.zhongzheng.modules.base.service.*;
 import com.zhongzheng.modules.base.service.*;
-import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
 import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.domain.*;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.service.*;
-import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
-import com.zhongzheng.modules.course.vo.CourseMenuVo;
-import com.zhongzheng.modules.course.vo.CourseModuleChapterVo;
-import com.zhongzheng.modules.course.vo.CourseVo;
 import com.zhongzheng.modules.exam.domain.ExamPaper;
 import com.zhongzheng.modules.exam.domain.ExamPaper;
 import com.zhongzheng.modules.exam.service.IExamPaperService;
 import com.zhongzheng.modules.exam.service.IExamPaperService;
-import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
-import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.domain.*;
 import com.zhongzheng.modules.goods.domain.*;
 import com.zhongzheng.modules.goods.service.*;
 import com.zhongzheng.modules.goods.service.*;
-import com.zhongzheng.modules.goods.vo.BankGoodsExamVo;
-import com.zhongzheng.modules.goods.vo.GoodsVo;
+import com.zhongzheng.modules.goods.vo.TopGoodsVo;
 import com.zhongzheng.modules.pay.domain.PayServe;
 import com.zhongzheng.modules.pay.domain.PayServe;
 import com.zhongzheng.modules.pay.domain.PaySupply;
 import com.zhongzheng.modules.pay.domain.PaySupply;
 import com.zhongzheng.modules.pay.service.IPayServeService;
 import com.zhongzheng.modules.pay.service.IPayServeService;
@@ -41,27 +29,22 @@ import com.zhongzheng.modules.polyv.domain.PolyvVideo;
 import com.zhongzheng.modules.polyv.service.IPolyvCataService;
 import com.zhongzheng.modules.polyv.service.IPolyvCataService;
 import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
 import com.zhongzheng.modules.system.bo.GoodsCopyEnum;
 import com.zhongzheng.modules.system.bo.GoodsCopyEnum;
-import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
-import com.zhongzheng.modules.system.domain.SysTenant;
-import com.zhongzheng.modules.top.goods.bo.TopGoodsAddBo;
-import com.zhongzheng.modules.top.goods.bo.TopGoodsEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.bo.TopGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.domain.*;
 import com.zhongzheng.modules.top.goods.domain.*;
 import com.zhongzheng.modules.top.goods.mapper.TopGoodsMapper;
 import com.zhongzheng.modules.top.goods.mapper.TopGoodsMapper;
 import com.zhongzheng.modules.top.goods.service.*;
 import com.zhongzheng.modules.top.goods.service.*;
-import com.zhongzheng.modules.top.goods.vo.TopGoodsVo;
+import com.zhongzheng.modules.top.goods.vo.TopBankGoodsExamVo;
 import net.polyv.common.v1.util.StringUtils;
 import net.polyv.common.v1.util.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
-import static java.math.RoundingMode.HALF_UP;
-
 /**
 /**
  * 商品Service业务层处理
  * 商品Service业务层处理
  *
  *
@@ -277,126 +260,6 @@ public class TopGoodsServiceImpl extends ServiceImpl<TopGoodsMapper, TopGoods> i
     @Autowired
     @Autowired
     private ITopPayServeService iTopPayServeService;
     private ITopPayServeService iTopPayServeService;
 
 
-    @Override
-    public TopGoodsVo queryById(Long goodsId){
-        TopGoods db = this.baseMapper.selectById(goodsId);
-        return BeanUtil.toBean(db, TopGoodsVo.class);
-    }
-
-    @Override
-    public List<TopGoodsVo> queryList(TopGoodsQueryBo bo) {
-        LambdaQueryWrapper<TopGoods> lqw = Wrappers.lambdaQuery();
-        lqw.eq(bo.getYear() != null, TopGoods::getYear, bo.getYear());
-        lqw.eq(bo.getSupplyId() != null, TopGoods::getSupplyId, bo.getSupplyId());
-        lqw.eq(bo.getGoodsType() != null, TopGoods::getGoodsType, bo.getGoodsType());
-        lqw.eq(bo.getEducationTypeId() != null, TopGoods::getEducationTypeId, bo.getEducationTypeId());
-        lqw.eq(bo.getBusinessId() != null, TopGoods::getBusinessId, bo.getBusinessId());
-        lqw.eq(bo.getSchoolId() != null, TopGoods::getSchoolId, bo.getSchoolId());
-        lqw.eq(bo.getMajorId() != null, TopGoods::getMajorId, bo.getMajorId());
-        lqw.like(StrUtil.isNotBlank(bo.getGoodsName()), TopGoods::getGoodsName, bo.getGoodsName());
-        lqw.eq(bo.getStandPrice() != null, TopGoods::getStandPrice, bo.getStandPrice());
-        lqw.eq(bo.getLowestPrice() != null, TopGoods::getLowestPrice, bo.getLowestPrice());
-        lqw.eq(bo.getStatus() != null, TopGoods::getStatus, bo.getStatus());
-        lqw.eq(bo.getValidityStartTime() != null, TopGoods::getValidityStartTime, bo.getValidityStartTime());
-        lqw.eq(bo.getValidityEndTime() != null, TopGoods::getValidityEndTime, bo.getValidityEndTime());
-        lqw.eq(bo.getStudyStartTime() != null, TopGoods::getStudyStartTime, bo.getStudyStartTime());
-        lqw.eq(bo.getStudyEndTime() != null, TopGoods::getStudyEndTime, bo.getStudyEndTime());
-        lqw.eq(StrUtil.isNotBlank(bo.getCertificateIds()), TopGoods::getCertificateIds, bo.getCertificateIds());
-        lqw.eq(StrUtil.isNotBlank(bo.getIntroduce()), TopGoods::getIntroduce, bo.getIntroduce());
-        lqw.eq(StrUtil.isNotBlank(bo.getSuitableObject()), TopGoods::getSuitableObject, bo.getSuitableObject());
-        lqw.eq(StrUtil.isNotBlank(bo.getBuyNote()), TopGoods::getBuyNote, bo.getBuyNote());
-        lqw.eq(StrUtil.isNotBlank(bo.getPcDetailHtml()), TopGoods::getPcDetailHtml, bo.getPcDetailHtml());
-        lqw.eq(StrUtil.isNotBlank(bo.getMobileDetailHtml()), TopGoods::getMobileDetailHtml, bo.getMobileDetailHtml());
-        lqw.eq(bo.getGoodsStatus() != null, TopGoods::getGoodsStatus, bo.getGoodsStatus());
-        lqw.eq(StrUtil.isNotBlank(bo.getCoverUrl()), TopGoods::getCoverUrl, bo.getCoverUrl());
-        lqw.eq(bo.getClassHours() != null, TopGoods::getClassHours, bo.getClassHours());
-        lqw.eq(StrUtil.isNotBlank(bo.getStandPriceJson()), TopGoods::getStandPriceJson, bo.getStandPriceJson());
-        lqw.eq(StrUtil.isNotBlank(bo.getCode()), TopGoods::getCode, bo.getCode());
-        lqw.eq(bo.getProjectId() != null, TopGoods::getProjectId, bo.getProjectId());
-        lqw.eq(StrUtil.isNotBlank(bo.getGoodsAuditionConfig()), TopGoods::getGoodsAuditionConfig, bo.getGoodsAuditionConfig());
-        lqw.eq(StrUtil.isNotBlank(bo.getGoodsPhotographConfig()), TopGoods::getGoodsPhotographConfig, bo.getGoodsPhotographConfig());
-        lqw.eq(StrUtil.isNotBlank(bo.getGoodsPlayConfig()), TopGoods::getGoodsPlayConfig, bo.getGoodsPlayConfig());
-        lqw.eq(StrUtil.isNotBlank(bo.getGoodsExamConfig()), TopGoods::getGoodsExamConfig, bo.getGoodsExamConfig());
-        lqw.eq(bo.getHandoutsId() != null, TopGoods::getHandoutsId, bo.getHandoutsId());
-        lqw.eq(bo.getMakeStartTime() != null, TopGoods::getMakeStartTime, bo.getMakeStartTime());
-        lqw.eq(bo.getMakeEndTime() != null, TopGoods::getMakeEndTime, bo.getMakeEndTime());
-        lqw.eq(bo.getStudyCount() != null, TopGoods::getStudyCount, bo.getStudyCount());
-        lqw.eq(StrUtil.isNotBlank(bo.getGoodsPhotoExamConfig()), TopGoods::getGoodsPhotoExamConfig, bo.getGoodsPhotoExamConfig());
-        lqw.eq(bo.getMakeGoodsId() != null, TopGoods::getMakeGoodsId, bo.getMakeGoodsId());
-        lqw.eq(bo.getServiceTimeType() != null, TopGoods::getServiceTimeType, bo.getServiceTimeType());
-        lqw.eq(bo.getServiceTimeNum() != null, TopGoods::getServiceTimeNum, bo.getServiceTimeNum());
-        lqw.eq(bo.getSectionMaxNum() != null, TopGoods::getSectionMaxNum, bo.getSectionMaxNum());
-        lqw.eq(bo.getExamNumber() != null, TopGoods::getExamNumber, bo.getExamNumber());
-        lqw.eq(bo.getDoNumber() != null, TopGoods::getDoNumber, bo.getDoNumber());
-        lqw.eq(bo.getTeacherId() != null, TopGoods::getTeacherId, bo.getTeacherId());
-        lqw.eq(StrUtil.isNotBlank(bo.getSubjectIds()), TopGoods::getSubjectIds, bo.getSubjectIds());
-        lqw.eq(bo.getCertificateTypeId() != null, TopGoods::getCertificateTypeId, bo.getCertificateTypeId());
-        lqw.eq(bo.getCertificateId() != null, TopGoods::getCertificateId, bo.getCertificateId());
-        lqw.eq(bo.getCertificateTpId() != null, TopGoods::getCertificateTpId, bo.getCertificateTpId());
-        lqw.eq(bo.getLinePrice() != null, TopGoods::getLinePrice, bo.getLinePrice());
-        lqw.eq(bo.getSpecTemplateId() != null, TopGoods::getSpecTemplateId, bo.getSpecTemplateId());
-        lqw.eq(bo.getShowStatus() != null, TopGoods::getShowStatus, bo.getShowStatus());
-        lqw.eq(bo.getShowSort() != null, TopGoods::getShowSort, bo.getShowSort());
-        lqw.eq(StrUtil.isNotBlank(bo.getExternalLink()), TopGoods::getExternalLink, bo.getExternalLink());
-        lqw.eq(bo.getExternalLinkStatus() != null, TopGoods::getExternalLinkStatus, bo.getExternalLinkStatus());
-        lqw.eq(bo.getCommitPeriodStatus() != null, TopGoods::getCommitPeriodStatus, bo.getCommitPeriodStatus());
-        lqw.eq(StrUtil.isNotBlank(bo.getCommitPeriodRemark()), TopGoods::getCommitPeriodRemark, bo.getCommitPeriodRemark());
-        return entity2Vo(this.list(lqw));
-    }
-
-    /**
-    * 实体类转化成视图对象
-    *
-    * @param collection 实体类集合
-    * @return
-    */
-    private List<TopGoodsVo> entity2Vo(Collection<TopGoods> collection) {
-        List<TopGoodsVo> voList = collection.stream()
-                .map(any -> BeanUtil.toBean(any, TopGoodsVo.class))
-                .collect(Collectors.toList());
-        if (collection instanceof Page) {
-            Page<TopGoods> page = (Page<TopGoods>)collection;
-            Page<TopGoodsVo> pageVo = new Page<>();
-            BeanUtil.copyProperties(page,pageVo);
-            pageVo.addAll(voList);
-            voList = pageVo;
-        }
-        return voList;
-    }
-
-    @Override
-    public Boolean insertByAddBo(TopGoodsAddBo bo) {
-        TopGoods add = BeanUtil.toBean(bo, TopGoods.class);
-        validEntityBeforeSave(add);
-        add.setCreateTime(DateUtils.getNowTime());
-        add.setUpdateTime(DateUtils.getNowTime());
-        return this.save(add);
-    }
-
-    @Override
-    public Boolean updateByEditBo(TopGoodsEditBo bo) {
-        TopGoods update = BeanUtil.toBean(bo, TopGoods.class);
-        validEntityBeforeSave(update);
-        update.setUpdateTime(DateUtils.getNowTime());
-        return this.updateById(update);
-    }
-
-    /**
-     * 保存前的数据校验
-     *
-     * @param entity 实体类数据
-     */
-    private void validEntityBeforeSave(TopGoods entity){
-        //TODO 做一些数据校验,如唯一约束
-    }
-
-    @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
-        return this.removeByIds(ids);
-    }
 
 
     @Override
     @Override
 //    @Transactional(rollbackFor = Exception.class)
 //    @Transactional(rollbackFor = Exception.class)
@@ -1891,35 +1754,28 @@ public class TopGoodsServiceImpl extends ServiceImpl<TopGoodsMapper, TopGoods> i
 
 
 
 
     @Override
     @Override
-    @DataScope(businessAlias = "cb")
     public List<TopGoodsVo> selectList(TopGoodsQueryBo bo) {
     public List<TopGoodsVo> selectList(TopGoodsQueryBo bo) {
         if (Validator.isNotEmpty(bo.getGoodsName())) {
         if (Validator.isNotEmpty(bo.getGoodsName())) {
             bo.setGoodsName(bo.getGoodsName().trim());
             bo.setGoodsName(bo.getGoodsName().trim());
         }
         }
         List<TopGoodsVo> list = baseMapper.selectAllList(bo);
         List<TopGoodsVo> list = baseMapper.selectAllList(bo);
         if (Validator.isNotEmpty(bo.getSectionNum()) && bo.getSectionNum().longValue() == 1) {
         if (Validator.isNotEmpty(bo.getSectionNum()) && bo.getSectionNum().longValue() == 1) {
-            for (GoodsVo vo : list) {
+            for (TopGoodsVo vo : list) {
                 Long sectionNum = baseMapper.getSectionNum(vo.getGoodsId());
                 Long sectionNum = baseMapper.getSectionNum(vo.getGoodsId());
                 vo.setSectionNum(sectionNum);
                 vo.setSectionNum(sectionNum);
             }
             }
         }
         }
-        if (Validator.isNotEmpty(bo.getGoodsType()) && bo.getGoodsType() == 2) {
-            for (GoodsVo vo : list) {
-                Long totalNum = getExamNum(vo.getGoodsId());
-                vo.setTotalExamNum(totalNum);
-            }
-        }
         list.forEach(goods -> {
         list.forEach(goods -> {
             //多规格下的价格区间
             //多规格下的价格区间
             if (ObjectUtils.isNotNull(goods.getSpecTemplateId())) {
             if (ObjectUtils.isNotNull(goods.getSpecTemplateId())) {
-                List<GoodsSpecAttributeRelation> specAttributeRelations = goodsSpecAttributeRelationService
-                        .list(new LambdaQueryWrapper<GoodsSpecAttributeRelation>()
-                                .eq(GoodsSpecAttributeRelation::getSpecTemplateId, goods.getSpecTemplateId()));
+                List<TopGoodsSpecAttributeRelation> specAttributeRelations = topGoodsSpecAttributeRelationService
+                        .list(new LambdaQueryWrapper<TopGoodsSpecAttributeRelation>()
+                                .eq(TopGoodsSpecAttributeRelation::getSpecTemplateId, goods.getSpecTemplateId()));
                 if (CollectionUtils.isNotEmpty(specAttributeRelations)) {
                 if (CollectionUtils.isNotEmpty(specAttributeRelations)) {
-                    List<Long> goodsIds = specAttributeRelations.stream().filter(x -> ObjectUtils.isNotNull(x.getGoodsId())).map(GoodsSpecAttributeRelation::getGoodsId).collect(Collectors.toList());
-                    List<Goods> goodsList = listByIds(goodsIds);
+                    List<Long> goodsIds = specAttributeRelations.stream().filter(x -> ObjectUtils.isNotNull(x.getGoodsId())).map(TopGoodsSpecAttributeRelation::getGoodsId).collect(Collectors.toList());
+                    List<TopGoods> goodsList = listByIds(goodsIds);
                     //从小到大排序
                     //从小到大排序
-                    List<Goods> collect = goodsList.stream().filter(x -> ObjectUtils.isNotNull(x.getStandPrice())).sorted(Comparator.comparing(Goods::getStandPrice)).collect(Collectors.toList());
+                    List<TopGoods> collect = goodsList.stream().filter(x -> ObjectUtils.isNotNull(x.getStandPrice())).sorted(Comparator.comparing(TopGoods::getStandPrice)).collect(Collectors.toList());
                     goods.setMinPrice(collect.get(0).getStandPrice());
                     goods.setMinPrice(collect.get(0).getStandPrice());
                     goods.setMaxPrice(collect.get(collect.size() - 1).getStandPrice());
                     goods.setMaxPrice(collect.get(collect.size() - 1).getStandPrice());
                 }
                 }
@@ -1927,7 +1783,7 @@ public class TopGoodsServiceImpl extends ServiceImpl<TopGoodsMapper, TopGoods> i
             //是否包含每日一练试卷
             //是否包含每日一练试卷
             if (goods.getGoodsType() == 2) {
             if (goods.getGoodsType() == 2) {
                 //题库商品
                 //题库商品
-                List<BankGoodsExamVo> examVos = questionMapper.getBankGoodsExamList(goods.getGoodsId());
+                List<TopBankGoodsExamVo> examVos = iTopQuestionService.getBankGoodsExamList(goods.getGoodsId());
                 if (examVos.stream().filter(x -> StringUtils.isNotBlank(x.getPaperName())).anyMatch(x -> x.getPaperName().equals("每日一练"))) {
                 if (examVos.stream().filter(x -> StringUtils.isNotBlank(x.getPaperName())).anyMatch(x -> x.getPaperName().equals("每日一练"))) {
                     goods.setExamRecord(1);
                     goods.setExamRecord(1);
                 } else {
                 } else {
@@ -1936,59 +1792,7 @@ public class TopGoodsServiceImpl extends ServiceImpl<TopGoodsMapper, TopGoods> i
             } else {
             } else {
                 goods.setExamRecord(0);
                 goods.setExamRecord(0);
             }
             }
-
-            //商品同步新机构时间
-            List<SysGoodsCopyRecord> copyRecords = iSysGoodsCopyRecordService.getGoodsCopy(goods.getGoodsId(),GoodsCopyEnum.GOODS.getType());
-            if (CollectionUtils.isNotEmpty(copyRecords)){
-                Map<Long, List<SysGoodsCopyRecord>> map = copyRecords.stream().collect(Collectors.groupingBy(SysGoodsCopyRecord::getTenantId));
-                List<String> msg = new ArrayList<>();
-                map.forEach((k,v) -> {
-                    SysGoodsCopyRecord record = v.stream().sorted(Comparator.comparing(SysGoodsCopyRecord::getCreateTime).reversed()).collect(Collectors.toList()).stream().findFirst().get();
-                    SysTenant tenant = iSysTenantService.getById(record.getTenantId());
-                    msg.add(String.format("%s【最新同步时间:%s】",tenant.getTenantName(),DateUtils.timestampToDateFormat(record.getCreateTime(),"yyyy-MM-dd HH:mm:ss")));
-                });
-                goods.setCopyTime(msg);
-            }
         });
         });
-        //继教二建统计学时
-        if (Validator.isNotEmpty(bo.getChapterNum())) {
-            list.forEach(goodsVo -> {
-                AtomicReference<Double> classHours = new AtomicReference<>(0.0);
-                //查询课程列表
-                GoodsCourseQueryBo courseQueryBo = new GoodsCourseQueryBo();
-                courseQueryBo.setGoodsId(goodsVo.getGoodsId());
-                List<CourseVo> courseVoList = iGoodsCourseService.selectList(courseQueryBo);
-                if (courseVoList != null && courseVoList.size() > 0) {
-                    courseVoList.forEach(courseVo -> {
-                        //获取模块信息
-                        CourseMenuQueryBo bo1 = new CourseMenuQueryBo();
-                        bo1.setCourseId(courseVo.getCourseId());
-                        List<CourseMenuVo> courseMenuVoList = iCourseMenuService.selectList(bo1);
-                        if (courseMenuVoList != null && courseMenuVoList.size() > 0) {
-                            courseMenuVoList.forEach(courseMenuVo -> {
-                                classHours.updateAndGet(v -> v + Math.round(courseMenuVo.getClassHours()));
-                                //获取章信息
-                                List<CourseModuleChapterVo> courseModuleChapterVoList = iCourseModuleChapterService.getListById(courseMenuVo.getMenuId());
-                                AtomicReference<Double> chapterHours = new AtomicReference<>(0.0);
-                                if (courseModuleChapterVoList != null && courseModuleChapterVoList.size() > 0) {
-                                    courseModuleChapterVoList.forEach(courseModuleChapterVo -> {
-                                        //获取节信息
-                                        List<CourseChapterSectionVo> courseChapterSectionVoList = iCourseChapterSectionService.getListById(courseModuleChapterVo.getChapterId());
-                                        if (courseChapterSectionVoList != null && courseChapterSectionVoList.size() > 0) {
-                                            courseChapterSectionVoList.forEach(courseChapterSectionVo -> {
-                                                chapterHours.updateAndGet(v -> v + courseChapterSectionVo.getClassHours());
-                                            });
-                                        }
-                                    });
-                                }
-                                classHours.updateAndGet(v -> v + Math.round(chapterHours.get()));
-                            });
-                        }
-                    });
-                }
-                goodsVo.setClassHours((new BigDecimal(String.valueOf(classHours))).setScale(0, HALF_UP));
-            });
-        }
         return list;
         return list;
     }
     }
 
 

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopQuestionServiceImpl.java

@@ -13,6 +13,7 @@ import com.zhongzheng.modules.top.goods.bo.TopQuestionQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
 import com.zhongzheng.modules.top.goods.domain.TopQuestion;
 import com.zhongzheng.modules.top.goods.mapper.TopQuestionMapper;
 import com.zhongzheng.modules.top.goods.mapper.TopQuestionMapper;
 import com.zhongzheng.modules.top.goods.service.ITopQuestionService;
 import com.zhongzheng.modules.top.goods.service.ITopQuestionService;
+import com.zhongzheng.modules.top.goods.vo.TopBankGoodsExamVo;
 import com.zhongzheng.modules.top.goods.vo.TopQuestionVo;
 import com.zhongzheng.modules.top.goods.vo.TopQuestionVo;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -107,4 +108,9 @@ public class TopQuestionServiceImpl extends ServiceImpl<TopQuestionMapper, TopQu
         }
         }
         return this.removeByIds(ids);
         return this.removeByIds(ids);
     }
     }
+
+    @Override
+    public List<TopBankGoodsExamVo> getBankGoodsExamList(Long goodsId) {
+        return baseMapper.getBankGoodsExamList(goodsId);
+    }
 }
 }

+ 69 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopBankGoodsExamVo.java

@@ -0,0 +1,69 @@
+package com.zhongzheng.modules.top.goods.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2022年11月11日 14:25
+ */
+@Data
+@ApiModel("每日一练试卷对象")
+public class TopBankGoodsExamVo implements Serializable {
+
+    @ApiModelProperty("id")
+    private Long id;
+    /**
+     * 商品id
+     */
+    @ApiModelProperty("商品id")
+    private Long goodsId;
+    /**
+     * 模块卷ID
+     */
+    @ApiModelProperty("模块卷ID")
+    private Long moduleExamId;
+    /**
+     * 章卷ID
+     */
+    @ApiModelProperty("章卷ID")
+    private Long chapterExamId;
+    /**
+     * 试卷ID
+     */
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+    /**
+     * 试卷名称
+     */
+    @ApiModelProperty("试卷名称")
+    private String examName;
+    /**
+     * 试卷类型名称
+     */
+    @ApiModelProperty("试卷类型名称")
+    private String paperName;
+    /**
+     * 每日一练时间
+     */
+    @ApiModelProperty("每日一练时间")
+    private Long examTime;
+    /**
+     * 1有效 0无效
+     */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+    /**
+     * 添加时间
+     */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /**
+     * 修改时间
+     */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 36 - 46
zhongzheng-system/src/main/resources/mapper/modules/top/TopGoodsMapper.xml

@@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhongzheng.modules.top.goods.mapper.TopGoodsMapper">
 <mapper namespace="com.zhongzheng.modules.top.goods.mapper.TopGoodsMapper">
 
 
-    <resultMap type="com.zhongzheng.modules.goods.vo.GoodsVo" id="TopGoodsResultVo">
+    <resultMap type="com.zhongzheng.modules.goods.vo.TopGoodsVo" id="TopGoodsResultVo">
         <result property="goodsId" column="goods_id"/>
         <result property="goodsId" column="goods_id"/>
         <result property="year" column="year"/>
         <result property="year" column="year"/>
         <result property="supplyId" column="supply_id"/>
         <result property="supplyId" column="supply_id"/>
@@ -55,7 +55,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="schoolName" column="school_name"/>
         <result property="schoolName" column="school_name"/>
         <result property="categoryName" column="category_name"/>
         <result property="categoryName" column="category_name"/>
         <result property="handoutsId" column="handouts_id"/>
         <result property="handoutsId" column="handouts_id"/>
-        <result property="templateType" column="template_type"/>
         <result property="period" column="period"/>
         <result property="period" column="period"/>
         <result property="makeStartTime" column="make_start_time"/>
         <result property="makeStartTime" column="make_start_time"/>
         <result property="makeEndTime" column="make_end_time"/>
         <result property="makeEndTime" column="make_end_time"/>
@@ -102,60 +101,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         (SELECT GROUP_CONCAT(subject_name) from top_course_subject where FIND_IN_SET(id,g.subject_ids)) subject_names,
         (SELECT GROUP_CONCAT(subject_name) from top_course_subject where FIND_IN_SET(id,g.subject_ids)) subject_names,
         (SELECT COUNT( DISTINCT gar.spec_template_id ) FROM top_goods_spec_attribute_relation gar WHERE gar.goods_id =
         (SELECT COUNT( DISTINCT gar.spec_template_id ) FROM top_goods_spec_attribute_relation gar WHERE gar.goods_id =
         g.goods_id AND gar.`status` = 1 ) spec_template_number,
         g.goods_id AND gar.`status` = 1 ) spec_template_number,
-        ot.type AS template_type,
         (SELECT gs.goods_name FROM top_goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_name,
         (SELECT gs.goods_name FROM top_goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_name,
         (SELECT gs.code FROM top_goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_code
         (SELECT gs.code FROM top_goods gs where 1=1 and g.make_goods_id = gs.goods_id) as make_goods_code
         <if test="chapterNum ==1">
         <if test="chapterNum ==1">
-            ,(SELECT COUNT(m.id)+(SELECT COUNT(p.id) FROM top_course_module_chapter p LEFT JOIN course_menu m on m.menu_id =
-            p.module_id LEFT JOIN goods_course gc on gc.course_id = m.course_id where gc.goods_id = g.goods_id and
-            m.type in(1))+(SELECT COUNT(cmc.id) FROM top_course_module_chapter cmc LEFT JOIN course_menu m on m.menu_id =
-            cmc.module_id LEFT JOIN goods_course gc on gc.course_id = m.course_id where gc.goods_id = g.goods_id and
-            m.type in(2)) FROM course_menu m LEFT JOIN goods_course gc on gc.course_id = m.course_id where gc.goods_id =
+            ,(SELECT COUNT(m.id)+(SELECT COUNT(p.id) FROM top_course_module_chapter p LEFT JOIN top_course_menu m on m.menu_id =
+            p.module_id LEFT JOIN top_goods_course gc on gc.course_id = m.course_id where gc.goods_id = g.goods_id and
+            m.type in(1))+(SELECT COUNT(cmc.id) FROM top_course_module_chapter cmc LEFT JOIN top_course_menu m on m.menu_id =
+            cmc.module_id LEFT JOIN top_goods_course gc on gc.course_id = m.course_id where gc.goods_id = g.goods_id and
+            m.type in(2)) FROM top_course_menu m LEFT JOIN top_goods_course gc on gc.course_id = m.course_id where gc.goods_id =
             g.goods_id and m.type in(3)) as chapter_num
             g.goods_id and m.type in(3)) as chapter_num
         </if>
         </if>
-        ,(case WHEN g.goods_type =1 then (SELECT count(*) FROM goods_course gc LEFT JOIN course c on gc.course_id =
+        ,(case WHEN g.goods_type =1 then (SELECT count(*) FROM top_goods_course gc LEFT JOIN top_course c on gc.course_id =
         c.course_id where gc.goods_id =g.goods_id and c.course_show=1) ELSE 0 end) as course_num
         c.course_id where gc.goods_id =g.goods_id and c.course_show=1) ELSE 0 end) as course_num
-        <if test="goodsType ==1">
-            , (SELECT count(*) FROM class_grade cg LEFT JOIN class_grade_goods cgg on cg.grade_id = cgg.grade_id where
-            cgg.goods_id = g.goods_id and cg.`status` = 1 ) as grade_num
-        </if>
-        <if test="goodsType ==2">
-            , (SELECT count(*) from order_goods og where og.goods_id = g.goods_id and og.pay_status IN ( 2, 3, 4 )
-            AND og.refund_status IN (0,3,1) ) as order_num
-        </if>
         <if test="getOrderNum != null and getOrderNum == 1">
         <if test="getOrderNum != null and getOrderNum == 1">
             ,ou.goods_live_num
             ,ou.goods_live_num
         </if>
         </if>
-        <if test="getUserNum != null and getUserNum == 1">
-            ,(SELECT count(*) from order_goods og where og.goods_id = g.goods_id and og.`status` = 1
-            AND og.refund_status in (0,1,3)
-            AND og.pay_status in (2,3,4)) as buy_user_num
-        </if>
         FROM
         FROM
         goods g
         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
-        <if test="getOrderNum != null and getOrderNum == 1">
-            LEFT JOIN (
-            SELECT
-            og.goods_id,
-            sum( CASE WHEN g.goods_type = 6 THEN 1 ELSE 0 END ) AS goods_live_num
-            FROM
-            `order` o
-            LEFT JOIN order_goods og ON o.order_sn = og.order_sn
-            LEFT JOIN goods g ON og.goods_id = g.goods_id
-            WHERE o.`status` = 1
-            AND og.refund_status in (0,1,3)
-            AND og.pay_status in (2,3,4)
-            GROUP BY
-            og.goods_id
-            ) ou ON g.goods_id = ou.goods_id
-        </if>
+        LEFT JOIN top_pay_supply ps ON g.supply_id = ps.supply_id
+        LEFT JOIN top_course_education_type cet ON g.education_type_id = cet.id
+        LEFT JOIN top_course_project_type cpt ON g.project_id = cpt.id
+        LEFT JOIN top_course_business cb ON g.business_id = cb.id
+        LEFT JOIN top_school s ON s.id = g.school_id
+        LEFT JOIN top_major m ON g.major_id = m.id
         WHERE
         WHERE
         1 = 1
         1 = 1
         AND g.goods_type != 5
         AND g.goods_type != 5
@@ -252,7 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             )
             )
         </if>
         </if>
         <if test="goodsType ==1 and haveCourse != null and haveCourse == 1">
         <if test="goodsType ==1 and haveCourse != null and haveCourse == 1">
-            AND (SELECT count(*) from goods_course gc LEFT JOIN course c ON gc.course_id = c.course_id where gc.goods_id
+            AND (SELECT count(*) from top_goods_course gc LEFT JOIN top_course c ON gc.course_id = c.course_id where gc.goods_id
             = g.goods_id and c.`status` = 1
             = g.goods_id and c.`status` = 1
             ) >0
             ) >0
         </if>
         </if>
@@ -271,4 +239,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ORDER BY g.create_time DESC
             ORDER BY g.create_time DESC
         </if>
         </if>
     </select>
     </select>
+
+
+    <select id="getSectionNum" parameterType="Long" resultType="Long">
+        SELECT COUNT(m.id) + (
+            SELECT COUNT(n.id)
+            FROM top_course_chapter_section n
+                     LEFT JOIN top_course_module_chapter p ON n.chapter_id = p.chapter_id
+                     LEFT JOIN top_course_menu m ON m.menu_id = p.module_id
+                     LEFT JOIN top_goods_course gc ON gc.course_id = m.course_id
+            WHERE gc.goods_id = #{goodsId}
+              AND m.type = 1) + (
+                   SELECT COUNT(n.id)
+                   FROM top_course_chapter_section n
+                            LEFT JOIN top_course_menu m ON m.menu_id = n.chapter_id
+                            LEFT JOIN top_goods_course gc ON gc.course_id = m.course_id
+                   WHERE gc.goods_id = #{goodsId}
+                     AND m.type = 2)
+        FROM top_course_menu m
+                 LEFT JOIN top_goods_course gc ON gc.course_id = m.course_id
+        WHERE gc.goods_id = #{goodsId}
+          AND m.type = 3
+    </select>
 </mapper>
 </mapper>

+ 54 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopQuestionMapper.xml

@@ -0,0 +1,54 @@
+<?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.top.goods.mapper.TopQuestionMapper">
+
+    <select id="getBankGoodsExamList" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.top.goods.vo.TopBankGoodsExamVo">
+        SELECT
+            ga.goods_id AS goodsId,
+            qmc.module_exam_id AS moduleExamId,
+            qce.chapter_exam_id AS chapterExamId,
+            e.exam_id AS examId,
+            e.exam_name AS examName,
+            ep.paper_name AS paperName
+        FROM
+            top_goods_attached ga
+                LEFT JOIN top_question_module_chapter qmc ON ga.major_id = qmc.module_exam_id
+                LEFT JOIN top_question_chapter_exam qce ON qmc.chapter_exam_id = qce.chapter_exam_id
+                LEFT JOIN top_exam e ON qce.exam_id = e.exam_id
+                LEFT JOIN top_exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE
+            ga.goods_id = #{goodsId} AND ga.type = 1
+        UNION ALL
+        SELECT
+            ga.goods_id AS goodsId,
+            0 AS moduleExamId,
+            qce.chapter_exam_id AS chapterExamId,
+            e.exam_id AS examId,
+            e.exam_name AS examName,
+            ep.paper_name AS paperName
+        FROM
+            top_goods_attached ga
+                LEFT JOIN top_question_chapter_exam qce ON ga.major_id = qce.chapter_exam_id
+                LEFT JOIN top_exam e ON qce.exam_id = e.exam_id
+                LEFT JOIN top_exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE
+            ga.goods_id = #{goodsId} AND ga.type = 2
+        UNION ALL
+        SELECT
+            ga.goods_id AS goodsId,
+            0 AS moduleExamId,
+            0 AS chapterExamId,
+            e.exam_id AS examId,
+            e.exam_name AS examName,
+            ep.paper_name AS paperName
+        FROM
+            top_goods_attached ga
+                LEFT JOIN top_exam e ON ga.major_id = e.exam_id
+                LEFT JOIN top_exam_paper ep ON e.exam_paper_id = ep.paper_id
+        WHERE
+            ga.goods_id = #{goodsId} AND ga.type = 3
+    </select>
+
+</mapper>