Browse Source

订单支付状态

he2802 4 years ago
parent
commit
67f4003fac

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java

@@ -26,6 +26,10 @@ private static final long serialVersionUID=1L;
     public static final Integer RECHARGE_ORDER =1;  //充值订单
     public static final Integer CONSUME_ORDER = 2;  //消费订单
 
+    public static final Integer PAY_NO =0;  //0未收费
+    public static final Integer PAY_PART =1;  //1部分收费
+    public static final Integer PAY_FULL =2;  //2完全收费
+
     /** $column.columnComment */
     @TableId(value = "order_id")
     private Long orderId;

+ 38 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderBillSheetServiceImpl.java

@@ -17,6 +17,7 @@ import com.zhongzheng.modules.order.service.IOrderBillSheetService;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderBillSheetVo;
+import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -47,6 +48,8 @@ public class OrderBillSheetServiceImpl extends ServiceImpl<OrderBillSheetMapper,
     @Autowired
     private IOrderService iOrderService;
 
+    private Map<String, List<OrderGoodsVo>> orderGoodsList = new HashMap<>();
+
     @Override
     public OrderBillSheetVo queryById(Long sheetId){
         OrderBillSheet db = this.baseMapper.selectById(sheetId);
@@ -175,10 +178,12 @@ public class OrderBillSheetServiceImpl extends ServiceImpl<OrderBillSheetMapper,
             else if(goods.getGoodsRealPrice().compareTo(goods.getGoodsReceived()) == 0){
                 //完全收费
                 goods.setPayStatus(OrderGoods.PAY_FULL);
+                this.updateOrderGoodsPAY_FULL(order,goods.getGoodsId());  //订单判断是否更新为全部支付
             }
             else{
                 //部分收费
                 goods.setPayStatus(OrderGoods.PAY_PART);
+                order.setOrderStatus(Order.PAY_PART);  //订单支付状态改为部分支付
             }
             order.setStatus(1);//订单生效
             order.setUpdateTime(DateUtils.getNowTime());
@@ -193,4 +198,37 @@ public class OrderBillSheetServiceImpl extends ServiceImpl<OrderBillSheetMapper,
         result.put("sheetSn",sheet_no);
         return result;
     }
+
+    /**
+     * 临时修改订单商品支付状态为完全支付
+     * @param order
+     * @param goodsId
+     * @return
+     */
+    public Order updateOrderGoodsPAY_FULL( Order order,Long goodsId) {
+        String orderSn = order.getOrderSn();
+        List<OrderGoodsVo> orderGoodsVoList = null;
+        if(orderGoodsList.containsKey(orderSn)){
+            orderGoodsVoList =  orderGoodsList.get(orderSn);
+        }else{
+            OrderGoodsQueryBo bo = new OrderGoodsQueryBo();
+            bo.setOrderSn(orderSn);
+            orderGoodsVoList = iOrderGoodsService.selectList(bo);
+            orderGoodsList.put(orderSn,orderGoodsVoList);
+        }
+        boolean isAllPayFull = true;//是否全部都是完全支付状态
+        for (OrderGoodsVo g : orderGoodsVoList) {
+            if(g.getGoodsId() == goodsId){
+                //临时设置为完全收费
+                g.setPayStatus(OrderGoods.PAY_FULL);
+            }
+            if(g.getPayStatus()!=OrderGoods.PAY_FULL){
+                isAllPayFull = false;
+            }
+        }
+       if(isAllPayFull){
+           order.setOrderStatus(Order.PAY_FULL);
+       }
+        return order;
+    }
 }

+ 25 - 33
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -316,39 +316,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             find_in_set(
                     exam_id,(
                 SELECT
-                    concat((
-                               SELECT
-                                   GROUP_CONCAT( DISTINCT exam_id )
-                               FROM
-                                   question_chapter_exam
-                               WHERE
-                                       chapter_exam_id IN (
+                    concat(
+                            IFNULL((
                                        SELECT
-                                           concat((
-                                                      SELECT
-                                                          GROUP_CONCAT( DISTINCT major_id ) eids
-                                                      FROM
-                                                          goods_attached
-                                                      WHERE
-                                                          goods_id = #{goodsId}
-                                                        AND type = 2
-                                                  ),
-                                                  ',',
-                                                  (
-                                                      SELECT
-                                                          GROUP_CONCAT( DISTINCT chapter_exam_id ) eids2
-                                                      FROM
-                                                          question_module_chapter
-                                                      WHERE
-                                                              module_exam_id IN ( SELECT major_id FROM goods_attached WHERE goods_id = #{goodsId} AND type = 1 ))))),
-                           ',',(
-                               SELECT
-                                   GROUP_CONCAT( DISTINCT major_id )
-                               FROM
-                                   goods_attached
-                               WHERE
-                                   goods_id = #{goodsId}
-                                 AND type = 3
-                           ))))
+                                           GROUP_CONCAT( DISTINCT exam_id )
+                                       FROM
+                                           question_chapter_exam
+                                       WHERE
+                                               chapter_exam_id IN (
+                                               SELECT
+                                                   concat(
+                                                           IFNULL(( SELECT GROUP_CONCAT( DISTINCT major_id ) eids FROM goods_attached WHERE goods_id = #{goodsId} AND type = 2 ), '' ),
+                                                           ',',
+                                                           IFNULL(
+                                                                   (
+                                                                       SELECT
+                                                                           GROUP_CONCAT( DISTINCT chapter_exam_id ) eids2
+                                                                       FROM
+                                                                           question_module_chapter
+                                                                       WHERE
+                                                                               module_exam_id IN ( SELECT major_id FROM goods_attached WHERE goods_id = #{goodsId} AND type = 1 )),
+                                                                   ''
+                                                               )))),
+                                   ''
+                                ),
+                            ',',
+                            IFNULL(( SELECT GROUP_CONCAT( DISTINCT major_id ) FROM goods_attached WHERE goods_id = #{goodsId} AND type = 3 ), '' ))))
     </select>
 </mapper>