浏览代码

fix题库商品订单ID

he2802 3 年之前
父节点
当前提交
280bd47418

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsRefundServiceImpl.java

@@ -334,6 +334,10 @@ public class OrderGoodsRefundServiceImpl extends ServiceImpl<OrderGoodsRefundMap
             //删除题库历史
             iUserExamRecordService.delUserBankHistory(userId,goodsId);
         }
+        if(goodsType==3||goodsType==4){
+            //减去考试和前培次数
+
+        }
         return true;
     }
 

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.zhongzheng.common.core.redis.RedisLockEntity;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.bank.domain.QuestionChapterExam;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
 import com.zhongzheng.modules.course.service.ICourseBusinessService;
@@ -35,6 +36,8 @@ import com.zhongzheng.modules.order.domain.OrderPay;
 import com.zhongzheng.modules.order.mapper.OrderMapper;
 import com.zhongzheng.modules.order.service.*;
 import com.zhongzheng.modules.order.vo.*;
+import com.zhongzheng.modules.user.domain.UserExamGoods;
+import com.zhongzheng.modules.user.service.IUserExamGoodsService;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.service.IWxPayService;
@@ -105,6 +108,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IOrderPayService iOrderPayService;
 
+    @Autowired
+    private IUserExamGoodsService userExamGoodsService;
+
     @Autowired
     private RedisCache redisCache;
 
@@ -304,6 +310,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if (!canRepeatBuy && goods.getGoodsType() != 3 && goods.getGoodsType() != 4) {
                 this.checkBuyGoods(g.getGoodsId(), bo.getUserId(), goods.getGoodsType());
             }
+            validUserBeforeBuy(goods,bo.getUserId());
             //商品0元加入免费商品列表
             if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0) {
                 freeList.add(orderGoods);
@@ -431,6 +438,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if (!canRepeatBuy && goods.getGoodsType() != 3 && goods.getGoodsType() != 4) {
                 this.checkBuyGoods(g.getGoodsId(), bo.getUserId(), goods.getGoodsType());
             }
+            validUserBeforeBuy(goods,bo.getUserId());
             //商品0元或已收费加入收费商品列表
             if (g.getGoodsRealPrice().compareTo(BigDecimal.ZERO) == 0) {
                 //免费的
@@ -602,6 +610,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if (!canRepeatBuy && goods.getGoodsType() != 3 && goods.getGoodsType() != 4) {
                 this.checkBuyGoods(g.getGoodsId(), bo.getUserId(), goods.getGoodsType());
             }
+            validUserBeforeBuy(goods,bo.getUserId());
             iShoppingCartService.deleteByGoodsId(g.getGoodsId(), bo.getUserId());
             //商品0元加入免费商品列表
             if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0) {
@@ -744,6 +753,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if (!canRepeatBuy && goods.getGoodsType() != 3 && goods.getGoodsType() != 4) {
                 this.checkBuyGoods(g.getGoodsId(), bo.getUserId(), goods.getGoodsType());
             }
+            validUserBeforeBuy(goods,bo.getUserId());
             iShoppingCartService.deleteByGoodsId(g.getGoodsId(), bo.getUserId());
             //商品0元加入免费商品列表
             if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0) {
@@ -794,6 +804,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return payResult;
     }
 
+    private Boolean validUserBeforeBuy(Goods goods ,Long userId){
+        if(goods.getGoodsType()==3||goods.getGoodsType()==4){
+            Long makeGoodsId = goods.getMakeGoodsId();
+            UserExamGoods entity = userExamGoodsService.getOne(new LambdaQueryWrapper<UserExamGoods>().eq(UserExamGoods::getUserId,userId).eq(UserExamGoods::getGoodsId,goods.getGoodsId()).last("limit 1"));
+            if(Validator.isEmpty(entity)){
+                throw new CustomException("请先购买此补考前培商品的绑定商品");
+            }
+
+        }
+        return true;
+    }
+
     @Override
     public Map<String, String> resumeSmallOrder(OrderAddBo bo) {
         if (bo.getOrderSn() == null) {

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordAddBo.java

@@ -81,4 +81,7 @@ public class UserExamRecordAddBo {
     /** 试卷总题数(含主观) */
     @ApiModelProperty("试卷总题数(含主观)")
     private Long allQuestionNum;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordEditBo.java

@@ -99,4 +99,7 @@ public class UserExamRecordEditBo {
     /** 试卷总题数(含主观) */
     @ApiModelProperty("试卷总题数(含主观)")
     private Long allQuestionNum;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamRecordQueryBo.java

@@ -61,6 +61,8 @@ public class UserExamRecordQueryBo extends BaseEntity {
 	private Long moduleExamId;
 	@ApiModelProperty("章卷ID")
 	private Long chapterExamId;
-
+	/** 订单商品ID */
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamWrongRecordAddBo.java

@@ -45,4 +45,5 @@ public class UserExamWrongRecordAddBo {
     /** 章卷ID */
     @ApiModelProperty("章卷ID")
     private Long chapterExamId;
+
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserExamWrongRecordQueryBo.java

@@ -58,4 +58,5 @@ public class UserExamWrongRecordQueryBo extends BaseEntity {
 
 	@ApiModelProperty("试卷类型ID")
 	private Integer paperId;
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserExamRecord.java

@@ -70,4 +70,6 @@ private static final long serialVersionUID=1L;
     private BigDecimal score;
     /** 试卷总题数(含主观) */
     private Long allQuestionNum;
+    /** 订单商品ID */
+    private Long orderGoodsId;
 }

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

@@ -64,4 +64,6 @@ public interface IUserExamGoodsService extends IService<UserExamGoods> {
 
 	Boolean canRefund(UserExamGoodsQueryBo bo);
 
+	Boolean delNum(UserExamGoodsQueryBo bo);
+
 }

+ 30 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserExamGoodsServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.exam.bo.ExamNumberQueryBo;
 import com.zhongzheng.modules.exam.domain.ExamNumber;
@@ -187,4 +188,33 @@ public class UserExamGoodsServiceImpl extends ServiceImpl<UserExamGoodsMapper, U
         }
         return false;
     }
+
+    @Override
+    public Boolean delNum(UserExamGoodsQueryBo bo) {
+        UserExamGoodsSupplement entity = iUserExamGoodsSupplementService.getOne(new LambdaQueryWrapper<UserExamGoodsSupplement>().eq(UserExamGoodsSupplement::getOrderGoodsId, bo.getOrderGoodsId()));
+        if(Validator.isNotEmpty(entity)){
+            UserExamGoodsVo examGoodsVo = queryById(entity.getUserExamGoodsId());
+            if(Validator.isNotEmpty(examGoodsVo)){
+                if(entity.getStatus()==1){
+                    //补考
+                    if((examGoodsVo.getExamNumber().longValue()-examGoodsVo.getExpendNumber().longValue())>entity.getExamNumber()){
+                        //剩余次数大于购买时绑定次数
+                        return true;
+                    }else{
+                        throw new CustomException("剩余次数不满足退款");
+                    }
+                }
+                else if(entity.getStatus()==2){
+                    //前培
+                    if((examGoodsVo.getDoNumber().longValue()-examGoodsVo.getExpendBefore().longValue())>entity.getDoNumber()){
+                        //剩余次数大于购买时绑定次数
+                        return true;
+                    }else{
+                        throw new CustomException("剩余次数不满足退款");
+                    }
+                }
+            }
+        }
+       return true;
+    }
 }

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

@@ -117,4 +117,8 @@ public class UserExamRecordVo {
 	@Excel(name = "试卷总题数(含主观)")
 	@ApiModelProperty("试卷总题数(含主观)")
 	private Long allQuestionNum;
+	/** 订单商品ID */
+	@Excel(name = "订单商品ID")
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
 }

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

@@ -27,6 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="rightQuestionIds" column="right_question_ids"/>
         <result property="score" column="score"/>
         <result property="allQuestionNum" column="all_question_num"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserExamRecordVo" id="UserExamRecordVoResult">
@@ -55,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="examTime" column="exam_time"/>
         <result property="totalScore" column="total_score"/>
         <result property="score" column="score"/>
+        <result property="orderGoodsId" column="order_goods_id"/>
     </resultMap>
 
     <resultMap type="com.zhongzheng.modules.user.vo.UserExamWrongRecordVo" id="UserExamRecordQuestionVoResult">