param('student_id', 0); $page = $request->param('page', 1); $limit = $request->param('limit', 10); // 验证学员ID if (empty($student_id)) { return fail('学员ID不能为空'); } $where = [ 'student_id' => $student_id, 'resource_id' => '', 'staff_id' => '' ]; $orderService = new OrderTableService(); $result = $orderService->getList($where); // 处理返回数据格式,确保与前端期望一致 $data = [ 'data' => $result['data'] ?? [], 'current_page' => $result['current_page'] ?? $page, 'last_page' => $result['last_page'] ?? 1, 'total' => $result['total'] ?? 0, 'per_page' => $limit ]; return success($data, '获取成功'); } catch (\Exception $e) { return fail('获取订单列表失败: ' . $e->getMessage()); } } /** * 获取学员订单详情 * @param Request $request * @return Response */ public function getOrderDetail(Request $request): Response { try { $order_id = $request->param('id', 0); $student_id = $request->param('student_id', 0); // 验证参数 if (empty($order_id)) { return fail('订单ID不能为空'); } if (empty($student_id)) { return fail('学员ID不能为空'); } $where = [ 'student_id' => $student_id, 'resource_id' => '', 'staff_id' => '' ]; $orderService = new OrderTableService(); $result = $orderService->getInfo($where); if (!$result['code']) { return fail($result['msg']); } // 验证订单是否属于该学员 if ($result['data']['student_id'] != $student_id) { return fail('无权查看此订单'); } return success($result['data'], '获取成功'); } catch (\Exception $e) { return fail('获取订单详情失败: ' . $e->getMessage()); } } /** * 获取学员订单统计 * @param Request $request * @return Response */ public function getOrderStats(Request $request): Response { try { $student_id = $request->param('student_id', 0); // 验证学员ID if (empty($student_id)) { return fail('学员ID不能为空'); } // 注意:这里会获取所有订单用于统计,可能需要优化 $where = [ 'student_id' => $student_id, 'resource_id' => '', 'staff_id' => '' ]; $orderService = new OrderTableService(); $result = $orderService->getList($where); $orders = $result['data'] ?? []; // 统计各状态订单数量 $stats = [ 'total_orders' => count($orders), 'pending_payment' => 0, 'paid' => 0, 'completed' => 0, 'cancelled' => 0, 'refunded' => 0 ]; foreach ($orders as $order) { $status = $order['order_status'] ?? 'pending'; switch ($status) { case 'pending': $stats['pending_payment']++; break; case 'paid': $stats['paid']++; break; case 'completed': $stats['completed']++; break; case 'cancelled': $stats['cancelled']++; break; case 'refunded': $stats['refunded']++; break; } } return success($stats, '获取成功'); } catch (\Exception $e) { return fail('获取订单统计失败: ' . $e->getMessage()); } } }