false, 'message' => '不支持的请求方法' ]); break; } } catch (Exception $e) { echo json_encode([ 'success' => false, 'message' => '服务器内部错误: ' . $e->getMessage() ]); } /** * 获取联系人列表 * @param Database $db 数据库实例 */ function getContacts($db) { // 获取请求参数 $username = isset($_GET['username']) ? $_GET['username'] : ''; $search = isset($_GET['search']) ? $_GET['search'] : ''; $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $perPage = isset($_GET['perPage']) ? (int)$_GET['perPage'] : 20; // 验证必要参数 if (empty($username)) { echo json_encode([ 'success' => false, 'message' => '缺少用户名参数' ]); return; } // 构建查询条件 $where = "WHERE user_id = ?"; $params = [$username]; if (!empty($search)) { $where .= " AND (name LIKE ? OR email LIKE ? OR phone LIKE ?)"; $searchParam = "%$search%"; $params[] = $searchParam; $params[] = $searchParam; $params[] = $searchParam; } // 计算偏移量 $offset = ($page - 1) * $perPage; // 查询总数 $totalSql = "SELECT COUNT(*) as total FROM contacts $where"; $totalResult = $db->fetchOne($totalSql, $params); $total = $totalResult['total']; // 查询联系人列表 $sql = "SELECT id, name, email, phone, company, department, position, create_time, update_time FROM contacts $where ORDER BY name ASC LIMIT ? OFFSET ?"; $params[] = $perPage; $params[] = $offset; $contacts = $db->fetchAll($sql, $params); // 返回响应 echo json_encode([ 'success' => true, 'data' => [ 'contacts' => $contacts, 'total' => $total, 'page' => $page, 'perPage' => $perPage, 'totalPages' => ceil($total / $perPage) ] ]); } /** * 获取单个联系人详情 * @param Database $db 数据库实例 * @param int $id 联系人ID */ function getContactDetails($db, $id) { // 获取请求参数 $username = isset($_GET['username']) ? $_GET['username'] : ''; // 验证必要参数 if (empty($username)) { echo json_encode([ 'success' => false, 'message' => '缺少用户名参数' ]); return; } // 查询联系人详情 $sql = "SELECT id, name, email, phone, company, department, position, create_time, update_time FROM contacts WHERE id = ? AND user_id = ?"; $contact = $db->fetchOne($sql, [$id, $username]); if ($contact) { echo json_encode([ 'success' => true, 'data' => [ 'contact' => $contact ] ]); } else { echo json_encode([ 'success' => false, 'message' => '联系人不存在或无权访问' ]); } } /** * 添加联系人 * @param Database $db 数据库实例 */ function addContact($db) { // 获取请求数据 $data = json_decode(file_get_contents('php://input'), true); // 验证请求数据 if (!$data || empty($data['username']) || empty($data['name']) || empty($data['email'])) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } $username = $data['username']; // 检查联系人是否已存在 $existingContact = $db->fetchOne("SELECT id FROM contacts WHERE email = ? AND user_id = ?", [$data['email'], $username]); if ($existingContact) { echo json_encode([ 'success' => false, 'message' => '该邮箱已存在于通讯录中' ]); return; } // 插入联系人 $sql = "INSERT INTO contacts (user_id, name, email, phone, company, department, position) VALUES (?, ?, ?, ?, ?, ?, ?)"; $db->insert($sql, [ $username, $data['name'], $data['email'], isset($data['phone']) ? $data['phone'] : '', isset($data['company']) ? $data['company'] : '', isset($data['department']) ? $data['department'] : '', isset($data['position']) ? $data['position'] : '' ]); echo json_encode([ 'success' => true, 'message' => '联系人添加成功' ]); } /** * 编辑联系人 * @param Database $db 数据库实例 */ function editContact($db) { // 获取请求数据 $data = json_decode(file_get_contents('php://input'), true); // 验证请求数据 if (!$data || empty($data['id']) || empty($data['username']) || empty($data['name']) || empty($data['email'])) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } $id = $data['id']; $username = $data['username']; // 检查联系人是否存在 $existingContact = $db->fetchOne("SELECT id FROM contacts WHERE id = ? AND user_id = ?", [$id, $username]); if (!$existingContact) { echo json_encode([ 'success' => false, 'message' => '联系人不存在或无权访问' ]); return; } // 检查邮箱是否已被其他联系人使用 $emailExists = $db->fetchOne("SELECT id FROM contacts WHERE email = ? AND id != ? AND user_id = ?", [$data['email'], $id, $username]); if ($emailExists) { echo json_encode([ 'success' => false, 'message' => '该邮箱已存在于通讯录中' ]); return; } // 更新联系人 $sql = "UPDATE contacts SET name = ?, email = ?, phone = ?, company = ?, department = ?, position = ? WHERE id = ? AND user_id = ?"; $db->update($sql, [ $data['name'], $data['email'], isset($data['phone']) ? $data['phone'] : '', isset($data['company']) ? $data['company'] : '', isset($data['department']) ? $data['department'] : '', isset($data['position']) ? $data['position'] : '', $id, $username ]); echo json_encode([ 'success' => true, 'message' => '联系人编辑成功' ]); } /** * 删除联系人 * @param Database $db 数据库实例 */ function deleteContact($db) { // 获取请求参数 $id = isset($_GET['id']) ? $_GET['id'] : ''; $username = isset($_GET['username']) ? $_GET['username'] : ''; // 验证必要参数 if (empty($id) || empty($username)) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } // 检查联系人是否存在 $existingContact = $db->fetchOne("SELECT id FROM contacts WHERE id = ? AND user_id = ?", [$id, $username]); if (!$existingContact) { echo json_encode([ 'success' => false, 'message' => '联系人不存在或无权访问' ]); return; } // 删除联系人 $sql = "DELETE FROM contacts WHERE id = ? AND user_id = ?"; $db->delete($sql, [$id, $username]); echo json_encode([ 'success' => true, 'message' => '联系人删除成功' ]); }