Selaa lähdekoodia

refill task update

xiaoyu 3 vuotta sitten
vanhempi
commit
390f0b1c01

+ 12 - 0
admin/control/control.php

@@ -486,4 +486,16 @@ class SystemControl
         $this->log($log_msg, 1);
         return [true, 'success'];
     }
+
+    protected function task_hash_check($condition, $task_type)
+    {
+        $model = Model('refill_task');
+        $hash = md5(serialize($condition) . $task_type);
+        $check = $model->HashCheck($hash);
+        if($check) {
+            return $hash;
+        }else{
+            return false;
+        }
+    }
 }

+ 0 - 65
admin/control/orderstats.php

@@ -164,71 +164,6 @@ class orderstatsControl extends SystemControl
         Tpl::showpage('refill.task');
     }
 
-    public function task_addOp()
-    {
-        if(chksubmit())
-        {
-            $obj_validate = new Validator();
-            $obj_validate->validateparam = [
-                ["input" => $_POST["task_type"], "require" => "true", "message" => '请选择任务类型'],
-                ["input" => $_POST["type"], "require" => "true", "message" => '请选择主体类型'],
-                ["input" => $_POST["body"], "require" => "true", "message" => '请选择统计主体'],
-                ["input" => $_POST["order_time_type"], "require" => "true", "message" => '请选择日期类型'],
-                ["input" => $_POST["query_start_time"], "require" => "true", "message" => '请选择统计日期'],
-            ];
-            $error = $obj_validate->validate();
-            if ($error != '') {
-                showMessage($error, '', '', 'error');
-            }
-            $body = explode('-', $_POST['body']);
-            $insert['task_type'] = $_POST['task_type'];
-            $insert['type'] = $_POST['type'];
-            $insert['cid'] = $body[0];
-            $insert['cname'] = $body[1];
-            $insert['add_time'] = time();
-
-            $order_time_type = $_POST['order_time_type'];
-            $condition['start_unixtime'] = intval(strtotime($_POST['query_start_time']));
-            $condition['end_unixtime'] = intval(strtotime($_POST['query_end_time']));
-            $condition['order_time_type'] = $order_time_type;
-            $condition['order_state'] = $_POST['order_state'] ?? '';
-
-            $hash = $this->task_hash_check($condition, $insert['task_type'], $insert['type']);
-            if($hash === false) {
-                showMessage('此任务已存在,如需重新执行,请删除已存在的任务');
-            }
-            $insert['task_hash'] = $hash;
-            $insert['task_condition'] = serialize($condition);
-
-            $model = Model('refill_task');
-            $resp = $model->insert($insert);
-            if($resp) {
-                showMessage('录入成功', 'index.php?act=OrderStats&&op=refill_task');
-            }else{
-                showMessage('任务添加失败');
-            }
-        }
-        else
-        {
-            Tpl::output('task_type', $this->task_type);
-            Tpl::output('type', $this->type);
-            Tpl::output('order_time_type', $this->order_time_type);
-            Tpl::showpage('refill.task.add');
-        }
-    }
-
-    private function task_hash_check($condition, $task_type, $type)
-    {
-        $model = Model('refill_task');
-        $hash = md5(serialize($condition) . $task_type . $type);
-        $check = $model->HashCheck($hash);
-        if($check) {
-            return $hash;
-        }else{
-            return false;
-        }
-    }
-
     public function task_delOp()
     {
         $task_id = $_GET['task_id'];

+ 16 - 30
admin/control/refill_order.php

@@ -183,8 +183,20 @@ class refill_orderControl extends SystemControl
                 unset($condition['vr_order.add_time']);
             }
         }
-        $result = $this->getAllOrders($condition);
-        $this->createExcel($result);
+        $hash = $this->task_hash_check($condition, 'order_export');
+
+        $insert['task_type'] = 'order_export';
+        $insert['add_time'] = time();
+        $insert['task_hash'] = $hash;
+        $insert['task_params'] = serialize($condition);
+
+        $model = Model('refill_task');
+        $resp = $model->insert($insert);
+        if($resp) {
+            showMessage('录入成功', 'index.php?act=OrderStats&&op=refill_task');
+        }else{
+            showMessage('任务添加失败');
+        }
     }
 
     private function createExcel($data = array())
@@ -376,7 +388,7 @@ class refill_orderControl extends SystemControl
         $condition['inner_status'] = 0;
         $condition['is_retrying'] = 0;
 
-        $orders = $this->getAllOrders($condition);
+        $orders = Model('refill_order')->getAllOrders($condition);
         if (!empty($orders))
         {
             foreach ($orders as $order)
@@ -396,7 +408,7 @@ class refill_orderControl extends SystemControl
     private function updateOrderSend($condition)
     {
         $condition['order_state'] = ORDER_STATE_SEND;
-        $orders = $this->getAllOrders($condition);
+        $orders = Model('refill_order')->getAllOrders($condition);
 
         if (!empty($orders)) {
             foreach ($orders as $order) {
@@ -407,30 +419,4 @@ class refill_orderControl extends SystemControl
         }
         showMessage('操作成功');
     }
-
-    private function getAllOrders($condition): array
-    {
-        $len = 1000;
-
-        $i = 0;
-        $orders = [];
-        while (true)
-        {
-            $start = $i * $len;
-            $items = Model('')->table('refill_order,vr_order')
-                                        ->field('refill_order.*,vr_order.order_state')
-                                        ->join('inner')
-                                        ->on('refill_order.order_id=vr_order.order_id')
-                                        ->where($condition)
-                                        ->order('refill_order.order_time desc')
-                                        ->limit("{$start},{$len}")
-                                        ->select();
-            $orders = array_merge($orders,$items);
-            if (empty($items) || count($items) < $len) {
-                break;
-            }
-            $i++;
-        }
-        return $orders;
-    }
 }

+ 0 - 7
admin/templates/default/refill.task.php

@@ -117,7 +117,6 @@
                 <li><a href="index.php?act=OrderStats&op=index&type=provider"><span>上游对账记录</span></a></li>
                 <li><a href="index.php?act=OrderStats&op=index&type=merchant"><span>下游对账记录</span></a></li>
                 <li><a href="JavaScript:void(0);" class="current"><span>任务列表</span></a></li>
-                <li><a href="index.php?act=OrderStats&op=task_add"><span>任务录入</span></a></li>
             </ul>
         </div>
     </div>
@@ -157,9 +156,6 @@
             <th class="align-center">编号</th>
             <th class="align-center">任务ID</th>
             <th class="align-center">任务类型</th>
-            <th class="align-center">主体类型</th>
-            <th class="align-center">主体ID</th>
-            <th class="align-center">主体名称</th>
             <th class="align-center">任务条件</th>
             <th class="align-center">任务状态</th>
             <th class="align-center">生成日期</th>
@@ -177,9 +173,6 @@
                     <td class="align-center"><?php echo $key + 1; ?></td>
                     <td class="align-center"><?php echo $value['task_id']; ?></td>
                     <td class="align-center"><?php echo $output['task_type'][$value['task_type']]; ?></td>
-                    <td class="align-center"><?php echo $output['type'][$value['type']]; ?></td>
-                    <td class="align-center"><?php echo $value['cid']; ?></td>
-                    <td class="align-center"><?php echo $value['cname']; ?></td>
                     <td class="align-center">
                         <p>统计日期类型:<?php echo $output['order_time_type'][$value['condition']['order_time_type']];?></p>
                         <p>

+ 1 - 27
crontab/control/minutes.php

@@ -701,7 +701,7 @@ class minutesControl extends BaseCronControl
      */
     private function order_export($condition, $type, $task_id)
     {
-        $orders = $this->getAllOrders($condition);
+        $orders = Model('refill_order')->getAllOrders($condition);
         if(empty($orders)) {
             return [false, '统计数据为空'];
         }
@@ -752,32 +752,6 @@ class minutesControl extends BaseCronControl
         }
     }
 
-    private function getAllOrders($condition): array
-    {
-        $len = 1000;
-
-        $i = 0;
-        $orders = [];
-        while (true)
-        {
-            $start = $i * $len;
-            $items = Model('')->table('refill_order,vr_order')
-                ->field('refill_order.*,vr_order.order_state')
-                ->join('inner')
-                ->on('refill_order.order_id=vr_order.order_id')
-                ->where($condition)
-                ->order('refill_order.order_time desc')
-                ->limit("{$start},{$len}")
-                ->select();
-            $orders = array_merge($orders,$items);
-            if (empty($items) || count($items) < $len) {
-                break;
-            }
-            $i++;
-        }
-        return $orders;
-    }
-
     private function orderFormat($orders): array
     {
         $card_type_texts = [mtopcard\PetroChinaCard => '中石油', mtopcard\SinopecCard => '中石化', mtopcard\ChinaMobileCard => '中国移动', mtopcard\ChinaUnicomCard => '中国联通', mtopcard\ChinaTelecomCard => '中国电信'];

+ 26 - 0
data/model/refill_order.model.php

@@ -86,4 +86,30 @@ class refill_orderModel extends Model
         $item = $this->table('refill_detail')->where(['mchid' => $mchid,'mch_order' => $mch_order])->select();
         return !empty($item);
     }
+
+    public function getAllOrders($condition)
+    {
+        $len = 1000;
+
+        $i = 0;
+        $orders = [];
+        while (true)
+        {
+            $start = $i * $len;
+            $items = $this->table('refill_order,vr_order')
+                ->field('refill_order.*,vr_order.order_state')
+                ->join('inner')
+                ->on('refill_order.order_id=vr_order.order_id')
+                ->where($condition)
+                ->order('refill_order.order_time desc')
+                ->limit("{$start},{$len}")
+                ->select();
+            $orders = array_merge($orders,$items);
+            if (empty($items) || count($items) < $len) {
+                break;
+            }
+            $i++;
+        }
+        return $orders;
+    }
 }

+ 33 - 102
test/TestExportOrder.php

@@ -10,7 +10,7 @@ define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
 require_once(BASE_ROOT_PATH . '/global.php');
 require_once(BASE_CORE_PATH . '/lrlz.php');
 require_once(BASE_ROOT_PATH . '/fooder.php');
-
+require_once(BASE_HELPER_PATH . '/PHPExcel/PHPExcel.php');
 
 class TestExportOrder extends TestCase
 {
@@ -22,7 +22,7 @@ class TestExportOrder extends TestCase
     public function testXingzhiyu()
     {
         $end_time = strtotime("2021-06-15");
-        $this->exoprt(10132,null,$end_time);
+        $this->exoprt(1093,null,$end_time);
     }
 
     public function exoprt($mchid,$start_time = null,$end_time = null)
@@ -74,7 +74,6 @@ class TestExportOrder extends TestCase
         fclose($fp);
     }
 
-<<<<<<< HEAD
     public function testRefillTask()
     {
         $model_refill_task = Model('refill_task');
@@ -83,39 +82,14 @@ class TestExportOrder extends TestCase
         if (empty($task)) return false;
 
         $task_id = $task['task_id'];
-        $task_condition = unserialize($task['task_condition']);
-        if (empty($task_condition)) {
+        $task_params = unserialize($task['task_params']);
+        if (empty($task_params)) {
             Log::record("refill task condition unserialize err, task_id:{$task_id}");
             return false;
         }
 
-        $type = $task['type'];
-        $cid = $task['cid'];
-        if ($type === 'merchant') {
-            $condition['refill_order.mchid'] = $cid;
-        } elseif ($type === 'provider') {
-            $condition['vr_order.store_id'] = $cid;
-        } else {
-            Log::record("refill task type err, task_id:{$task_id}");
-            return false;
-        }
-        $order_time_type = $task_condition['order_time_type'];
-        $start_unixtime = $task_condition['start_unixtime'];
-        $end_unixtime = $task_condition['end_unixtime'];
-        $order_state = $task_condition['order_state'];
-        if ($start_unixtime > 0 && $end_unixtime > $start_unixtime) {
-            $condition["refill_order.{$order_time_type}"] = [['egt', $start_unixtime], ['lt', $end_unixtime], 'and'];
-            $condition['vr_order.add_time'] = ['egt', $start_unixtime-1];
-        } elseif ($start_unixtime > 0) {
-            $condition["refill_order.{$order_time_type}"] = ['egt', $start_unixtime];
-            $condition['vr_order.add_time'] = ['egt', $start_unixtime-1];
-        }
-        if (in_array($order_state, ['0', '10', '20', '30', '40'], true)) {
-            $condition['order_state'] = $order_state;
-        }
-
         $model_refill_task->Dispose($task_id);
-        [$state, $task_result] = $this->order_export($condition, $type, $task_id);
+        [$state, $task_result] = $this->order_export($task_params, $task_id);
         if ($state) {
             $model_refill_task->DisposeFinish($task_id, $task_result);
         } else {
@@ -127,26 +101,33 @@ class TestExportOrder extends TestCase
     /**
      * @throws PHPExcel_Exception
      */
-    private function order_export($condition, $type, $task_id)
+    private function order_export($condition, $task_id)
     {
-        $orders = $this->getAllOrders($condition);
-        if(empty($orders)) {
+        $orders = Model('refill_order')->getAllOrders($condition);
+        if (empty($orders)) {
             return [false, '统计数据为空'];
         }
         $orders = $this->orderFormat($orders);
         $objPHPExcel = new PHPExcel();
 
-        if ($type === 'merchant') {
-            $column_keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'];
-            $column_values = ['商户号', '客户订单号', '平台单号', '面额', '充值卡号', '充值卡类型', '下单日期', '完成日期', '官方流水号', '订单状态', '扣款金额'];
-            $data_keys = ['mchid', 'mch_order', 'order_sn', 'refill_amount', 'card_no', 'card_type_text', 'order_time_text', 'notify_time_text', 'official_sn', 'order_state_text', 'mch_amount'];
-        } elseif ($type === 'provider') {
-            $column_keys = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
-            $column_values = ['上游订单号', '平台单号', '面额', '充值卡号', '充值卡类型', '下单日期', '完成日期', '官方流水号', '订单状态', '扣款金额'];
-            $data_keys = ['ch_trade_no', 'order_sn', 'refill_amount', 'card_no', 'card_type_text', 'order_time_text', 'notify_time_text', 'official_sn', 'order_state_text', 'channel_amount'];
+        $column_values = ['平台单号', '面额', '充值卡号', '充值卡类型', '下单日期', '完成日期', '官方流水号', '订单状态', '扣款金额'];
+        $data_keys = ['order_sn', 'refill_amount', 'card_no', 'card_type_text', 'order_time_text', 'notify_time_text', 'official_sn', 'order_state_text', 'mch_amount'];
+        if (!empty($condition['refill_order.mchid'])) {
+            $column_values = array_merge(['商户号', '商户订单号'], $column_values);
+            $data_keys = array_merge(['mchid', 'mch_order'], $data_keys);
+        } elseif (!empty($condition['vr_order.store_id'])) {
+            $column_values = array_merge(['上游订单号'], $column_values);
+            $data_keys = array_merge(['ch_trade_no'], $data_keys);
         } else {
-            return [false, '主体类型错误'];
+            $column_values = array_merge([], $column_values);
+            $data_keys = array_merge([], $data_keys);
         }
+        $column_key = 'A';
+        for($index=0;$index<count($column_values);$index++){
+            $column_keys[] = $column_key;
+            $column_key++;
+        }
+
 
         $objPHPExcel->setActiveSheetIndex(0);
         $objPHPExcel->getDefaultStyle()->getFont()->setName('Arial')->setSize(10);
@@ -158,17 +139,17 @@ class TestExportOrder extends TestCase
 
         foreach ($orders as $k => $order) {
             foreach ($column_keys as $key => $column_key) {
-                $field = $column_key.($k+2);
+                $field = $column_key . ($k + 2);
                 $objPHPExcel->getActiveSheet()->setCellValueExplicit($field, $order[$data_keys[$key]],
                     PHPExcel_Cell_DataType::TYPE_STRING);
             }
         }
         try {
             $path = BASE_ROOT_PATH . "/data/upload/task/";
-            if(!is_dir($path)){
+            if (!is_dir($path)) {
                 mkdir($path, 0755);
             }
-            $filename = date('YmdHis',time())."-任务导出-任务ID:{$task_id}.xlsx";
+            $filename = date('YmdHis', time()) . "-任务导出-任务ID:{$task_id}.xlsx";
 
             $file_path = $path . $filename;
             $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
@@ -180,78 +161,28 @@ class TestExportOrder extends TestCase
         }
     }
 
-    private function getAllOrders($condition): array
-    {
-        $len = 1000;
-
-        $i = 0;
-        $orders = [];
-        while (true)
-        {
-            $start = $i * $len;
-            $items = Model('')->table('refill_order,vr_order')
-                ->field('refill_order.*,vr_order.order_state')
-                ->join('inner')
-                ->on('refill_order.order_id=vr_order.order_id')
-                ->where($condition)
-                ->order('refill_order.order_time desc')
-                ->limit("{$start},{$len}")
-                ->select();
-            $orders = array_merge($orders,$items);
-            if (empty($items) || count($items) < $len) {
-                break;
-            }
-            $i++;
-        }
-        return $orders;
-    }
-
     private function orderFormat($orders): array
     {
         $card_type_texts = [mtopcard\PetroChinaCard => '中石油', mtopcard\SinopecCard => '中石化', mtopcard\ChinaMobileCard => '中国移动', mtopcard\ChinaUnicomCard => '中国联通', mtopcard\ChinaTelecomCard => '中国电信'];
-        $orderState = function ($order_info) {
-            $is_retrying = $order_info['is_retrying'];
-            switch ($order_info['order_state']) {
-                case ORDER_STATE_CANCEL:
-                    if ($is_retrying) {
-                        $order_state = '重试中';
-                    } else {
-                        $order_state = '已取消';
-                    }
-                    break;
-                case ORDER_STATE_NEW:
-                    $order_state = '待付款';
-                    break;
-                case ORDER_STATE_PAY:
-                    $order_state = '待发货';
-                    break;
-                case ORDER_STATE_SEND:
-                    $order_state = '待收货';
-                    break;
-                case ORDER_STATE_SUCCESS:
-                    $order_state = '交易完成';
-                    break;
-                default :
-                    $order_state = '未知状态';
-            }
-            return $order_state;
-        };
         foreach($orders as $key => $order)
         {
             $orders[$key]['card_type_text'] = $card_type_texts[$order['card_type']];
             $orders[$key]['order_time_text'] = $order['order_time'] ? date('Y-m-d H:i:s', $order['order_time']) : '';
             $orders[$key]['notify_time_text'] = $order['notify_time'] ? date('Y-m-d H:i:s', $order['notify_time']) : '';
-            $orders[$key]['order_state_text'] = $orderState($order);
+            $orders[$key]['order_state_text'] = orderState($order);
         }
         return $orders;
     }
 
-=======
->>>>>>> raccount
     public function testStrSer()
     {
         $str = 'a:3:{s:11:"is_transfer";b:1;s:11:"card_states";a:2:{i:0;i:0;i:1;i:5;}s:10:"card_types";a:1:{i:0;i:4;}}';
         $arr = unserialize($str);
+
+        $j = 'A';
+        for($index=0;$index<10;$index++){
+            $j++;
+        }
     }
 }