lowkeyman 1 mēnesi atpakaļ
vecāks
revīzija
3a92a33d03
1 mainītis faili ar 38 papildinājumiem un 30 dzēšanām
  1. 38 30
      admin/control/ordersendlist.php

+ 38 - 30
admin/control/ordersendlist.php

@@ -219,23 +219,6 @@ class ordersendlistControl extends SystemControl
             return $mches;
         };
 
-        $unique_array = function ($ids)
-        {
-            $ids = array_unique($ids);
-            sort($ids);
-            return $ids;
-        };
-
-        $int_array = function ($sids)
-        {
-            $result = [];
-            foreach ($sids as $sid) {
-                $result[] = intval($sid);
-            }
-
-            return $result;
-        };
-
         $model_refill_order = Model('refill_order');
 
         $base_cond['refill_order.inner_status'] = 0;
@@ -313,25 +296,50 @@ class ordersendlistControl extends SystemControl
         {
             $order_list = $this->orderFormat($order_list, $merchant_list);
 
-            $order_ids = array_column($order_list,'order_id');
-            $order_ids = $unique_array($order_ids);
+            //补充订单的返销状态,按客户单号判断
+            $mch_orders = array_column($order_list,'mch_order');
+            $mch_orders = array_unique($mch_orders);
+
+            $relate_con = [
+                'refill_order.order_time' => $base_cond['refill_order.order_time'],
+                'refill_order.mch_order' => ['in', $mch_orders],
+                'vr_order.order_state' => ORDER_STATE_SUCCESS,
+                'refill_order.inner_status' => 0
+            ];
+            $relate_list = Model('')->table('refill_order,vr_order')
+                ->join('inner')
+                ->on('refill_order.order_id=vr_order.order_id')
+                ->field("refill_order.order_id,refill_order.mch_order")
+                ->where($relate_con)
+                ->select();
+
+            $relate_order_map = [];
+            foreach ($relate_list as $item) {
+                $relate_order_map[$item['order_id']] = $item['mch_order'];
+            }
+
+            $order_ids = array_column($relate_list, 'order_id');
+            $order_ids = array_unique($order_ids);
 
             $refill_buyback_model = Model('refill_buyback');
-            $buybacks = $refill_buyback_model->getBuyBackList(['order_id' => ['in',$order_ids], 'manual_type' => 'buyback']);
-            $buyback_ids = array_column($buybacks, 'order_id');
-            $buyback_ids = $int_array($buyback_ids);
-            $buyback_ids = $unique_array($buyback_ids);
+            $buybacks = $refill_buyback_model->getBuyBackList(['order_id' => ['in', $order_ids], 'manual_type' => 'buyback'], '', 'order_id');
 
-            foreach ($order_list as $key => $order)
+            $mch_order_buyback = [];
+            foreach ($buybacks as $buyback)
             {
-                if($order['order_state'] != ORDER_STATE_SUCCESS) {
-                    $order_list[$key]['buyback'] = false;
-                    continue;
+                $order_id = $buyback['order_id'];
+                $relate_mch_order = $relate_order_map[$order_id];
+                if (!in_array($relate_mch_order, $mch_order_buyback)) {
+                    $mch_order_buyback[] = $relate_mch_order;
                 }
-                $order_id = intval($order['order_id']);
-                if (algorithm::binary_search($buyback_ids, $order_id)) {
+            }
+
+            foreach ($order_list as $key => $order)
+            {
+                $mch_order = $order['mch_order'];
+                if (in_array($mch_order, $mch_order_buyback)) {
                     $order_list[$key]['buyback'] = true;
-                }else{
+                } else {
                     $order_list[$key]['buyback'] = false;
                 }
             }