Jelajahi Sumber

fix 订单复购

he2802 3 tahun lalu
induk
melakukan
3718e0995c

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsQueryBo.java

@@ -68,6 +68,8 @@ public class OrderGoodsQueryBo extends BaseEntity {
 	/** 支付状态 1未收费 2部分收费 3完全收费 */
 	@ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费")
 	private Integer payStatus;
+	@ApiModelProperty("支付状态 1未收费 2部分收费 3完全收费")
+	private List<Integer> payStatusList;
 	/** 业务归属人 */
 	@ApiModelProperty("业务归属人")
 	private String businessOwner;

+ 33 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -232,7 +232,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
             orderGoods.setCreateTime(DateUtils.getNowTime());
             orderGoods.setUpdateTime(DateUtils.getNowTime());
-            boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
+
             //订单价格不计算优惠
             totalPrice = totalPrice.add(g.getGoodsPrice());
             //暂不计算优惠券
@@ -240,13 +240,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
             boolean canRepeatBuy = false;
             //视频商品安排班级
-            if(goods.getGoodsType()==1&&orderGoodsRs){
+            if(goods.getGoodsType()==1){
                 Long gradeId = null;
+                //判断是否购买历史班级都过期
+                canRepeatBuy =this.canBuyRepeatGoods(g.getGoodsId(),bo.getUserId());
                 if(g.getGoodsInputData()!=null){
                     gradeId = g.getGoodsInputData().getGradeId();
+                    if(getHaveBuyGoods(g.getGoodsId(),bo.getUserId())){
+                        //有指定选班模板且视频商品班级已过期,记录复购状态
+                        orderGoods.setRebuy(1);
+                    }
                 }
-                //判断是否购买历史班级都过期
-                canRepeatBuy =this.canBuyRepeatGoods(g.getGoodsId(),bo.getUserId());
                 String requestId = IdUtil.simpleUUID();
                 RedisLockEntity redisLockEntity = new RedisLockEntity();
                 redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
@@ -257,6 +261,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 }
 
             }
+            boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             if(!canRepeatBuy&&goods.getGoodsType()!=3&&goods.getGoodsType()!=4){
                 this.checkBuyGoods(g.getGoodsId(),bo.getUserId());
             }
@@ -319,7 +324,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             orderGoods.setGoodsPrice(goods.getStandPrice());
             orderGoods.setCreateTime(DateUtils.getNowTime());
             orderGoods.setUpdateTime(DateUtils.getNowTime());
-            boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             //订单价格不计算优惠
             totalPrice = totalPrice.add(goods.getStandPrice());
             //暂不计算优惠券
@@ -328,13 +332,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
             boolean canRepeatBuy = false;
             //视频商品安排班级
-            if(goods.getGoodsType()==1&&orderGoodsRs){
+            if(goods.getGoodsType()==1){
                 Long gradeId = null;
+                //判断是否购买历史班级都过期
+                canRepeatBuy =this.canBuyRepeatGoods(g.getGoodsId(),bo.getUserId());
                 if(g.getGoodsInputData()!=null){
                     gradeId = g.getGoodsInputData().getGradeId();
+                    if(getHaveBuyGoods(g.getGoodsId(),bo.getUserId())){
+                        //有指定选班模板且视频商品班级已过期,记录复购状态
+                        orderGoods.setRebuy(1);
+                    }
                 }
-                //判断是否购买历史班级都过期
-                canRepeatBuy =this.canBuyRepeatGoods(g.getGoodsId(),bo.getUserId());
                 String requestId = IdUtil.simpleUUID();
                 RedisLockEntity redisLockEntity = new RedisLockEntity();
                 redisLockEntity.setLockKey(RedisLockEntity.KEY_LOCK_GRADE);
@@ -344,6 +352,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                     redisCache.unlockLua(redisLockEntity);
                 }
             }
+            boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
             if(!canRepeatBuy&&goods.getGoodsType()!=3&&goods.getGoodsType()!=4){
                 this.checkBuyGoods(g.getGoodsId(),bo.getUserId());
             }
@@ -471,6 +480,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return orderListVos;
     }
 
+    //判断视频商品是否购买过
+    public boolean getHaveBuyGoods(Long goodsId,Long userId){
+        OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();
+        orderGoodsQueryBo.setUserId(userId);
+        orderGoodsQueryBo.setGoodsId(goodsId);
+        List<Integer> payStatusList = new ArrayList<>();
+        payStatusList.add(2);
+        payStatusList.add(3);
+        orderGoodsQueryBo.setPayStatusList(payStatusList);
+        List<OrderGoodsVo> list1 = iOrderGoodsService.queryList(orderGoodsQueryBo);
+        if(list1!=null&&list1.size()>0){
+            return true;
+        }
+        return false;
+    }
+
     //检查是否允许重复购买商品
     public boolean canBuyRepeatGoods(Long goodsId,Long userId){
         //判断是否还有未过期的班级

+ 13 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -77,11 +77,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 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 `order` o ON o.order_sn = og.order_sn
         WHERE
             1 = 1
+            <if test="goodsId != null and goodsId != ''">
+                AND og.goods_id = #{goodsId}
+            </if>
+            <if test="userId != null">
+                AND o.user_id = #{userId}
+            </if>
             <if test="orderSn != null and orderSn != ''">
                 AND og.order_sn =  #{orderSn}
             </if>
+            <if test="payStatusList != null and payStatusList.size()!=0 ">
+                AND og.pay_status in
+                <foreach collection="payStatusList" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
             <if test="orderGoodsIds != null and orderGoodsIds.size()!=0 ">
                 AND og.order_goods_id in
                 <foreach collection="orderGoodsIds" item="item" index="index" open="(" close=")" separator=",">