0 && $end_unixtime > $start_unixtime) { $condition['time_stamp'] = [['egt', $start_unixtime], ['lt', $end_unixtime], 'and']; } elseif ($start_unixtime > 0) { $condition['time_stamp'] = ['egt', $start_unixtime]; } elseif ($end_unixtime > 0) { $condition['time_stamp'] = ['lt', $end_unixtime]; } $stats_list = $model_refill_order->getOrderStatsList($condition, 50, '*', 'time_stamp desc, cname asc'); if($type == 'merchant') { foreach ($stats_list as $key => $stats) { $time = date("Y-m-d",$stats['time_stamp']+86400); $mch_cache = rcache("merchant_balance_{$time}", 'refill-'); $caches = empty($mch_cache['data']) ? [] : unserialize($mch_cache['data']); if(empty($caches)) continue; $stats_list[$key]['available'] = ncPriceFormat($caches[$stats['cid']]) ?? ''; } } $total_stats = $this->stats($condition); $order_time_type_text = ['notify_time' => '回调时间', 'order_time' => '下单时间']; Tpl::output('total_stats', $total_stats); Tpl::output('stats_list', $stats_list); Tpl::output('order_time_type_text', $order_time_type_text); Tpl::output('show_page', $model_refill_order->showpage()); Tpl::showpage($page); } public function ExportDataOp() { $type = $_GET['type'] ?? 'system'; $model_refill_order = Model('refill_order'); $condition['type'] = $type; if (!empty($_GET['cid'])) { $condition['cid'] = ['in', $_GET['cid']]; } if (!empty($_GET['order_time_type'])) { $condition['order_time_type'] = $_GET['order_time_type']; } $start_unixtime = intval($_GET['query_start_time']); $end_unixtime = intval($_GET['query_end_time']); if ($start_unixtime > 0 && $end_unixtime > $start_unixtime) { $condition['time_stamp'] = [['egt', $start_unixtime], ['lt', $end_unixtime], 'and']; } elseif ($start_unixtime > 0) { $condition['time_stamp'] = ['egt', $start_unixtime]; } elseif ($end_unixtime > 0) { $condition['time_stamp'] = ['lt', $end_unixtime]; } $stats_list = $this->all_orderstats_data($condition); $total_stats = $this->stats($condition); $stats = $total_stats[$_GET['order_time_type']]; if(empty($stats)) { $stats = $total_stats['notify_time']; } $result['data'] = $stats_list; $result['total_stats'] = $stats; echo(json_encode($result)); } private function stats($condition) { $order_time_type = ['notify_time','order_time']; foreach ($order_time_type as $type){ $condition['order_time_type'] = $type; $stats = Model('')->table('refill_stats') ->field('sum(success_count) as success_count,sum(success_refill_amounts) as success_refill_amounts,sum(success_mch_amounts) as success_mch_amounts, sum(success_channel_amounts) as success_channel_amounts,sum(profit_amounts) as profit_amounts,sum(send_count) as send_count') ->where($condition) ->find(); $total_stats[$type] = [ 'success_count_total' => $stats['success_count'], 'success_refill_amounts_total' => ncPriceFormat($stats['success_refill_amounts']), 'success_mch_amounts_toatl' => ncPriceFormat($stats['success_mch_amounts']), 'success_channel_amounts_total' => ncPriceFormat($stats['success_channel_amounts']), 'profit_amounts_total' => ncPriceFormat($stats['profit_amounts']), 'send_count_total' => $stats['send_count'], ]; } return $total_stats; } private function all_orderstats_data($condition): array { $i = 0; $result = []; while (true) { $start = $i * 1000; $list = Model('')->table('refill_stats')->field('*') ->where($condition)->order('time_stamp desc')->limit("{$start},1000")->select(); if (empty($list)) { break; } $i++; foreach ($list as $value) { $result[] = $value; } } return $result; } }