songjiyuan 9 лет назад
Родитель
Сommit
d8343f9177
2 измененных файлов с 44 добавлено и 30 удалено
  1. 1 0
      .gitignore
  2. 43 30
      data/logic/payment.logic.php

+ 1 - 0
.gitignore

@@ -4,3 +4,4 @@
 /data/session/*
 /data/upload/*
 /data/config/config.ini.php
+/.idea/deployment.xml

+ 43 - 30
data/logic/payment.logic.php

@@ -9,7 +9,7 @@ defined('InShopNC') or exit('Access Invalid!');
 class paymentLogic
 {
     /**
-     * 尝试使用红包
+     * 尝试使用预存款
      * @param int $pay_sn
      * @param int $member_id
      * @return array
@@ -25,7 +25,7 @@ class paymentLogic
         }
         $order_pay_info = $model_order->getOrderPayInfo($condition);
         if (empty($order_pay_info)) {
-            return callback(false, '该支付单不存在');
+            return false;
         }
 
         $condition = array();
@@ -35,41 +35,54 @@ class paymentLogic
         // 获取余额数据
         $obj_member = Model('member');
         $pd_amount = $obj_member->getPdAmount($member_info['member_id']);
-        if (empty($order_list)) return;
+        if (empty($order_list)) return false;
 
         $model_order = Model('order');
         $model_pd = Model('predeposit');
         $member_id = intval($member_info['member_id']);
 
-        foreach ($order_list as $order_info)
-        {
-            // 使用全部预存款(红包逻辑)
-            $data_order = array();
-            $change_type = '';
-            if (floatval($pd_amount) > floatval($order_info['order_amount'])) {
-                // 余额大于订单金额的情况
-                $order_info['pd_amount'] = floatval($order_info['order_amount']);
-                $pd_amount = floatval($pd_amount) - floatval($order_info['pd_amount']);
-                $data_order["order_state"] = ORDER_STATE_PAY;
-                //$data_order["order_amount"] = 0;
-                $change_type = 'order_pay';
-            } else if (floatval($pd_amount) > 0) {    // 余额小于等于订单金额的情况, $pd_amount不能等于0
-                $order_info['pd_amount'] = floatval($pd_amount);
-                $data_order["order_amount"] = floatval($order_info['order_amount']) - floatval($order_info['pd_amount']);
-                $pd_amount = 0;
-                $change_type = 'order_freeze';
+        try {
+            DB::beginTransaction();
+            foreach ($order_list as $order_info) {
+                // 使用全部预存款(红包逻辑)
+                $data_order = array();
+                $change_type = '';
+                if (floatval($pd_amount) > floatval($order_info['order_amount'])) {
+                    // 余额大于订单金额的情况
+                    $order_info['pd_amount'] = floatval($order_info['order_amount']);
+                    $pd_amount = floatval($pd_amount) - floatval($order_info['pd_amount']);
+                    //$data_order["order_state"] = ORDER_STATE_PAY;
+                    //$data_order["order_amount"] = 0;
+                    $change_type = 'order_pay';
+                } else if (floatval($pd_amount) > 0) {    // 余额小于等于订单金额的情况, $pd_amount不能等于0
+                    $order_info['pd_amount'] = floatval($pd_amount);
+                    $data_order["order_amount"] = floatval($order_info['order_amount']) - floatval($order_info['pd_amount']);
+                    $pd_amount = 0;
+                    $change_type = 'order_freeze';
+                }
+                $data_pd = array();
+                $data_pd['member_id'] = $member_id;
+                $data_pd['member_name'] = $member_info['member_name'];
+                $data_pd['amount'] = $order_info['pd_amount'];
+                $data_pd['order_sn'] = $order_info['order_sn'];
+                //预存款立即支付,订单支付完成
+                $ret = $model_pd->changePd($change_type, $data_pd);
+                if (0 == $ret) throw new Exception("订单更新失败");
+
+                // 修改订单
+                $data_order["pd_amount"] = $order_info['pd_amount'];
+                $ret = $model_order->editOrder($data_order, array('order_id' => $order_info['order_id']));
+                if (0 == $ret) throw new Exception("订单更新失败");
+                DB::commit();
+
+                if (ORDER_STATE_PAY == $data_order["order_state"]) {
+                    // 推送到oms
+                }
             }
-            $data_pd = array();
-            $data_pd['member_id'] = $member_id;
-            $data_pd['member_name'] = $member_info['member_name'];
-            $data_pd['amount'] = $order_info['pd_amount'];
-            $data_pd['order_sn'] = $order_info['order_sn'];
-            //预存款立即支付,订单支付完成
-            $model_pd->changePd($change_type,$data_pd);
-            // 修改订单
-            $data_order["pd_amount"] = $order_info['pd_amount'];
-            $model_order->editOrder($data_order,array('order_id'=>$order_info['order_id']));
+        }catch (Exception $e) {
+            DB::rollback();
         }
+
     }
 
     /**