|
@@ -80,11 +80,11 @@ class TestExportOrder extends TestCase
|
|
|
$model_refill_task = Model('refill_task');
|
|
|
|
|
|
$task = $model_refill_task->TaskUnDispose('order_export');
|
|
|
- if(empty($task)) return false;
|
|
|
+ if (empty($task)) return false;
|
|
|
|
|
|
$task_id = $task['task_id'];
|
|
|
$task_condition = unserialize($task['task_condition']);
|
|
|
- if(empty($task_condition)) {
|
|
|
+ if (empty($task_condition)) {
|
|
|
Log::record("refill task condition unserialize err, task_id:{$task_id}");
|
|
|
return false;
|
|
|
}
|
|
@@ -92,57 +92,76 @@ class TestExportOrder extends TestCase
|
|
|
$type = $task['type'];
|
|
|
$cid = $task['cid'];
|
|
|
if ($type === 'merchant') {
|
|
|
- $task_condition['refill_order.mchid'] = $cid;
|
|
|
+ $condition['refill_order.mchid'] = $cid;
|
|
|
} elseif ($type === 'provider') {
|
|
|
- $task_condition['vr_order.store_id'] = $cid;
|
|
|
+ $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->TaskDispose($task_id);
|
|
|
- [$state,$task_result] = $this->order_export($task_condition, $type, $task_id);
|
|
|
- if($state) {
|
|
|
+ [$state, $task_result] = $this->order_export($condition, $type, $task_id);
|
|
|
+ if ($state) {
|
|
|
$model_refill_task->TaskDisposeFinish($task_id, $task_result);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
$model_refill_task->TaskDisposeErr($task_id, $task_result);
|
|
|
}
|
|
|
-
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @throws PHPExcel_Exception
|
|
|
+ */
|
|
|
private function order_export($condition, $type, $task_id)
|
|
|
{
|
|
|
$orders = $this->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'];
|
|
|
+ } else {
|
|
|
+ return [false, '主体类型错误'];
|
|
|
+ }
|
|
|
+
|
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
|
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial')->setSize(10);
|
|
|
- $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
|
|
|
- $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
|
|
|
- $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
|
|
|
- $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
|
|
|
- $objPHPExcel->getActiveSheet()
|
|
|
- ->setCellValue('A1', '第一列')
|
|
|
- ->setCellValue('B1', '第二列')
|
|
|
- ->setCellValue('C1', '第三列')
|
|
|
- ->setCellValue('D1', '第四列');
|
|
|
+ foreach ($column_keys as $key => $column_key) {
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension($column_key)->setWidth(25);
|
|
|
+ $cell_value = $column_key . 1;
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue($cell_value, $column_values[$key]);
|
|
|
+ }
|
|
|
|
|
|
foreach ($orders as $k => $order) {
|
|
|
- $field1 = 'A'.($k+2);
|
|
|
- $objPHPExcel->getActiveSheet()->setCellValueExplicit($field1, $order['order_id'],
|
|
|
- PHPExcel_Cell_DataType::TYPE_STRING);
|
|
|
-
|
|
|
- $field2 = 'B'.($k+2);
|
|
|
- $objPHPExcel->getActiveSheet()->setCellValueExplicit($field2, $order['order_sn'],
|
|
|
- PHPExcel_Cell_DataType::TYPE_STRING);
|
|
|
-
|
|
|
- $field3 = 'C'.($k+2);
|
|
|
- $objPHPExcel->getActiveSheet()->setCellValueExplicit($field3, $order['card_no'],
|
|
|
- PHPExcel_Cell_DataType::TYPE_STRING);
|
|
|
-
|
|
|
- $field4 = 'D'.($k+2);
|
|
|
- $objPHPExcel->getActiveSheet()->setCellValueExplicit($field4,$order['mch_order'],
|
|
|
- PHPExcel_Cell_DataType::TYPE_STRING);
|
|
|
+ foreach ($column_keys as $key => $column_key) {
|
|
|
+ $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/";
|
|
@@ -187,6 +206,46 @@ class TestExportOrder extends TestCase
|
|
|
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);
|
|
|
+ }
|
|
|
+ return $orders;
|
|
|
+ }
|
|
|
+
|
|
|
public function testStrSer()
|
|
|
{
|
|
|
$str = 'a:4:{s:9:"qualities";a:3:{i:1;a:3:{s:8:"day_secs";i:3600;s:10:"night_secs";i:1800;s:5:"times";i:50;}i:2;a:3:{s:8:"day_secs";i:600;s:10:"night_secs";i:300;s:5:"times";i:10;}i:3;a:3:{s:8:"day_secs";i:900;s:10:"night_secs";i:600;s:5:"times";i:1;}}s:11:"lower_ratio";a:2:{s:5:"ratio";d:0.9;s:6:"period";i:3600;}s:12:"profit_ratio";d:0.03;s:6:"opened";b:1;}';
|