Jelajahi Sumber

fix auto complete order cannot evaluate

stanley-king 8 tahun lalu
induk
melakukan
e8069e7e0c
4 mengubah file dengan 88 tambahan dan 11 penghapusan
  1. 5 5
      crontab/control/date.php
  2. 17 1
      helper/pay_helper.php
  3. 8 5
      mobile/dispatch_notify.php
  4. 58 0
      test/orderTest.php

+ 5 - 5
crontab/control/date.php

@@ -188,11 +188,11 @@ class dateControl extends BaseCronControl
         $_break = false;
         $model_order = Model('order');
         $logic_order = Logic('order');
-        // $condition = array();
-        // $condition['order_state'] = ORDER_STATE_SEND;
-        // $condition['lock_state'] = 0;
-        // $condition['delay_time'] = array('lt',TIMESTAMP - ORDER_AUTO_RECEIVE_DAY * 86400);
-        $condition = "order_state=".ORDER_STATE_SEND." and lock_state=0 and "."delay_time<=".(time() - ORDER_AUTO_RECEIVE_DAY * 86400)." and delay_time>0";
+        $condition = array();
+        $condition['order_state'] = ORDER_STATE_SEND;
+        $condition['lock_state'] = 0;
+        $condition['delay_time'] = array('lt',time() - ORDER_AUTO_RECEIVE_DAY * 86400);
+
         //分批,每批处理100个订单,最多处理5W个订单
         for ($i = 0; $i < 500; $i++){
             if ($_break) {

+ 17 - 1
helper/pay_helper.php

@@ -127,7 +127,6 @@ class pay_helper
     {
         $logic_payment = Logic('payment');
         $result = $logic_payment->getRealOrderInfo($pay_sn);
-
         if (intval($result['data']['api_pay_state']) != 0) {
             return true;
         }
@@ -135,6 +134,23 @@ class pay_helper
         return false;
     }
 
+    public function OnOmsNotify($order_sn, $express_id, $logistics_no)
+    {
+        $model_order = Model('order');
+        $order_info = $model_order->getOrderInfo(array('order_sn' => $order_sn),array('order_common','order_goods'));
+
+        $data['reciver_name'] = $order_info['reciver_name'];
+        $data['reciver_info'] = $order_info['reciver_info'];
+        $data['deliver_explain'] = $order_info['deliver_explain'];
+        $data['daddress_id'] = intval($order_info['daddress_id']);
+        $data['shipping_express_id'] =intval($express_id);
+        $data['shipping_code']  = $logistics_no;
+
+        $logic_order = Logic('order');
+        $result = $logic_order->changeOrderSend($order_info, 'system', $order_info['buyer_name'], $data);
+        return $result['state'];
+    }
+
     public function OnNotify($param,$payment)
     {
         $pay = $this->gen_payment($payment);

+ 8 - 5
mobile/dispatch_notify.php

@@ -8,6 +8,7 @@
 
 require_once(BASE_ROOT_PATH . '/helper/kdn_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
+require_once(BASE_ROOT_PATH . '/helper/pay_helper.php');
 
 fcgi_header("Content-Type: text/plain; charset=UTF-8");
 try
@@ -21,14 +22,13 @@ try
     $logistics_company = trim(urldecode($_POST['logistics_company']));
 
     Log::record("dispatch notify value: order_sn = {$order_sn},status={$status},consign_time = {$consign_time} logistics_no = {$logistics_no} logistics_company = {$logistics_company}.", Log::DEBUG);
-
     $express = Model('express')->field('id')->where(array('e_name' => $logistics_company))->select();
     if (empty($express) || count($express) == 0) {
         echo 'FAIL';
         return;
     }
 
-    $shipping_express_id = $express[0]['id'];
+    $express_id = $express[0]['id'];
     $remote_addr = $_SERVER['REMOTE_ADDR'];
 
     if (!empty($order_sn) && !empty($logistics_no))
@@ -36,15 +36,18 @@ try
         if ($status == 1)
         {
             account_helper::onOrderSend($order_sn,$logistics_company,$logistics_no);
-            $order = Model('order');
-            $ret = $order->setOrderDelivery($order_sn, $shipping_express_id, $logistics_no, $ship_time);
+            $helper = new pay_helper();
+            $ret = $helper->OnOmsNotify($order_sn,$express_id,$logistics_no);
+
             if ($ret) {
                 QueueClient::push('subscribeKDN',array('order_sn'=>$order_sn));
                 echo 'SUCCESS';
             } else {
                 echo 'SUCCESS';
             }
-        } else {
+        }
+        else
+        {
             QueueClient::push('subscribeKDN',array('order_sn'=>$order_sn));
             echo 'SUCCESS';
         }

+ 58 - 0
test/orderTest.php

@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Created by PhpStorm.
+ * User: stanley-king
+ * Date: 2017/1/13
+ * Time: 下午11:46
+ */
+
+define('BASE_ROOT_PATH',str_replace('/test','',dirname(__FILE__)));
+
+require_once (BASE_ROOT_PATH . '/fooder.php');
+require_once (BASE_ROOT_PATH . '/helper/util_helper.php');
+
+class orderTest extends PHPUnit_Framework_TestCase
+{
+    public static function setUpBeforeClass()
+    {
+        Base::run_util();
+    }
+    public static function tearDownAfterClass()
+    {
+    }
+    public static function testSuccess()
+    {
+
+        $model_order = Model('order');
+        $logic_order = Logic('order');
+        $condition = array();
+        $condition['order_state'] = ORDER_STATE_SEND;
+        $condition['lock_state'] = 0;
+        //$condition['delay_time'] = array('lt',time() - ORDER_AUTO_RECEIVE_DAY * 86400);
+        $condition['order_id'] = 6329;
+
+        //分批,每批处理100个订单,最多处理5W个订单
+        $order_list = $model_order->getOrderList($condition, '', '*', 'delay_time asc', 100);
+        foreach ($order_list as $order_info) {
+            $result = $logic_order->changeOrderStateReceive($order_info,'system','系统','超期未收货系统自动完成订单');
+        }
+    }
+    public function testSend()
+    {
+        $order_sn = '9000000001035202';
+        $status = 1;
+        $consign_time = '2017-01-15 18:07:05.0';
+        $logistics_no = '3322415835338';
+        $logistics_company = '申通快递';
+        $express = Model('express')->field('id')->where(array('e_name' => $logistics_company))->select();
+        if (empty($express) || count($express) == 0) {
+            echo 'FAIL';
+            return;
+        }
+
+        $express_id = $express[0]['id'];
+        $time = strtotime($consign_time);
+
+    }
+}