he2802 2 năm trước cách đây
mục cha
commit
364801934b

+ 8 - 9
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserSubscribeController.java

@@ -10,9 +10,7 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.modules.exam.bo.ExamApplyGoodsQueryBo;
 import com.zhongzheng.modules.exam.service.IExamApplyGoodsService;
-import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo;
 import com.zhongzheng.modules.exam.vo.ExamSessionVo;
 import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.service.IUserExamGoodsService;
@@ -206,12 +204,12 @@ public class UserSubscribeController extends BaseController {
     @GetMapping("/exportNew")
     public AjaxResult<Map<String,Object>> exportNew(UserSubscribeExportBo bo) {
         Map<String,Object> map = new HashMap<>();
-        ExamApplyGoodsQueryBo examApplyGoodsQueryBo = new ExamApplyGoodsQueryBo();
-        examApplyGoodsQueryBo.setApplyId(bo.getApplyId());
-        List<ExamApplyGoodsVo> goodsList = iExamApplyGoodsService.listGoods(examApplyGoodsQueryBo);
-        ExcelUtil<ExamApplyGoodsVo> goodsUtil = new ExcelUtil<ExamApplyGoodsVo>(ExamApplyGoodsVo.class);
+//        ExamApplyGoodsQueryBo examApplyGoodsQueryBo = new ExamApplyGoodsQueryBo();
+//        examApplyGoodsQueryBo.setApplyId(bo.getApplyId());
+//        List<ExamApplyGoodsVo> goodsList = iExamApplyGoodsService.listGoods(examApplyGoodsQueryBo);
+//        ExcelUtil<ExamApplyGoodsVo> goodsUtil = new ExcelUtil<ExamApplyGoodsVo>(ExamApplyGoodsVo.class);
         String timeStr= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-        map.put("goodsExcel",goodsUtil.exportEasyExcel(goodsUtil.exportEasyData(goodsList), bo.getApplyName()+"商品列表"+timeStr));
+//        map.put("goodsExcel",goodsUtil.exportEasyExcel(goodsUtil.exportEasyData(goodsList), bo.getApplyName()+"商品列表"+timeStr));
 
         if(Validator.isEmpty(bo.getApplySiteAddressTrain())){
             UserSubscribeExport export = new UserSubscribeExport();
@@ -222,8 +220,9 @@ public class UserSubscribeController extends BaseController {
             export.setApplySiteAddress(bo.getApplySiteAddress());
             export.setApplySiteExamTime("2021/10/21");
             export.setApplySiteTime("9:00-12:00");
-            export.setCode("SP6415428604");
-            export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
+            export.setMajorName("土建质量员");
+//            export.setCode("SP6415428604");
+//            export.setGoodsName("一级建造师继续教育(必修课+机电工程)");
 
             List<UserSubscribeExport> list = new ArrayList<>();
             list.add(export);

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserSubscribeQueryBo.java

@@ -37,6 +37,9 @@ public class UserSubscribeQueryBo extends BaseEntity {
 	@ApiModelProperty("绑定的商品")
 	private Long goodsId;
 
+	@ApiModelProperty("商品班型:1基础班 2强化班 3私塾班")
+	private Integer gradeType;
+
 	/** 报考数据ID */
 	@ApiModelProperty("报考数据ID")
 	private Long subscribeId;
@@ -172,4 +175,12 @@ public class UserSubscribeQueryBo extends BaseEntity {
 	@ApiModelProperty("月份结束时间")
 	private Long monthEndTime;
 
+	@ApiModelProperty("业务员名称")
+	private String createUsername;
+
+	@ApiModelProperty("题库开通次数")
+	private Integer questionOpenNum;
+	@ApiModelProperty("题库商家名称")
+	private String questionMerchantName;
+
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/User.java

@@ -222,4 +222,10 @@ private static final long serialVersionUID=1L;
     private String shareActivityCode;
     /** 密码最后修改时间 */
     private Long pwdTime;
+
+    /** 题库开通次数 */
+    private Integer questionOpenNum;
+    /** 题库商家名称 */
+    private String questionMerchantName;
+
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/UserSubscribeMapper.java

@@ -57,4 +57,8 @@ public interface UserSubscribeMapper extends BaseMapper<UserSubscribe> {
     List<UserVo> listUserExport(UserSubscribeQueryBo bo);
 
     List<UserSubscribeVo> listSignExport(UserSubscribeQueryBo bo);
+
+    Long selectMajorId(@Param("majorName")String majorName);
+
+    List<Long> getGoodsIds(@Param("userId")Long userId, @Param("applyId")Long applyId,@Param("majorId") Long majorId);
 }

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

@@ -856,25 +856,6 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                 userSubscribeImports.add(userSubscribeImport);
                 continue;
             }
-            //查询商品
-            if (StringUtils.isEmpty(userSubscribeImport.getCode())) {
-                userSubscribeImport.setCause("未填商品编码");
-                userSubscribeImports.add(userSubscribeImport);
-                continue;
-            }
-            Long goodsId = baseMapper.selectGoodsId(userSubscribeImport.getCode());
-            if (goodsId == null) {
-                userSubscribeImport.setCause("商品编码错误");
-                userSubscribeImports.add(userSubscribeImport);
-                continue;
-            }
-
-            String goodsName = baseMapper.selectGoodsName(userSubscribeImport.getCode());
-            if (!goodsName.equals(userSubscribeImport.getGoodsName())) {
-                userSubscribeImport.setCause("商品名称跟编码不匹配");
-                userSubscribeImports.add(userSubscribeImport);
-                continue;
-            }
 
             if (userSubscribeImport.getApplySiteExamTime() != null||userSubscribeImport.getApplySiteExamTime().length()!=10) {
                 try{
@@ -890,7 +871,6 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                 continue;
             }
 
-            userSubscribeAddBo.setGoodsId(goodsId);
             //查询学员Id
             if (StringUtils.isEmpty(userSubscribeImport.getUserName()) || userSubscribeImport.getIdCard() == null) {
                 userSubscribeImport.setCause("学员信息未填");
@@ -916,14 +896,57 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                 continue;
             }
             //产品确定不跟安排状态有关
-            Long applyId = baseMapper.selectApplyId(userSubscribeImport.getApplyName().replaceAll("\\s*", ""));
+            Long applyId = baseMapper.selectApplyId(userSubscribeImport.getApplyName());
             if (applyId == null) {
                 userSubscribeImport.setCause("考试标题有误");
                 userSubscribeImports.add(userSubscribeImport);
                 continue;
             }
             userSubscribeAddBo.setApplyId(applyId);
+            //专业
+            if (ObjectUtils.isNull(userSubscribeImport.getMajorName())){
+                userSubscribeImport.setCause("约考专业未填");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            Long majorId = baseMapper.selectMajorId(userSubscribeImport.getMajorName());
+            if (ObjectUtils.isNull(majorId)){
+                userSubscribeImport.setCause("约考专业有误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            //查询商品
+            List<Long> goodsIds = baseMapper.getGoodsIds(userId,applyId,majorId);
+            if (CollectionUtils.isEmpty(goodsIds)){
+                userSubscribeImport.setCause("课程商品有误");
+                userSubscribeImports.add(userSubscribeImport);
+                continue;
+            }
+            Long goodsId = null;
+            for (Long item : goodsIds) {
+                //获得当前所在班级
+                ClassGradeVo classGradeVo = courseMapper.gradeIdSelect(userId,item,null);
+                if(Validator.isEmpty(classGradeVo)||classGradeVo.getPeriodStatus()!=1){
+                    continue;
+                }
+                userSubscribeAddBo.setOrderGoodsId(classGradeVo.getOrderGoodsId());
+                //查询剩余考试次数
+                ExamApplyQueryBo examApplyQueryBo = new ExamApplyQueryBo();
+                examApplyQueryBo.setUserId(userId);
+                examApplyQueryBo.setOrderGoodsId(classGradeVo.getOrderGoodsId());
+                Integer residueSubscribeNext = examApplyMapper.residueSubscribeNext(examApplyQueryBo);
+                if (residueSubscribeNext == null || residueSubscribeNext < 1){
+                    continue;
+                }
 
+                Long subscribeId = baseMapper.selectAddSubscribeId(applyId, item, userId);
+                if (subscribeId != null) {
+                    continue;
+                }
+                goodsId = item;
+            }
+
+            userSubscribeAddBo.setGoodsId(goodsId);
             //获得当前所在班级
             ClassGradeVo classGradeVo = courseMapper.gradeIdSelect(userId,goodsId,null);
             if(Validator.isEmpty(classGradeVo)||classGradeVo.getPeriodStatus()!=1){

+ 11 - 10
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeExport.java

@@ -5,9 +5,6 @@ import cn.afterturn.easypoi.excel.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 
 /**
  * 用户预约考试视图对象 mall_package
@@ -45,13 +42,17 @@ public class UserSubscribeExport {
 	@Excel(name = "*考试时间段",width = 30)
 	private String applySiteTime;
 
-	/** 考试开始时间段 */
-	@Excel(name = "*商品编码",width = 30)
-	private String code;
-
-	/** 考试开始时间段 */
-	@Excel(name = "*商品名称",width = 30)
-	private String goodsName;
+	/** 专业 */
+	@Excel(name = "*专业",width = 30)
+	private String majorName;
+
+//	/** 考试开始时间段 */
+//	@Excel(name = "*商品编码",width = 30)
+//	private String code;
+//
+//	/** 考试开始时间段 */
+//	@Excel(name = "*商品名称",width = 30)
+//	private String goodsName;
 
 	@Excel(name = "失败原因")
 	private String cause;

+ 4 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserSubscribeImport.java

@@ -3,12 +3,8 @@ package com.zhongzheng.modules.user.vo;
 
 import com.zhongzheng.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.math.BigDecimal;
-import java.util.Date;
-
 
 /**
  * 用户预约考试视图对象 mall_package
@@ -43,6 +39,10 @@ public class UserSubscribeImport {
 	@Excel(name = "*考试时间段")
 	private String applySiteTime;
 
+	/** 专业 */
+	@Excel(name = "*专业",width = 30)
+	private String majorName;
+
 	/** 考试开始时间段 */
 	@Excel(name = "*商品编码")
 	private String code;

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

@@ -149,6 +149,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN  exam_before eb ON us.before_id = eb.before_id
         LEFT JOIN  `user` u ON us.user_id = u.user_id
         LEFT JOIN goods g ON  us.goods_id = g.goods_id
+        <if test="createUsername != null and createUsername != '' ">
+            LEFT JOIN order_goods og ON us.order_goods_id = og.order_goods_id
+            LEFT JOIN `order` o ON og.order_sn = o.order_sn
+        </if>
         LEFT JOIN course_business cb on g.business_id = cb.id
         LEFT JOIN user_exam_goods ueg ON ueg.order_goods_id = us.order_goods_id
         LEFT JOIN exam_site es ON us.site_id = es.site_id
@@ -195,6 +199,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="goodsId != null and goodsId != '' ">
             and us.goods_id = #{goodsId}
         </if>
+        <if test="gradeType != null and gradeType != '' ">
+            and g.grade_type = #{gradeType}
+        </if>
+        <if test="createUsername != null and createUsername != '' ">
+            and o.create_username like concat('%', #{create_username}, '%')
+        </if>
+        <if test="questionOpenNum != null and questionOpenNum != '' ">
+            and u.question_open_num = #{questionOpenNum}
+        </if>
+        <if test="questionMerchantName != null and questionMerchantName != '' ">
+            and o.question_merchant_name = #{questionMerchantName}
+        </if>
         <if test="orderGoodsId != null and orderGoodsId != '' ">
             and us.order_goods_id = #{orderGoodsId}
         </if>
@@ -517,4 +533,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
     </select>
 
+    <select id="selectMajorId" parameterType="java.lang.String" resultType="java.lang.Long">
+        SELECT
+            DISTINCT(m.id)
+        FROM
+            major m
+                LEFT JOIN major_project mp ON m.id = mp.major_id
+                LEFT JOIN course_project_type cpt ON mp.project_id = cpt.id
+                LEFT JOIN course_education_type cet ON cpt.education_id = cet.id
+        WHERE
+            m.category_name = #{majorName}
+          AND INSTR( '施工现场专业人员', cpt.project_name ) > 0
+          AND INSTR( '考前培训', cet.education_name ) > 0
+    </select>
+
+    <select id="getGoodsIds" parameterType="map" resultType="java.lang.Long">
+        SELECT
+            DISTINCT(g.goods_id)
+        FROM
+            `exam_apply` ea
+                LEFT JOIN exam_apply_goods eag ON ea.apply_id = eag.apply_id
+                LEFT JOIN goods g ON eag.goods_id = g.goods_id
+                LEFT JOIN order_goods og ON g.goods_id = og.goods_id
+                LEFT JOIN `order` o ON og.order_sn = o.order_sn
+        WHERE
+            ea.apply_id = #{applyId}
+            AND o.user_id = #{userId}
+            AND g.major_id = #{majorId}
+            AND g.`status` = 1
+            AND og.`status` = 1
+            AND og.refund_status != 2
+	        AND og.pay_status IN (2,3,4)
+    </select>
 </mapper>