Selaa lähdekoodia

补单监控,导出excel&面额检索

lowkeyman 1 kuukausi sitten
vanhempi
commit
171721c388

+ 71 - 0
admin/control/ordersendlist.php

@@ -251,6 +251,10 @@ class ordersendlistControl extends SystemControl
             }
         }
 
+        if (!empty($_GET['refill_amount'])) {
+            $base_cond['refill_order.refill_amount'] = $_GET['refill_amount'];
+        }
+
         $cur_time = time();
         $start_unixtime = intval(strtotime($_GET['query_start_time']));
         $end_unixtime = intval(strtotime($_GET['query_end_time']));
@@ -270,6 +274,11 @@ class ordersendlistControl extends SystemControl
             $base_cond['refill_order.order_time'] = ['egt', $start];
         }
 
+        if (!empty($_GET['export'])) {
+            $this->monitor_transfer_export($base_cond, $merchants_getter, $all_mchids);
+            return;
+        }
+
         $cur_time = time();
         $order_by = 'refill_order.order_time desc';
         $order_list = Model('')->table('refill_order,vr_order,merchant')
@@ -1141,4 +1150,66 @@ class ordersendlistControl extends SystemControl
             showMessage("录入成功,任务ID:{$task_id},请稍后以相同条件再次导出,或在任务列表直接下载。","index.php?act=task&op=index&task_id={$task_id}");
         }
     }
+
+    private function monitor_transfer_export($cond, &$merchants_getter, $all_mchids)
+    {
+        $order_list = Model('refill_order')->getAllMonitorTransferOrders($cond);
+        $merchant_list = $merchants_getter($all_mchids);
+        if(!empty($order_list)) {
+            $order_list = $this->orderFormat($order_list, $merchant_list);
+        }
+
+        Language::read('export');
+        import('libraries.excel');
+        $excel_obj = new Excel();
+        $excel_data = array();
+        //设置样式
+        $excel_obj->setStyle(array('id' => 's_title', 'Font' => array('FontName' => '宋体', 'Size' => '12', 'Bold' => '1')));
+        //header
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '机构编号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '机构名称');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '订单号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '充值卡号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '充值卡类型');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '充值额度');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '下单日期');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '超时');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '当前耗时');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '总耗时');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '订单状态');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '通道质量');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '失败原因');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '商家单号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '扣款金额');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '渠道单号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '渠道名称');
+
+        //data
+        foreach ($order_list as $order) {
+            $tmp = array();
+            $tmp[] = array('data' => $order['mchid']);
+            $tmp[] = array('data' => $order['mch_name']);
+            $tmp[] = array('data' => $order['order_sn']);
+            $tmp[] = array('data' => $order['card_no']);
+            $tmp[] = array('data' => $order['card_type_text']);
+            $tmp[] = array('data' => $order['refill_amount']);
+            $tmp[] = array('data' => date('Y-m-d H:i:s', $order['order_time']));
+            $tmp[] = array('data' => $order['mtime_out_text']);
+            $tmp[] = array('data' => $order['diff_time_text']);
+            $tmp[] = array('data' => $order['total_diff_time_text']);
+            $tmp[] = array('data' => orderState($order));
+            $tmp[] = array('data' => $order['quality_text']);
+            $tmp[] = array('data' => $order['err_msg']);
+            $tmp[] = array('data' => $order['mch_order']);
+            $tmp[] = array('data' => $order['mch_amount']);
+            $tmp[] = array('data' => $order['ch_trade_no']);
+            $tmp[] = array('data' => $order['channel_name']);
+
+            $excel_data[] = $tmp;
+        }
+        $excel_data = $excel_obj->charset($excel_data, CHARSET);
+        $excel_obj->addArray($excel_data);
+        $excel_obj->addWorksheet($excel_obj->charset(L('exp_od_order'), CHARSET));
+        $excel_obj->generateXML('补单导出-' . date('Y-m-d-H', time()));
+    }
 }

+ 20 - 46
admin/templates/default/monitor_transfer.php

@@ -56,9 +56,6 @@
     .db-top {
         padding: 0 30px;
     }
-    #selest_nc {
-        width: 220px
-    }
     .tab-base{
         overflow: visible;
     }
@@ -89,9 +86,7 @@
         <input type="hidden" name="act" value="OrderSendList"/>
         <input type="hidden" name="op" value="monitor_transfer"/>
         <input type="hidden" name="order_query" value=""/>
-        <input type="hidden" name="no_mchid" value=""/>
         <input type="hidden" name="export" value=""/>
-        <input type="hidden" name="default_no_mch" value="<?php echo $_GET['no_mchid']; ?>"/>
         <table class="tb-type1 noborder search">
             <tr>
                 <th><label>客户名称</label></th>
@@ -165,6 +160,22 @@
                         </option>
                     </select>
                 </td>
+                <th><label>交易面额</label></th>
+                <td>
+                    <select name="refill_amount" class="querySelect">
+                        <option value=""><?php echo $lang['nc_please_choose']; ?></option>
+                        <option value="10" <?php if ($_GET['refill_amount'] == '10') { ?>selected<?php } ?>>10</option>
+                        <option value="20" <?php if ($_GET['refill_amount'] == '20') { ?>selected<?php } ?>>20</option>
+                        <option value="30" <?php if ($_GET['refill_amount'] == '30') { ?>selected<?php } ?>>30</option>
+                        <option value="50" <?php if ($_GET['refill_amount'] == '50') { ?>selected<?php } ?>>50</option>
+                        <option value="100" <?php if ($_GET['refill_amount'] == '100') { ?>selected<?php } ?>>100</option>
+                        <option value="200" <?php if ($_GET['refill_amount'] == '200') { ?>selected<?php } ?>>200</option>
+                        <option value="300" <?php if ($_GET['refill_amount'] == '300') { ?>selected<?php } ?>>300</option>
+                        <option value="500" <?php if ($_GET['refill_amount'] == '500') { ?>selected<?php } ?>>500</option>
+                        <option value="1000" <?php if ($_GET['refill_amount'] == '1000') { ?>selected<?php } ?>>1000</option>
+                        <option value="2000" <?php if ($_GET['refill_amount'] == '2000') { ?>selected<?php } ?>>2000</option>
+                    </select>
+                </td>
                 <td>
                     <a style="margin-left:15px;" href="javascript:void(0);" id="ncsubmit" class="btn-search "
                        title="<?php echo $lang['nc_query']; ?>">&nbsp;
@@ -472,35 +483,6 @@
             }, function () {layer.msg('批量补充操作成功');});
         })
 
-        // 获取不包含客户
-        let selest_nc
-        let default_no_mch = $('input[name="default_no_mch"]').val().split(',');
-        $.get('index.php?act=refill_order&op=merchant_data', function (data) {
-         data = JSON.parse(data)
-         if (default_no_mch) {
-           for (let index = 0; index < default_no_mch.length; index++) {
-             for (let j = 0; j < data.length; j++) {
-               if (default_no_mch[index] === data[j].value) {
-                 data[j].selected = true
-               }
-             }
-           }
-         }
-         selest_nc = xmSelect.render({
-           el: '#selest_nc',
-           size: 'mini',
-           filterable: true,
-           autoRow: true,
-           height: '500px',
-           style: {
-             minHeight: '27px',
-             lineHeight: '27px',
-             marginLeft: '4px'
-           },
-           language: 'zn',
-           data: data
-         })
-        })
         let isWring = '<?php echo $output['count'][1];?>';
         let setTimer
         let num
@@ -571,20 +553,12 @@
 
         // 导出
         $('#ncexport').click(function () {
-            $('input[name="export"]').val('1');
-            $('input[name="op"]').val('index');
-            // 不包含客户
-            let selectArr = selest_nc.getValue();
-            let selectStr = ''
-            for (let i = 0; i < selectArr.length; i++) {
-                selectStr += selectArr[i].value+','
-            }
-            selectStr = selectStr.substr(0, selectStr.length-1)
-            $('input[name="no_mchid"]').val(selectStr);
+            const $export = $('input[name="export"]');
+            $export.val('1');
             $('#formSearch').submit();
-            $('input[name="export"]').val('');
+            $export.val('');
             let ii = layer.load();
-            setTimeout(function(){
+            setTimeout(function () {
                 layer.close(ii);
             }, 800);
         });

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

@@ -247,4 +247,31 @@ class refill_orderModel extends Model
         }
         return $stats;
     }
+
+    public function getAllMonitorTransferOrders($condition)
+    {
+        $len = 1000;
+
+        $i = 0;
+        $orders = [];
+        $cur_time = time();
+        while (true)
+        {
+            $start = $i * $len;
+            $items = $this->table('refill_order,vr_order,merchant')
+                ->field("refill_order.*,vr_order.order_state,({$cur_time} - refill_order.order_time - merchant.time_out) as mtime_out")
+                ->join('inner,inner')
+                ->on('refill_order.order_id=vr_order.order_id,refill_order.mchid=merchant.mchid')
+                ->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;
+    }
 }