he2802 3 rokov pred
rodič
commit
c91168f646
39 zmenil súbory, kde vykonal 1255 pridanie a 24 odobranie
  1. 65 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseTopicController.java
  2. 11 3
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java
  3. 26 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java
  4. 52 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseTopicController.java
  5. 11 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java
  6. 13 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java
  7. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityRecommendMapper.java
  8. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityRecommendService.java
  9. 41 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java
  10. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/vo/ActivityRecommendGoodsVo.java
  11. 57 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicAddBo.java
  12. 65 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicEditBo.java
  13. 55 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicGoodsAddBo.java
  14. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicGoodsQueryBo.java
  15. 66 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicQueryBo.java
  16. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseTopic.java
  17. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseTopicGoods.java
  18. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseTopicGoodsMapper.java
  19. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseTopicMapper.java
  20. 16 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseTopicGoodsService.java
  21. 64 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseTopicService.java
  22. 19 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java
  23. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseTopicGoodsServiceImpl.java
  24. 206 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseTopicServiceImpl.java
  25. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseBusinessVo.java
  26. 60 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseTopicGoodsVo.java
  27. 80 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseTopicVo.java
  28. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamRecommendGoodsQueryBo.java
  29. 12 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java
  30. 70 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  31. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsQueryBo.java
  32. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockTimeAddBo.java
  33. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/service/impl/MockApplyServiceImpl.java
  34. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  35. 8 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java
  36. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/IWxLoginService.java
  37. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityRecommendMapper.xml
  38. 6 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  39. 2 0
      zhongzheng-system/src/main/resources/mapper/modules/user/UserMockRecordMapper.xml

+ 65 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseTopicController.java

@@ -0,0 +1,65 @@
+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.*;
+import com.zhongzheng.modules.course.service.ICourseBusinessService;
+import com.zhongzheng.modules.course.service.ICourseTopicService;
+import com.zhongzheng.modules.course.vo.CourseBusinessVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
+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-10-08
+ */
+@Api(value = "业务层次控制器", tags = {"业务层次管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/topic")
+public class CourseTopicController extends BaseController {
+
+    private final ICourseTopicService iCourseTopicService;
+
+    /**
+     * 新增商品专题页
+     */
+    @ApiOperation("新增商品专题页")
+    @PostMapping("/add")
+    public AjaxResult<Void> add(@RequestBody CourseTopicAddBo bo) {
+        return toAjax(iCourseTopicService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 新增专题页组合班级商品
+     */
+    @ApiOperation("新增专题页组合班级商品")
+    @PostMapping("/addGoods")
+    public AjaxResult<Void> addGoods(@RequestBody List<CourseTopicGoodsAddBo> bo) {
+        return toAjax(iCourseTopicService.addGoods(bo) ? 1 : 0);
+    }
+
+    /**
+     * 商品专题页列表
+     */
+    @ApiOperation("商品专题页列表")
+    @GetMapping("/list")
+    public TableDataInfo<CourseTopicVo> list(CourseTopicQueryBo bo) {
+        startPage();
+        List<CourseTopicVo> list = iCourseTopicService.queryList(bo);
+        return getDataTable(list);
+    }
+
+}

+ 11 - 3
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/ActivityRecommendController.java

@@ -2,17 +2,17 @@ package com.zhongzheng.controller.cmmon;
 
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo;
 import com.zhongzheng.modules.activity.service.IActivityRecommendService;
+import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
 import 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.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -42,6 +42,14 @@ public class ActivityRecommendController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询商品推荐列表
+     */
+    @ApiOperation("查询商品推荐列表")
+    @GetMapping("/goodsList")
+    public TableDataInfo<ActivityRecommendGoodsVo> getGoodsList(ActivityRecommendGoodsQueryBo bo) {
+        return iActivityRecommendService.getGoodsList(bo);
+    }
 
 
 

+ 26 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/cmmon/CommonController.java

@@ -11,7 +11,11 @@ import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.framework.web.service.WxLoginService;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
+import com.zhongzheng.modules.course.bo.CourseTopicGoodsQueryBo;
 import com.zhongzheng.modules.course.service.ICourseService;
+import com.zhongzheng.modules.course.service.ICourseTopicService;
+import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
 import com.zhongzheng.modules.course.vo.CourseUserVo;
 import com.zhongzheng.modules.exam.bo.ExamActivityApplyBo;
 import com.zhongzheng.modules.exam.bo.ExamActivityApplyVo;
@@ -55,6 +59,25 @@ public class CommonController extends BaseController {
 
     private final IExamActivityService iExamActivityService;
 
+    private final ICourseTopicService iCourseTopicService;
+
+    /**
+     * 获取商品专题页指定商品信息
+     */
+    @ApiOperation("获取商品专题页指定商品信息")
+    @GetMapping("/get/goodsInfo/{topicId}")
+    public AjaxResult<CourseTopicVo> getGoodsInfo(@PathVariable("topicId") Integer topicId) {
+        return AjaxResult.success(iCourseTopicService.getGoodsInfo(topicId));
+    }
+
+    /**
+     * 获取专题页组合班级商品
+     */
+    @ApiOperation("获取专题页组合班级商品")
+    @GetMapping("/get/goodsList")
+    public AjaxResult<List<CourseTopicGoodsVo>> getGoodsList(CourseTopicGoodsQueryBo bo) {
+        return AjaxResult.success(iCourseTopicService.getGoodsList(bo));
+    }
 
     private final ISysConfigService configService;
 
@@ -113,9 +136,10 @@ public class CommonController extends BaseController {
      */
     @ApiOperation("获取考试活动商品")
     @GetMapping("/activity/goodsList/{activityId}")
-    public AjaxResult<List<GoodsVo>> getActivityGoodsList(@PathVariable("activityId") Long activityId) {
+    public TableDataInfo<GoodsVo> getActivityGoodsList(@PathVariable("activityId") Long activityId) {
+        startPage();
         List<GoodsVo> voList = iExamActivityService.getActivityGoodsList(activityId);
-        return AjaxResult.success(voList);
+        return getDataTable(voList);
     }
 
     @ApiOperation("小程序配置")

+ 52 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/course/CourseTopicController.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.controller.course;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.course.bo.CourseTopicAddBo;
+import com.zhongzheng.modules.course.bo.CourseTopicGoodsAddBo;
+import com.zhongzheng.modules.course.bo.CourseTopicGoodsQueryBo;
+import com.zhongzheng.modules.course.bo.CourseTopicQueryBo;
+import com.zhongzheng.modules.course.service.ICourseTopicService;
+import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 业务层次Controller
+ *
+ * @author ruoyi
+ * @date 2021-10-08
+ */
+@Api(value = "商品专题页", tags = {"商品专题页接口管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/course/topicPage")
+public class CourseTopicController extends BaseController {
+
+    private final ICourseTopicService iCourseTopicService;
+
+    /**
+     * 获取商品专题页指定商品信息
+     */
+    @ApiOperation("获取商品专题页指定商品信息")
+    @GetMapping("/get/goodsInfo/{topicId}")
+    public AjaxResult<CourseTopicVo> getGoodsInfo(@PathVariable("topicId") Integer topicId) {
+        return AjaxResult.success(iCourseTopicService.getGoodsInfo(topicId));
+    }
+
+    /**
+     * 获取专题页组合班级商品
+     */
+    @ApiOperation("获取专题页组合班级商品")
+    @GetMapping("/get/goodsList")
+    public AjaxResult<List<CourseTopicGoodsVo>> getGoodsList(CourseTopicGoodsQueryBo bo) {
+        return AjaxResult.success(iCourseTopicService.getGoodsList(bo));
+    }
+}

+ 11 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/exam/ExamApplyController.java

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
 import com.zhongzheng.modules.exam.service.IExamApplyService;
 import com.zhongzheng.modules.exam.service.IExamApplySiteService;
 import com.zhongzheng.modules.exam.vo.*;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
@@ -165,4 +166,14 @@ public class ExamApplyController extends BaseController {
         return toAjax(iUserSubscribeService.updateByEditSingleBo(bo) ? 1 : 0);
     }
 
+
+    /**
+     * 获取试卷对应的推荐商品列表
+     */
+    @ApiOperation("获取试卷对应的推荐商品列表")
+    @PostMapping("/recommend/goodsList")
+    public TableDataInfo<GoodsVo> getRecommendGoodsList(@RequestBody ExamRecommendGoodsQueryBo bo) {
+        return iExamApplyService.getRecommendGoodsList(bo);
+    }
+
 }

+ 13 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -883,6 +883,19 @@ public class WxLoginService implements IWxLoginService {
         return result;
     }
 
+    @Override
+    public String getTopicEnCode(Long topicId) {
+        String wxGzhAccessToken = getWxSmallAccessToken();
+        String param = String.format(small_wxEnCodeParam, wxGzhAccessToken);
+        String url = small_wxEnCodeUrl + "?" + param;
+        JSONObject obj = new JSONObject();
+        obj.put("page", "pages4/courseTopic/goodsTopic");
+        obj.put("scene",String.format("topicId=%s",topicId));
+        obj.put("env_version",enCodeVersion);
+        String result = HttpUtils.sendPost(url, obj);
+        return result;
+    }
+
     public Boolean subGzh(String openId) {
         String unionId = getWxGzhUserCgiInfo(openId);
         if (Validator.isNotEmpty(unionId)) {

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

@@ -16,7 +16,7 @@ import java.util.List;
  * @date 2022-04-13
  */
 public interface ActivityRecommendMapper extends BaseMapper<ActivityRecommend> {
-    List<ActivityRecommendVo> selectList(ActivityRecommendQueryBo bo);
+    List<ActivityRecommendVo> selectListByBo(ActivityRecommendQueryBo bo);
 
     ActivityRecommendVo getDetail(ActivityRecommendQueryBo bo);
 }

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

@@ -1,10 +1,13 @@
 package com.zhongzheng.modules.activity.service;
 
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendAddBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendEditBo;
+import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsQueryBo;
 import com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo;
 import com.zhongzheng.modules.activity.domain.ActivityRecommend;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
 
 import java.util.Collection;
@@ -53,4 +56,6 @@ public interface IActivityRecommendService extends IService<ActivityRecommend> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	TableDataInfo<ActivityRecommendGoodsVo> getGoodsList(ActivityRecommendGoodsQueryBo bo);
 }

+ 41 - 9
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityRecommendServiceImpl.java

@@ -3,30 +3,29 @@ package com.zhongzheng.modules.activity.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.modules.activity.bo.ActivityRecommendAddBo;
-import com.zhongzheng.modules.activity.bo.ActivityRecommendEditBo;
-import com.zhongzheng.modules.activity.bo.ActivityRecommendGoodsAddBo;
-import com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo;
+import com.zhongzheng.modules.activity.bo.*;
 import com.zhongzheng.modules.activity.domain.ActivityRecommend;
 import com.zhongzheng.modules.activity.domain.ActivityRecommendGoods;
 import com.zhongzheng.modules.activity.mapper.ActivityRecommendMapper;
 import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
 import com.zhongzheng.modules.activity.service.IActivityRecommendService;
+import com.zhongzheng.modules.activity.vo.ActivityRecommendGoodsVo;
 import com.zhongzheng.modules.activity.vo.ActivityRecommendVo;
+import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -40,6 +39,8 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
 
     @Autowired
     private IActivityRecommendGoodsService iActivityRecommendGoodsService;
+    @Autowired
+    private IGoodsService iGoodsService;
 
 
     @Override
@@ -85,6 +86,7 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
     @Transactional(rollbackFor = Exception.class)
     public Boolean insertByAddBo(ActivityRecommendAddBo bo) {
         ActivityRecommend add = BeanUtil.toBean(bo, ActivityRecommend.class);
+        add.setSubjectIds("");
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
@@ -107,7 +109,7 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
 
     @Override
     public List<ActivityRecommendVo> selectList(ActivityRecommendQueryBo bo) {
-        return baseMapper.selectList(bo);
+        return baseMapper.selectListByBo(bo);
     }
 
     @Override
@@ -124,6 +126,7 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
     @Override
     public Boolean updateByEditBo(ActivityRecommendEditBo bo) {
         ActivityRecommend update = BeanUtil.toBean(bo, ActivityRecommend.class);
+        update.setSubjectIds("");
         validEntityBeforeSave(update);
         update.setUpdateTime(DateUtils.getNowTime());
         if (CollectionUtils.isNotEmpty(bo.getSubjectIds())&&bo.getSubjectIds().size()>0){
@@ -161,4 +164,33 @@ public class ActivityRecommendServiceImpl extends ServiceImpl<ActivityRecommendM
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public TableDataInfo<ActivityRecommendGoodsVo> getGoodsList(ActivityRecommendGoodsQueryBo bo) {
+        TableDataInfo<ActivityRecommendGoodsVo> result = new TableDataInfo<>();
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityRecommendGoods> page = iActivityRecommendGoodsService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(bo.getPageNum(), bo.getPageSize()),
+                new LambdaQueryWrapper<ActivityRecommendGoods>()
+                        .eq(ActivityRecommendGoods::getRecommendId, bo.getRecommendId())
+                        .orderByAsc(ActivityRecommendGoods::getSort));
+        if (CollectionUtils.isEmpty(page.getRecords())){
+            return result;
+        }
+        List<ActivityRecommendGoods> list = page.getRecords();
+        List<ActivityRecommendGoodsVo> listVos = list.stream().map(item -> {
+            ActivityRecommendGoodsVo vo = new ActivityRecommendGoodsVo();
+            BeanUtil.copyProperties(item, vo);
+            Goods goods = iGoodsService.getById(item.getGoodsId());
+            vo.setGoodsName(goods.getGoodsName());
+            vo.setGoodsType(goods.getGoodsType());
+            vo.setCoverUrl(goods.getCoverUrl());
+            vo.setYear(goods.getYear());
+            vo.setStandPrice(goods.getStandPrice());
+            vo.setLinePrice(goods.getLinePrice());
+            return vo;
+        }).collect(Collectors.toList());
+        result.setTotal(page.getTotal());
+        result.setRows(listVos);
+        result.setCode(200);
+        return result;
+    }
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/vo/ActivityRecommendGoodsVo.java

@@ -40,10 +40,14 @@ public class ActivityRecommendGoodsVo {
 	private Integer sort;
 	@ApiModelProperty("商品名")
 	private String goodsName;
+	@ApiModelProperty("商品类型")
+	private Integer goodsType;
 	/** 标准价格 */
 	@Excel(name = "标准价格")
 	@ApiModelProperty("标准价格")
 	private BigDecimal standPrice;
+	@ApiModelProperty("划线价格")
+	private BigDecimal LinePrice;
 	@ApiModelProperty("商品编码")
 	private String code;
 	/** 年份 */

+ 57 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicAddBo.java

@@ -0,0 +1,57 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】添加对象 course_topic
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@ApiModel("【请填写功能名称】添加对象")
+public class CourseTopicAddBo {
+
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationId;
+    /** 教育类型名称 */
+    @ApiModelProperty("教育类型名称")
+    private String educationName;
+    /** 项目id */
+    @ApiModelProperty("项目id")
+    private Long projectId;
+    /** 项目名称 */
+    @ApiModelProperty("项目名称")
+    private String projectName;
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+    /** 业务名称 */
+    @ApiModelProperty("业务名称")
+    private String businessName;
+    /** 专题页指定商品ID */
+    @ApiModelProperty("专题页指定商品ID")
+    private Long goodsId;
+    /** 专题页指定商品ID */
+    @ApiModelProperty("商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播")
+    private Integer goodsType;
+    /** 类型:1,二建 */
+    @ApiModelProperty("类型:1,二建")
+    private Integer type;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+}

+ 65 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicEditBo.java

@@ -0,0 +1,65 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 【请填写功能名称】编辑对象 course_topic
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@ApiModel("【请填写功能名称】编辑对象")
+public class CourseTopicEditBo {
+
+    /** 专题页ID */
+    @ApiModelProperty("专题页ID")
+    private Long topicId;
+
+    /** 教育类型id */
+    @ApiModelProperty("教育类型id")
+    private Long educationId;
+
+    /** 教育类型名称 */
+    @ApiModelProperty("教育类型名称")
+    private String educationName;
+
+    /** 项目id */
+    @ApiModelProperty("项目id")
+    private Long projectId;
+
+    /** 项目名称 */
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    /** 业务层次id */
+    @ApiModelProperty("业务层次id")
+    private Long businessId;
+
+    /** 业务名称 */
+    @ApiModelProperty("业务名称")
+    private String businessName;
+
+    /** 专题页指定商品ID */
+    @ApiModelProperty("专题页指定商品ID")
+    private Long goodsId;
+
+    /** 类型:1,二建 */
+    @ApiModelProperty("类型:1,二建")
+    private Integer type;
+
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+
+
+}

+ 55 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicGoodsAddBo.java

@@ -0,0 +1,55 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+import java.math.BigDecimal;
+
+/**
+ * 【请填写功能名称】添加对象 course_topic_goods
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@ApiModel("【请填写功能名称】添加对象")
+public class CourseTopicGoodsAddBo {
+
+    /** 专题页ID */
+    @ApiModelProperty("专题页ID")
+    private Long topicId;
+    /** 班级类型:1,黄金班 2,砖石班 3,至尊班 */
+    @ApiModelProperty("班级类型:1,黄金班 2,砖石班 3,至尊班")
+    private Integer type;
+    /** 科目类型:1,全科 2,公共单科 3,实务单科*/
+    @ApiModelProperty("科目类型:1,全科 2,公共单科 3,实务单科")
+    private Integer subjectType;
+    /** 商品ID */
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+    /** 商品名称 */
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+    /** 标准价格 */
+    @ApiModelProperty("标准价格")
+    private BigDecimal standPrice;
+    /** 最低价格 */
+    @ApiModelProperty("最低价格")
+    private BigDecimal lowestPrice;
+    /** 商品划线价 */
+    @ApiModelProperty("商品划线价")
+    private BigDecimal linePrice;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicGoodsQueryBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.math.BigDecimal;
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 【请填写功能名称】分页查询对象 course_topic_goods
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("【请填写功能名称】分页查询对象")
+public class CourseTopicGoodsQueryBo extends BaseEntity {
+
+	/** 专题页ID */
+	@ApiModelProperty("专题页ID")
+	private Long topicId;
+	/** 班级类型:1,黄金班 2,砖石班 3,至尊班 */
+	@ApiModelProperty("班级类型:1,黄金班 2,砖石班 3,至尊班")
+	private Integer type;
+	/** 科目类型:1,全科 2,公共单科 3,实务单科*/
+	@ApiModelProperty("科目类型:1,全科 2,公共单科 3,实务单科")
+	private Integer subjectType;
+
+}

+ 66 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseTopicQueryBo.java

@@ -0,0 +1,66 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 【请填写功能名称】分页查询对象 course_topic
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("【请填写功能名称】分页查询对象")
+public class CourseTopicQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 教育类型id */
+	@ApiModelProperty("教育类型id")
+	private Long educationId;
+	/** 教育类型名称 */
+	@ApiModelProperty("教育类型名称")
+	private String educationName;
+	/** 项目id */
+	@ApiModelProperty("项目id")
+	private Long projectId;
+	/** 项目名称 */
+	@ApiModelProperty("项目名称")
+	private String projectName;
+	/** 业务层次id */
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+	/** 业务名称 */
+	@ApiModelProperty("业务名称")
+	private String businessName;
+	/** 专题页指定商品ID */
+	@ApiModelProperty("专题页指定商品ID")
+	private Long goodsId;
+	/** 类型:1,二建 */
+	@ApiModelProperty("类型:1,二建")
+	private Integer type;
+	/** 1有效 0无效 */
+	@ApiModelProperty("1有效 0无效")
+	private Integer status;
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseTopic.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.course.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 【请填写功能名称】对象 course_topic
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("course_topic")
+public class CourseTopic implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** 专题页ID */
+    @TableId(value = "topic_id")
+    private Long topicId;
+    /** 教育类型id */
+    private Long educationId;
+    /** 教育类型名称 */
+    private String educationName;
+    /** 项目id */
+    private Long projectId;
+    /** 项目名称 */
+    private String projectName;
+    /** 业务层次id */
+    private Long businessId;
+    /** 业务名称 */
+    private String businessName;
+    /** 业务名称 */
+    private String aliasName;
+    /** 专题页指定商品ID */
+    private Long goodsId;
+    /** 商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播 */
+    private Integer goodsType;
+    /** 类型:1,二建 */
+    private Integer type;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseTopicGoods.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.course.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;
+
+/**
+ * 【请填写功能名称】对象 course_topic_goods
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("course_topic_goods")
+public class CourseTopicGoods implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 专题页ID */
+    private Long topicId;
+    /** 班级类型:1,黄金班 2,砖石班 3,至尊班 */
+    private Integer type;
+    /** 科目类型:1,全科 2,公共单科 3,实务单科*/
+    private Integer subjectType;
+    /** 商品ID */
+    private Long goodsId;
+    /** 商品名称 */
+    private String goodsName;
+    /** 标准价格 */
+    private BigDecimal standPrice;
+    /** 最低价格 */
+    private BigDecimal lowestPrice;
+    /** 商品划线价 */
+    private BigDecimal linePrice;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 更新时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseTopicGoodsMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.course.domain.CourseTopicGoods;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+public interface CourseTopicGoodsMapper extends BaseMapper<CourseTopicGoods> {
+
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseTopicMapper.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.course.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.course.domain.CourseTopic;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+public interface CourseTopicMapper extends BaseMapper<CourseTopic> {
+
+}

+ 16 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseTopicGoodsService.java

@@ -0,0 +1,16 @@
+package com.zhongzheng.modules.course.service;
+
+import com.zhongzheng.modules.course.domain.CourseTopicGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+public interface ICourseTopicGoodsService extends IService<CourseTopicGoods> {
+}

+ 64 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseTopicService.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.modules.course.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.course.bo.*;
+import com.zhongzheng.modules.course.domain.CourseTopic;
+import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+public interface ICourseTopicService extends IService<CourseTopic> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	CourseTopicVo queryById(Long topicId);
+
+	/**
+	 * 查询列表
+	 */
+	List<CourseTopicVo> queryList(CourseTopicQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入【请填写功能名称】
+	 * @param bo 【请填写功能名称】新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(CourseTopicAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改【请填写功能名称】
+	 * @param bo 【请填写功能名称】编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(CourseTopicEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	/**
+	 * 新增商品专题页商品
+	 * @author change
+	 * @date 2022/9/14 9:17
+	 * @param bo
+	 * @return boolean
+	 */
+	boolean addGoods(List<CourseTopicGoodsAddBo> bo);
+
+	CourseTopicVo getGoodsInfo(Integer topicId);
+
+	List<CourseTopicGoodsVo> getGoodsList(CourseTopicGoodsQueryBo bo);
+}

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

@@ -4,13 +4,16 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.domain.CourseProjectType;
+import com.zhongzheng.modules.course.domain.CourseTopic;
 import com.zhongzheng.modules.course.service.ICourseChapterBusinessService;
 import com.zhongzheng.modules.course.service.ICourseProjectTypeService;
+import com.zhongzheng.modules.course.service.ICourseTopicService;
 import com.zhongzheng.modules.course.vo.*;
 import org.apache.el.util.Validation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +47,8 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
 
     @Autowired
     private ICourseProjectTypeService iCourseProjectTypeService;
+    @Autowired
+    private ICourseTopicService iCourseTopicService;
 
     @Override
     public CourseBusinessVo queryById(Long id){
@@ -58,7 +63,20 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
 
     @Override
     public List<CourseBusinessVo> queryList(CourseBusinessQueryBo bo) {
-        return entity2Vo(baseMapper.queryList(bo));
+        List<CourseBusinessVo> vo = baseMapper.queryList(bo).stream().collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(vo)){
+            return new ArrayList<>();
+        }
+        vo.forEach(item -> {
+            CourseTopic courseTopic = iCourseTopicService.getOne(new LambdaQueryWrapper<CourseTopic>()
+                    .eq(CourseTopic::getEducationId, bo.getEducationId())
+                    .eq(CourseTopic::getProjectId, item.getProjectId())
+                    .eq(CourseTopic::getBusinessId, item.getId()));
+            if (ObjectUtils.isNotNull(courseTopic)){
+                item.setTopicId(courseTopic.getTopicId());
+            }
+        });
+        return entity2Vo(vo);
     }
 
     /**

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseTopicGoodsServiceImpl.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.course.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.course.domain.CourseTopicGoods;
+import com.zhongzheng.modules.course.mapper.CourseTopicGoodsMapper;
+import com.zhongzheng.modules.course.service.ICourseTopicGoodsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Service
+public class CourseTopicGoodsServiceImpl extends ServiceImpl<CourseTopicGoodsMapper, CourseTopicGoods> implements ICourseTopicGoodsService {
+}

+ 206 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseTopicServiceImpl.java

@@ -0,0 +1,206 @@
+package com.zhongzheng.modules.course.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.Page;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.course.bo.*;
+import com.zhongzheng.modules.course.domain.*;
+import com.zhongzheng.modules.course.mapper.CourseTopicMapper;
+import com.zhongzheng.modules.course.service.*;
+import com.zhongzheng.modules.course.vo.CourseTopicGoodsVo;
+import com.zhongzheng.modules.course.vo.CourseTopicVo;
+import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.wx.service.IWxLoginService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Service
+public class CourseTopicServiceImpl extends ServiceImpl<CourseTopicMapper, CourseTopic> implements ICourseTopicService {
+
+    @Autowired
+    private ICourseEducationTypeService iCourseEducationTypeService;
+
+    @Autowired
+    private ICourseProjectTypeService iCourseProjectTypeService;
+
+    @Autowired
+    private ICourseBusinessService iCourseBusinessService;
+
+    @Autowired
+    private ICourseTopicGoodsService iCourseTopicGoodsService;
+
+    @Autowired
+    private IGoodsService iGoodsService;
+
+    @Autowired
+    private IWxLoginService wxLoginService;
+
+    @Override
+    public CourseTopicVo queryById(Long topicId){
+        CourseTopic db = this.baseMapper.selectById(topicId);
+        return BeanUtil.toBean(db, CourseTopicVo.class);
+    }
+
+    @Override
+    public List<CourseTopicVo> queryList(CourseTopicQueryBo bo) {
+        LambdaQueryWrapper<CourseTopic> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getEducationId() != null, CourseTopic::getEducationId, bo.getEducationId());
+        lqw.like(StrUtil.isNotBlank(bo.getEducationName()), CourseTopic::getEducationName, bo.getEducationName());
+        lqw.eq(bo.getProjectId() != null, CourseTopic::getProjectId, bo.getProjectId());
+        lqw.like(StrUtil.isNotBlank(bo.getProjectName()), CourseTopic::getProjectName, bo.getProjectName());
+        lqw.eq(bo.getBusinessId() != null, CourseTopic::getBusinessId, bo.getBusinessId());
+        lqw.like(StrUtil.isNotBlank(bo.getBusinessName()), CourseTopic::getBusinessName, bo.getBusinessName());
+        lqw.eq(bo.getGoodsId() != null, CourseTopic::getGoodsId, bo.getGoodsId());
+        lqw.eq(bo.getType() != null, CourseTopic::getType, bo.getType());
+        lqw.eq( CourseTopic::getStatus, 1);
+        List<CourseTopicVo> courseTopicVos = entity2Vo(this.list(lqw));
+        courseTopicVos.forEach(item -> {
+            //todo 小程序二维码和PC链接
+            String enCode = wxLoginService.getTopicEnCode(item.getTopicId());
+            item.setEnCode(enCode);
+        });
+        return courseTopicVos;
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<CourseTopicVo> entity2Vo(Collection<CourseTopic> collection) {
+        List<CourseTopicVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, CourseTopicVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<CourseTopic> page = (Page<CourseTopic>)collection;
+            Page<CourseTopicVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(CourseTopicAddBo bo) {
+        CourseTopic add = BeanUtil.toBean(bo, CourseTopic.class);
+        validEntityBeforeSave(add);
+        //获取信息
+        CourseEducationType educationType = iCourseEducationTypeService.getById(bo.getEducationId());
+        if (ObjectUtils.isNotNull(educationType)){
+            add.setEducationName(educationType.getEducationName());
+        }
+        CourseProjectType projectType = iCourseProjectTypeService.getById(bo.getProjectId());
+        if (ObjectUtils.isNotNull(projectType)){
+            add.setProjectName(projectType.getProjectName());
+        }
+        CourseBusiness business = iCourseBusinessService.getById(bo.getBusinessId());
+        if (ObjectUtils.isNotNull(business)){
+            add.setBusinessName(business.getBusinessName());
+        }
+        Goods goods = iGoodsService.getById(bo.getGoodsId());
+        if (ObjectUtils.isNotNull(goods)){
+            add.setGoodsType(goods.getGoodsType());
+        }
+        add.setStatus(1);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(CourseTopicEditBo bo) {
+        CourseTopic update = BeanUtil.toBean(bo, CourseTopic.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(CourseTopic entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+
+    @Override
+    public boolean addGoods(List<CourseTopicGoodsAddBo> bo) {
+        List<CourseTopicGoods> goodsList = bo.stream().map(item -> {
+            CourseTopicGoods tbTopic = new CourseTopicGoods();
+            BeanUtil.copyProperties(item, tbTopic);
+            Goods goods = iGoodsService.getById(item.getGoodsId());
+            tbTopic.setStandPrice(goods.getStandPrice());
+            tbTopic.setLowestPrice(goods.getLowestPrice());
+            tbTopic.setLinePrice(goods.getLinePrice());
+            tbTopic.setStatus(1);
+            tbTopic.setUpdateTime(DateUtils.getNowTime());
+            tbTopic.setCreateTime(DateUtils.getNowTime());
+            return tbTopic;
+        }).collect(Collectors.toList());
+
+        return iCourseTopicGoodsService.saveBatch(goodsList);
+    }
+
+    @Override
+    public CourseTopicVo getGoodsInfo(Integer topicId) {
+        CourseTopic courseTopic = getById(topicId);
+        if (ObjectUtils.isNull(courseTopic)){
+            throw new CustomException("专题页信息获取失败");
+        }
+        CourseTopicVo courseTopicVo = new CourseTopicVo();
+        BeanUtil.copyProperties(courseTopic,courseTopicVo);
+        if (ObjectUtils.isNotNull(courseTopicVo.getGoodsId())){
+            Goods goods = iGoodsService.getById(courseTopicVo.getGoodsId());
+            courseTopicVo.setGoodsName(goods.getGoodsName());
+            courseTopicVo.setGoodsCoverUrl(goods.getCoverUrl());
+        }
+        return courseTopicVo;
+    }
+
+    @Override
+    public List<CourseTopicGoodsVo> getGoodsList(CourseTopicGoodsQueryBo bo) {
+        List<CourseTopicGoods> list = iCourseTopicGoodsService.list(new LambdaQueryWrapper<CourseTopicGoods>()
+                .eq(CourseTopicGoods::getTopicId, bo.getTopicId())
+                .eq(CourseTopicGoods::getType, bo.getType())
+                .eq(CourseTopicGoods::getSubjectType, bo.getSubjectType())
+                .eq(CourseTopicGoods::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        return list.stream().map(item ->{
+            CourseTopicGoodsVo vo = new CourseTopicGoodsVo();
+            BeanUtil.copyProperties(item, vo);
+            return vo;
+        }).collect(Collectors.toList());
+    }
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseBusinessVo.java

@@ -128,4 +128,6 @@ public class CourseBusinessVo {
 	private Integer periodType;
 	@ApiModelProperty("学时审核层级:1初审,2初审和复审")
 	private Integer periodNumber;
+	@ApiModelProperty("专题页ID")
+	private Long topicId;
 }

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseTopicGoodsVo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.course.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.math.BigDecimal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2022-09-13
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class CourseTopicGoodsVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 专题页ID */
+	@Excel(name = "专题页ID")
+	@ApiModelProperty("专题页ID")
+	private Long topicId;
+	/** 班级类型:1,黄金班 2,砖石班 3,至尊班 */
+	@Excel(name = "班级类型:1,黄金班 2,砖石班 3,至尊班")
+	@ApiModelProperty("班级类型:1,黄金班 2,砖石班 3,至尊班")
+	private Integer type;
+	/** 商品ID */
+	@Excel(name = "商品ID")
+	@ApiModelProperty("商品ID")
+	private Long goodsId;
+	/** 商品名称 */
+	@Excel(name = "商品名称")
+	@ApiModelProperty("商品名称")
+	private String goodsName;
+	/** 标准价格 */
+	@Excel(name = "标准价格")
+	@ApiModelProperty("标准价格")
+	private BigDecimal standPrice;
+	/** 最低价格 */
+	@Excel(name = "最低价格")
+	@ApiModelProperty("最低价格")
+	private BigDecimal lowestPrice;
+	/** 商品划线价 */
+	@Excel(name = "商品划线价")
+	@ApiModelProperty("商品划线价")
+	private BigDecimal linePrice;
+	/** 1有效 0无效 */
+	@Excel(name = "1有效 0无效")
+	@ApiModelProperty("1有效 0无效")
+	private Integer status;
+}

+ 80 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/CourseTopicVo.java

@@ -0,0 +1,80 @@
+package com.zhongzheng.modules.course.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 2022-09-13
+ */
+@Data
+@ApiModel("【请填写功能名称】视图对象")
+public class CourseTopicVo {
+	private static final long serialVersionUID = 1L;
+
+	/** 专题页ID */
+	@ApiModelProperty("专题页ID")
+	private Long topicId;
+
+	/** 教育类型id */
+	@Excel(name = "教育类型id")
+	@ApiModelProperty("教育类型id")
+	private Long educationId;
+	/** 教育类型名称 */
+	@Excel(name = "教育类型名称")
+	@ApiModelProperty("教育类型名称")
+	private String educationName;
+	/** 项目id */
+	@Excel(name = "项目id")
+	@ApiModelProperty("项目id")
+	private Long projectId;
+	/** 项目名称 */
+	@Excel(name = "项目名称")
+	@ApiModelProperty("项目名称")
+	private String projectName;
+	/** 业务层次id */
+	@Excel(name = "业务层次id")
+	@ApiModelProperty("业务层次id")
+	private Long businessId;
+	/** 业务名称 */
+	@Excel(name = "业务名称")
+	@ApiModelProperty("业务名称")
+	private String businessName;
+	@ApiModelProperty("别名")
+	private String aliasName;
+	/** 专题页指定商品ID */
+	@Excel(name = "专题页指定商品ID")
+	@ApiModelProperty("专题页指定商品ID")
+	private Long goodsId;
+	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 5虚拟赠送题库 6直播")
+	private Integer goodsType;
+	/** 类型:1,二建 */
+	@Excel(name = "类型:1,二建")
+	@ApiModelProperty("类型:1,二建")
+	private Integer type;
+	/** 1有效 0无效 */
+	@Excel(name = "1有效 0无效")
+	@ApiModelProperty("1有效 0无效")
+	private Integer status;
+
+	/** 商品图片 */
+	@ApiModelProperty("商品图片")
+	private String goodsName;
+	/** 商品封面地址 */
+	@ApiModelProperty("商品封面地址")
+	private String goodsCoverUrl;
+	/** 小程序二维码 */
+	@ApiModelProperty("小程序二维码")
+	private String enCode;
+	/** PC链接 */
+	@ApiModelProperty("PC链接")
+	private String enCodePC;
+}

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/ExamRecommendGoodsQueryBo.java

@@ -0,0 +1,30 @@
+package com.zhongzheng.modules.exam.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 试卷推荐位商品查询 exam_activity
+ *
+ * @author yangdamao
+ * @date 2021-12-07
+ */
+@Data
+@ApiModel("试卷推荐位商品查询")
+public class ExamRecommendGoodsQueryBo implements Serializable {
+
+    @ApiModelProperty("试卷ID")
+    private Long examId;
+
+    @ApiModelProperty("分页参数")
+    private Integer pageSize;
+
+    @ApiModelProperty("分页参数")
+    private Integer pageNum;
+
+
+
+}

+ 12 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/IExamApplyService.java

@@ -1,12 +1,11 @@
 package com.zhongzheng.modules.exam.service;
 
-import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.domain.ExamApply;
 import com.zhongzheng.modules.exam.vo.*;
-import com.zhongzheng.modules.exam.bo.ExamApplyQueryBo;
-import com.zhongzheng.modules.exam.bo.ExamApplyAddBo;
-import com.zhongzheng.modules.exam.bo.ExamApplyEditBo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -66,4 +65,13 @@ public interface IExamApplyService extends IService<ExamApply> {
 	List<ExamUserApplySiteVo> subscribeApplySiteTrain(ExamApplyQueryBo bo);
 
 	Integer countApplySubscribe(ExamApplyQueryBo bo);
+
+	/**
+	 * 获取试卷对应的推荐商品列表
+	 * @author change
+	 * @date 2022/9/16 9:13
+	 * @param bo
+	 * @return java.util.List<com.zhongzheng.modules.goods.vo.GoodsVo>
+	 */
+	TableDataInfo<GoodsVo> getRecommendGoodsList(ExamRecommendGoodsQueryBo bo);
 }

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

@@ -6,15 +6,29 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.activity.domain.ActivityRecommend;
+import com.zhongzheng.modules.activity.domain.ActivityRecommendGoods;
+import com.zhongzheng.modules.activity.service.IActivityRecommendGoodsService;
+import com.zhongzheng.modules.activity.service.IActivityRecommendService;
+import com.zhongzheng.modules.bank.domain.Exam;
+import com.zhongzheng.modules.bank.domain.QuestionBusiness;
+import com.zhongzheng.modules.bank.service.IExamService;
+import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
 import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.exam.bo.*;
 import com.zhongzheng.modules.exam.domain.ExamBefore;
 import com.zhongzheng.modules.exam.vo.*;
+import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.user.vo.CalendarStudyVo;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -36,6 +50,17 @@ import java.util.stream.Collectors;
 @Service
 public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply> implements IExamApplyService {
 
+    @Autowired
+    private IQuestionBusinessService iQuestionBusinessService;
+    @Autowired
+    private IExamService iExamService;
+    @Autowired
+    private IActivityRecommendService iActivityRecommendService;
+    @Autowired
+    private IActivityRecommendGoodsService iActivityRecommendGoodsService;
+    @Autowired
+    private IGoodsService iGoodsService;
+
     @Override
     public ExamApplyVo queryById(Long applyId){
         ExamApplyVo examApplyVo = baseMapper.selectByApply(applyId);
@@ -295,6 +320,51 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         return baseMapper.countApplySubscribe(bo);
     }
 
+    @Override
+    public TableDataInfo<GoodsVo> getRecommendGoodsList(ExamRecommendGoodsQueryBo bo) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
+        Exam exam = iExamService.getById(bo.getExamId());
+        if (ObjectUtils.isNull(exam)){
+            throw new CustomException("获取试卷信息失败");
+        }
+        //获取试卷业务层次信息
+        QuestionBusiness business = iQuestionBusinessService.getOne(new LambdaQueryWrapper<QuestionBusiness>()
+                .eq(QuestionBusiness::getMajorId, bo.getExamId())
+                .eq(QuestionBusiness::getType, 2));
+        if (ObjectUtils.isNull(business)){
+            throw new CustomException("获取试卷业务层次信息失败");
+        }
+        //获取推荐位信息
+        List<ActivityRecommend> list = iActivityRecommendService.list(new LambdaQueryWrapper<ActivityRecommend>()
+                .eq(ActivityRecommend::getEducationTypeId, business.getEducationTypeId())
+                .eq(ActivityRecommend::getBusinessId, business.getBusinessId())
+                .eq(ActivityRecommend::getType, 1)
+                .eq(ActivityRecommend::getStatus,1));
+        if (CollectionUtils.isEmpty(list)){
+            return tableDataInfo;
+        }
+        ActivityRecommend activityRecommend = list.stream().findFirst().get();
+        com.baomidou.mybatisplus.extension.plugins.pagination.Page<ActivityRecommendGoods> page =
+                iActivityRecommendGoodsService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(bo.getPageNum(), bo.getPageSize()),
+                                                        new LambdaQueryWrapper<ActivityRecommendGoods>()
+                                                        .eq(ActivityRecommendGoods::getRecommendId, activityRecommend.getRecommendId())
+                                                                .orderByAsc(ActivityRecommendGoods::getSort));
+        if (CollectionUtils.isEmpty(page.getRecords())){
+            return tableDataInfo;
+        }
+        List<GoodsVo> result = page.getRecords().stream().map(item -> {
+            Goods goods = iGoodsService.getById(item.getGoodsId());
+            GoodsVo goodsVo = new GoodsVo();
+            BeanUtil.copyProperties(goods, goodsVo);
+            return goodsVo;
+        }).collect(Collectors.toList());
+
+        tableDataInfo.setTotal(page.getTotal());
+        tableDataInfo.setRows(result);
+        tableDataInfo.setCode(200);
+        return tableDataInfo;
+    }
+
     private boolean checkNameUnique(ExamApply entity) {
         ExamApply info = getOne(new LambdaQueryWrapper<ExamApply>()
                 .eq(ExamApply::getApplyName,entity.getApplyName()).ne(ExamApply::getStatus,-1).last("limit 1"));

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

@@ -50,6 +50,10 @@ GoodsQueryBo extends BaseEntity {
 	/** 商品类型 1视频2题库 3补考 4前培 */
 	@ApiModelProperty("商品类型 1视频2题库 3补考 4前培 ")
 	private Integer goodsType;
+
+	/** 商品类型 1视频2题库 3补考 4前培 */
+	@ApiModelProperty("商品类型集合 1视频2题库 3补考 4前培 ")
+	private List<Integer> goodsTypes;
 	/** 教育类型id */
 	@ApiModelProperty("教育类型id")
 	private Long educationTypeId;

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/mock/bo/MockTimeAddBo.java

@@ -21,6 +21,9 @@ public class MockTimeAddBo {
     @ApiModelProperty("科目ID")
     private Long subjectId;
 
+    @ApiModelProperty("关联科目ID")
+    private Integer mockMajorSubjectId;
+
     @ApiModelProperty("用户ID")
     private Long userId;
 

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

@@ -613,7 +613,8 @@ public class MockApplyServiceImpl extends ServiceImpl<MockApplyMapper, MockApply
 
         UserMockSubscribe userMockSubscribe = iUserMockSubscribeService.getOne(new LambdaQueryWrapper<UserMockSubscribe>()
                 .eq(UserMockSubscribe::getUserId, bo.getUserId())
-                .eq(UserMockSubscribe::getApplyId, bo.getApplyId()));
+                .eq(UserMockSubscribe::getApplyId, bo.getApplyId())
+                .eq(UserMockSubscribe::getMockMajorSubjectId,bo.getMockMajorSubjectId()));
         if (ObjectUtils.isNull(userMockSubscribe)){
             throw new CustomException("我的模考信息获取失败");
         }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -672,7 +672,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             }
             add.setStatus(1);
         }
-
         this.save(add);
         //处理收费商品,生成计费单
         Map<String, Object> billRs = null;
@@ -687,6 +686,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 billGoodsAddBo.setOrderGoodsId(orderGoods.getOrderGoodsId());
                 billGoodsAddBo.setAmount(orderGoods.getGoodsReceived());
                 billGoodsList.add(billGoodsAddBo);
+                //商品是否有活动模考
+                iUserMockSubscribeService.addActivityMock(orderGoods.getGoodsId(),add.getUserId());
             }
             billSheetAddBo.setGoodsList(billGoodsList);
             billRs = iOrderBillSheetService.placeBillInputOrder(billSheetAddBo);

+ 8 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserMockSubscribeServiceImpl.java

@@ -357,7 +357,14 @@ public class UserMockSubscribeServiceImpl extends ServiceImpl<UserMockSubscribeM
                 });
                 mockMajorSubjectTimeList2.forEach(mockMajorSubjectTime -> {
                     UserMockSubscribeVo userMockSubscribeVo = iMockMajorSubjectTimeService.listByEachExamId(mockMajorSubjectTime.getId());
-                    userMockSubscribeVos.add(userMockSubscribeVo);
+                    UserMockSubscribe entity = getOne(new LambdaQueryWrapper<UserMockSubscribe>()
+                            .eq(UserMockSubscribe::getUserId, bo.getUserId())
+                            .eq(UserMockSubscribe::getApplyId, userMockSubscribeVo.getApplyId())
+                            .eq(ObjectUtils.isNotNull(userMockSubscribeVo.getMockMajorSubjectId()), UserMockSubscribe::getMockMajorSubjectId, userMockSubscribeVo.getMockMajorSubjectId()));
+                    if (ObjectUtils.isNotNull(entity)){
+                        userMockSubscribeVo.setSubscribeId(entity.getSubscribeId());
+                        userMockSubscribeVos.add(userMockSubscribeVo);
+                    }
                 });
             }
         }

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

@@ -27,4 +27,7 @@ public interface IWxLoginService
     String sendSignatureTpMsg(String openId, Map<String,String> paramMap);
 
     String getActivityApplyCode(Long activityId);
+
+    String getTopicEnCode(Long topicId);
+
 }

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityRecommendMapper.xml

@@ -64,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by rg.sort asc
     </select>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo" resultMap="ActivityRecommendVoResult">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.activity.bo.ActivityRecommendQueryBo" resultMap="ActivityRecommendVoResult">
         SELECT ar.*, cet.education_name,
                cpt.project_name,
                cb.business_name from activity_recommend ar

+ 6 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -219,6 +219,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 #{item}
             </foreach>
         </if>
+        <if test="goodsTypes != null and goodsTypes.size()!=0 ">
+            AND g.goods_type  in
+            <foreach collection="goodsTypes" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
         <if test="goodsType != null and goodsType != ''">
             AND g.goods_type = #{goodsType}
         </if>

+ 2 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserMockRecordMapper.xml

@@ -191,10 +191,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectDetail" parameterType="com.zhongzheng.modules.user.bo.UserMockRecordQueryBo" resultMap="UserMockRecordVoResult">
         SELECT
             uer.*,
+            um.subscribe_id,
             e.exam_name
         FROM
             user_mock_record uer
                 LEFT JOIN exam e ON uer.exam_id = e.exam_id
+                LEFT JOIN user_mock_subscribe um ON uer.each_exam_id = um.each_exam_id AND um.user_id = #{userId}
         WHERE
             uer.record_id = #{recordId}
           AND uer.user_id = #{userId}