request->userInfo; // 获取查询参数 $page = Request::get('page', 1, 'intval'); $limit = Request::get('limit', 20, 'intval'); // 筛选条件 $filters = [ // 时间筛选 'start_time' => Request::get('start_time', '', 'trim'), 'end_time' => Request::get('end_time', '', 'trim'), // 游戏筛选 'game_id' => Request::get('game_id', '', 'trim'), // 订单原因筛选 'order_reason' => Request::get('order_reason', '', 'trim'), // 平台ID筛选 'platform_id' => Request::get('platform_id', '', 'trim'), // 订单状态筛选 'order_status' => Request::get('order_status', ''), // 订单编号筛选 'order_number' => Request::get('order_number', '', 'trim'), // 母单号筛选 'parent_order' => Request::get('parent_order', '', 'trim'), // 牌局编号筛选 'round_number' => Request::get('round_number', '', 'trim'), ]; try { $result = GameOrderModel::getOrderRecords($userInfo['merchant_id'], $page, $limit, $filters); return json_success($result, '获取成功'); } catch (\Exception $e) { return json_error([], '获取订单记录失败:' . $e->getMessage()); } } /** * 获取订单详情 */ public function detail() { $userInfo = $this->request->userInfo; $id = Request::get('id', 0, 'intval'); if (!$id) { return json_error([], '订单ID不能为空'); } try { $order = GameOrderModel::getOrderDetail($id, $userInfo['merchant_id']); if (!$order) { return json_error([], '订单不存在'); } return json_success($order, '获取成功'); } catch (\Exception $e) { return json_error([], '获取订单详情失败:' . $e->getMessage()); } } /** * 获取订单统计信息 */ public function statistics() { $userInfo = $this->request->userInfo; // 筛选条件 $filters = [ 'start_time' => Request::get('start_time', '', 'trim'), 'end_time' => Request::get('end_time', '', 'trim'), ]; // 如果没有指定时间范围,默认获取今天 if (empty($filters['start_time']) && empty($filters['end_time'])) { $filters['start_time'] = date('Y-m-d'); $filters['end_time'] = date('Y-m-d'); } try { $statistics = GameOrderModel::getOrderStatistics($userInfo['merchant_id'], $filters); return json_success([ 'statistics' => $statistics, 'date_range' => [ 'start_time' => $filters['start_time'], 'end_time' => $filters['end_time'] ] ], '获取成功'); } catch (\Exception $e) { return json_error([], '获取统计信息失败:' . $e->getMessage()); } } /** * 获取游戏列表(用于筛选下拉框) */ public function getGames() { $userInfo = $this->request->userInfo; try { $gameIds = GameOrderModel::getAllGameIds($userInfo['merchant_id']); // 构建游戏列表 $games = []; foreach ($gameIds as $gameId) { $games[] = [ 'game_id' => $gameId, 'game_name' => $this->getGameName($gameId) ]; } return json_success($games, '获取成功'); } catch (\Exception $e) { return json_error([], '获取游戏列表失败:' . $e->getMessage()); } } /** * 获取订单原因列表(用于筛选下拉框) */ public function getOrderReasons() { try { $reasons = [ ['reason_id' => GameOrderModel::ACTION_TYPE_BET, 'reason_name' => '下注'], ['reason_id' => GameOrderModel::ACTION_TYPE_SETTLE, 'reason_name' => '结算'], ['reason_id' => GameOrderModel::ACTION_TYPE_CANCEL, 'reason_name' => '取消'], ]; return json_success($reasons, '获取成功'); } catch (\Exception $e) { return json_error([], '获取订单原因列表失败:' . $e->getMessage()); } } /** * 导出订单记录 */ public function export() { $userInfo = $this->request->userInfo; // 筛选条件 $filters = [ 'start_time' => Request::get('start_time', '', 'trim'), 'end_time' => Request::get('end_time', '', 'trim'), 'game_id' => Request::get('game_id', '', 'trim'), 'order_reason' => Request::get('order_reason', '', 'trim'), 'platform_id' => Request::get('platform_id', '', 'trim'), 'order_status' => Request::get('order_status', ''), 'order_number' => Request::get('order_number', '', 'trim'), 'parent_order' => Request::get('parent_order', '', 'trim'), 'round_number' => Request::get('round_number', '', 'trim'), ]; try { // 获取所有符合条件的数据(不分页) $result = GameOrderModel::getOrderRecords($userInfo['merchant_id'], 1, 100000, $filters); // 生成CSV数据 $csvData = "序号,母单号,子单号,牌局编号,平台昵称,玩家ID,所属商户,平台ID," . "游戏名称,变动金额,变更前,变更后,下注金额,总变动金额," . "总变动金额,最后结算金额,状态,原因,创建时间\n"; foreach ($result['list'] as $index => $order) { $csvData .= sprintf( "%d,%s,%s,%s,%s,%d,%s,%d,%s,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%s,%s,%s\n", $index + 1, // 序号 $order['third_gid'], // 母单号 $order['third_order_id'], // 子单号 $order['third_round_id'], // 牌局编号 $order['nickname'], // 平台昵称 $order['uname'], // 玩家ID $userInfo['merchant_id'], // 所属商户 $order['user_id'], // 平台ID $order['game_name'], // 游戏名称 $order['amount'], // 变动金额 $order['prev_amount'], // 变更前 $order['next_amount'], // 变更后 $order['bet'], // 下注金额 $order['total_win_amount'], // 总变动金额 $order['total_amount'], // 总变动金额 $order['next_amount'], // 最后结算金额 $order['status_text'], // 状态 $order['action_type_text'], // 原因 $order['create_time'], // 创建时间 ); } // 返回CSV数据 return response($csvData) ->header(['Content-Type' => 'text/csv; charset=utf-8']) ->header(['Content-Disposition' => 'attachment; filename="game_orders_' . date('YmdHis') . '.csv"']) ->header(['Cache-Control' => 'no-cache, must-revalidate']); } catch (\Exception $e) { return json_error([], '导出订单记录失败:' . $e->getMessage()); } } /** * 获取游戏名称 */ private function getGameName($gameId) { // 这里可以根据实际情况配置游戏ID对应的名称 $gameNames = [ 'tiger' => '老虎机', 'fortune_tiger' => '财富老虎', 'dragon_tiger' => '龙虎斗', 'baccarat' => '百家乐', // 可以继续添加其他游戏 ]; return $gameNames[$gameId] ?? $gameId; } }