$method, 'action' => $action, 'params' => $params ]; } /** * 发送JSON响应 * @param mixed $data 要发送的数据 * @param int $statusCode HTTP状态码(默认200) */ protected function sendResponse($data, $statusCode = 200) { http_response_code($statusCode); echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); } /** * 发送错误响应 * @param string $message 错误信息 * @param int $statusCode HTTP状态码(默认400) */ protected function sendError($message, $statusCode = 400) { $this->sendResponse([ 'success' => false, 'message' => $message ], $statusCode); } /** * 发送成功响应 * @param mixed $data 响应数据(默认空数组) * @param string $message 成功信息(默认空字符串) */ protected function sendSuccess($data = [], $message = '') { $response = [ 'success' => true ]; if (!empty($data)) { $response['data'] = $data; } if (!empty($message)) { $response['message'] = $message; } $this->sendResponse($response); } /** * 处理OPTIONS请求 */ protected function handleOptionsRequest() { if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); } } /** * 记录操作日志 * @param string $action 操作类型 * @param array $data 操作数据 * @param string $logFile 日志文件路径 */ protected function logOperation($action, $data = [], $logFile = 'data/operation_log.json') { require_once 'FileManager.php'; // 加载现有日志 $logData = FileManager::loadJsonFile($logFile, ['operations' => []]); // 添加新日志条目 $logEntry = [ 'timestamp' => date('Y-m-d H:i:s'), 'action' => $action, 'data' => $data, 'ip' => $_SERVER['REMOTE_ADDR'] ?? 'unknown' ]; array_unshift($logData['operations'], $logEntry); // 限制日志数量(保留最新的500条) if (count($logData['operations']) > 500) { $logData['operations'] = array_slice($logData['operations'], 0, 500); } // 保存日志 FileManager::saveJsonFile($logFile, $logData); } /** * 获取操作日志 * @param int $limit 日志数量限制(默认20) * @param string $logFile 日志文件路径 * @return array 日志数据 */ protected function getOperationLog($limit = 20, $logFile = 'data/operation_log.json') { require_once 'FileManager.php'; $logData = FileManager::loadJsonFile($logFile, ['operations' => []]); $operations = $logData['operations'] ?? []; // 限制返回的日志数量 if (count($operations) > $limit) { $operations = array_slice($operations, 0, $limit); } return ['success' => true, 'operations' => $operations]; } } ?>