Browse Source

1. oms定时推送
2. 用户订单手动取消(在test.php模块)

songjiyuan 9 years ago
parent
commit
2abf8a816f
3 changed files with 111 additions and 1 deletions
  1. 21 0
      crontab/control/hour.php
  2. 24 1
      data/logic/delivery.logic.php
  3. 66 0
      mobile/control/test.php

+ 21 - 0
crontab/control/hour.php

@@ -219,4 +219,25 @@ class hourControl extends BaseCronControl {
             $this->log($e->getMessage());
         }
     }
+
+    /**
+     * 定时推送异常订单
+     */
+    public function putExceptionOrderOp(){
+        $condition = array();
+        $condition['exception_state'] = 0;
+        // 查询异常订单
+        $order_data = Model('order_exception_push')->where($condition)->select();
+
+        // 推送异常订单
+        $update_data['exception_state'] = 1;
+        foreach ($order_data as $value) {
+            $logic_delivery = Logic('delivery');
+            $ret = $logic_delivery->putOrder($order_data['pay_sn'], $order_data['pay_sn']);
+            if ($ret) {
+                // 更新订单状态
+                $order_data = Model('order_exception_push')->where($condition)->update($update_data);
+            }
+        }
+    }
 }

+ 24 - 1
data/logic/delivery.logic.php

@@ -139,10 +139,18 @@ class deliveryLogic
      */
     private function check($pay_sn,$trade_no,$order_sn,$resp)
     {
+        $data = array();
+        $data_log = array();
+        $data['pay_sn'] = $pay_sn;
+        $data['order_sn'] = $order_sn;
+        $data_log['pay_sn'] = $pay_sn;
+        $data_log['order_sn']  = $order_sn;
+        $data_log['exception_time'] = time();
+        $data_log['exception_state'] = 0;
+
         //1:成功 0 :失败
         // 1:新订单 2:等待仓库处理 99:已拦截 90:库存不足 7:已发货
         // -99:发货失败 -2:订单关闭 -3:订单已存在(没有进行拦截的订单不予更新) -1:异常订单 -2:订单关闭
-
         $result = json_decode($resp, true);
         if (!empty($result) && is_array($result))
         {
@@ -150,6 +158,8 @@ class deliveryLogic
             {
                 if (!empty($result['data']) && is_array($result['data']) && count($result['data']) > 0)
                 {
+                    // 填充错误理由
+                    $data_log['exception_reason'] = $result['data'][0]['errorMessge'];
                     if (!empty($result['data'][0]['status']))
                     {
                         $status = intval($result['data'][0]['status']);
@@ -157,6 +167,8 @@ class deliveryLogic
                             return true;
                         } else {
                             Log::record("PUSHOMS ERR has status: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
+                            Model('order_exception_push')->insert($data);
+                            Model('order_exception_log')->insert($data_log);
                             return false;
                         }
                     } else {
@@ -164,22 +176,33 @@ class deliveryLogic
                         if(strstr($msg,'订单已存在')) {
                             return true;
                         } else {
+                            // 技术债务, 未知问题, 不放入推送表, 确认后再放
+                            //Model('order_exception_push')->insert($data);
+                            Model('order_exception_log')->insert($data_log);
                             return false;
                         }
                     }
                 }
                 else
                 {
+                    // 填充错误理由
+                    $data_log['exception_reason'] = "$resp order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}";
                     Log::record("$resp order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
+                    Model('order_exception_push')->insert($data);
+                    Model('order_exception_log')->insert($data_log);
                     return false;
                 }
 
             } else {
                 Log::record("PUSHOMS ERR have not data: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
+                Model('order_exception_push')->insert($data);
+                Model('order_exception_log')->insert($data_log);
                 return false;
             }
         } else {
             Log::record("PUSHOMS ERR empty result: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
+            Model('order_exception_push')->insert($data);
+            Model('order_exception_log')->insert($data_log);
             return false;
         }
     }

+ 66 - 0
mobile/control/test.php

@@ -141,4 +141,70 @@ class testControl extends mobileHomeControl
 
         return $pay_amount;
     }
+
+    /**
+     * order_sn
+     * member_id
+     * 
+     * 手动退款接口
+     */
+    public function refundOp(){
+        $model_order = Model('order');
+        $model_trade = Model('trade');
+
+        $order_info = Model('order')->getOrderInfo(array('order_sn' => $_GET['order_sn']));
+        if (empty($order_info)) return;
+
+        $model_refund = Model('refund_return');        
+        $order_id = intval($order_info['order_id']);
+        $condition = array();
+        $condition['buyer_id'] = $order_info['buyer_id'];
+        $condition['order_id'] = $order_id;
+        $order = $model_refund->getRightOrderList($condition);
+        $order_amount = $order['order_amount'];//订单金额
+        $condition = array();
+        $condition['buyer_id'] = $order['buyer_id'];
+        $condition['order_id'] = $order['order_id'];
+        $condition['goods_id'] = '0';
+        $condition['seller_state'] = array('lt','3');
+        $refund_list = $model_refund->getRefundReturnList($condition);
+        $refund = array();
+        if (!empty($refund_list) && is_array($refund_list)) {
+            $refund = $refund_list[0];
+        }
+        $order_paid = $model_trade->getOrderState('order_paid');//订单状态20:已付款
+        $payment_code = $order['payment_code'];//支付方式
+        if ($refund['refund_id'] > 0 || $order['order_state'] != $order_paid || $payment_code == 'offline') {//检查订单状态,防止页面刷新不及时造成数据错误
+            joutput_error(array("result" => false));
+            return false;
+        }
+
+        $refund_array = array();
+        $refund_array['refund_type'] = '1';//类型:1为退款,2为退货
+        $refund_array['seller_state'] = '1';//状态:1为待审核,2为同意,3为不同意
+        $refund_array['order_lock'] = '2';//锁定类型:1为不用锁定,2为需要锁定
+        $refund_array['goods_id'] = '0';
+        $refund_array['order_goods_id'] = '0';
+        $refund_array['reason_id'] = '0';
+        $refund_array['reason_info'] = '取消订单,全部退款';
+        $refund_array['goods_name'] = '订单商品全部退款';
+        $refund_array['refund_amount'] = ncPriceFormat($order_amount);
+        $refund_array['buyer_message'] = $_POST['buyer_message'];
+        $refund_array['add_time'] = time();
+
+        $pic_array = array();
+        $pic_array['buyer'] = '';//$this->upload_pic();//上传凭证
+        $info = serialize($pic_array);
+        $refund_array['pic_info'] = $info;
+        $state = $model_refund->addRefundReturn($refund_array,$order);
+
+        if ($state) {
+            $model_refund->editOrderLock($order_id);
+            joutput_data(array("result" => true));
+            return true;
+        } else {
+            joutput_error(array("result" => false));
+            return false;
+        }
+    }
 }