mchid(); $cond['inner_status'] = 0; if (!empty($_GET['card_type'])) { if(in_array($_GET['card_type'] , ['1' , '2' , '4' , '5' , '6'])) { $cond['refill_order.card_type'] = $_GET['card_type']; } if($_GET['card_type'] == 'oil') { $cond['refill_order.card_type'] = ['in' , ['1' , '2']]; } if($_GET['card_type'] == 'phone') { $cond['refill_order.card_type'] = ['in' , ['4' , '5' , '6']]; } } if (!empty($_GET['card_no'])) { $cond['refill_order.card_no'] = $_GET['card_no']; } if (!empty($_GET['refill_amount'])) { $cond['refill_order.refill_amount'] = $_GET['refill_amount']; } if (!empty($_GET['mch_order'])) { $cond['refill_order.mch_order'] = $_GET['mch_order']; } if (!empty($_GET['order_sn'])) { $cond['refill_order.order_sn'] = $_GET['order_sn']; } if (in_array($_GET['order_state'], array('0', '30', '40'))) { $cond['vr_order.order_state'] = $_GET['order_state']; if($_GET['order_state'] == 30 && $_GET['time'] == 1){ $cond['refill_order.order_time'] = ['lt', (time() - 3600)]; } } if ($_GET['start_time'] > 0 && $_GET['end_time'] > 0) { $cond['refill_order.order_time'] = ['time', [$_GET['start_time'], $_GET['end_time']]]; } $fields = 'refill_order.*,vr_order.order_state'; $order_list = $model_vr_order->getMerchantOrderList($cond, $this->page, $fields, 'refill_order.order_id desc'); $order_list = $this->merchant_order_format($order_list); $result['data'] = $order_list; $result['total'] = $model_vr_order->gettotalpage(); return self::outsuccess($result); } private function merchant_order_format($orders) { $data = []; foreach ($orders as $order) { if($order['notify_time'] > 0) { $order['diff_time_text'] = $this->elapse_time($order['notify_time'] - $order['order_time']); $order['diff_time'] = $order['notify_time'] - $order['order_time']; } else { $order['diff_time_text'] = $this->elapse_time(time() - $order['order_time']); $order['diff_time'] = time() - $order['order_time']; } if (isset($order['order_time'])) { $order['order_time'] = date('Y-m-d H:i:s', $order['order_time']); } if (isset($order['notify_time'])) { $order['notify_time'] = date('Y-m-d H:i:s', $order['notify_time']); } if($order['channel_name'] != 'bjb') { $order['ch_trade_no'] = ''; } if($order['is_retrying'] == 1) { $order['order_state'] = 'retrying'; } if ($order['order_state'] == ORDER_STATE_NEW || $order['order_state'] == ORDER_STATE_PAY) { $order['order_state'] = ORDER_STATE_SEND; } $order['order_state_text'] = $this->_orderState($order['order_state']); $order['card_type_name'] = $this->scard_type($order['card_type']); $data[] = $order; } return $data; } /** * 取得订单状态文字输出形式 * * @param int $order_state 订单数组 * @return string */ private function _orderState($order_state) { switch ($order_state) { case ORDER_STATE_CANCEL: $text = '已取消'; break; case ORDER_STATE_NEW: $text = '新订单'; break; case ORDER_STATE_SEND: $text = '充值中'; break; case ORDER_STATE_PAY: $text = '支付成功'; break; case ORDER_STATE_SUCCESS: $text = '充值成功'; break; case 'retrying': $text = '重试中'; break; default: $text = '未知状态'; } return $text; } private function scard_type(int $card_type) { if ($card_type == mtopcard\PetroChinaCard) { //中石油 return '中石油'; } elseif ($card_type == mtopcard\SinopecCard) { //中石化 return '中石化'; } elseif ($card_type == mtopcard\ChinaMobileCard) { //中国移动 return '中国移动'; } elseif ($card_type == mtopcard\ChinaUnicomCard) { //中国联通 return '中国联通'; } elseif ($card_type == mtopcard\ChinaTelecomCard) { //中国电信 return '中国电信'; } else { return 'unknown'; } } private function elapse_time($seconds) { $minutes = intval($seconds / 60); $second = intval($seconds % 60); if($minutes >= 60) { $minute = $minutes % 60; $hours = intval($minutes / 60); $result = "{$minute}:{$second}"; } else { if($minutes > 0){ $result = "{$minutes}:{$second}"; }else{ $result = "{$second}"; } } if(isset($hours)) { $result = "{$hours}:" . $result; } return $result; } }