diff --git a/admin/chat.php b/admin/chat.php index 93de82e..66489b7 100644 --- a/admin/chat.php +++ b/admin/chat.php @@ -1,203 +1,147 @@ prepare("INSERT INTO messages (user_id, sender, message) VALUES (?, 'admin', ?)"); - $stmt->execute([$uid, $msg]); - } - header("Location: chat.php?user_id = " . $uid); +// Handle deletion of chat +if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['delete_user_id'])) { + $del_id = $_GET['delete_user_id']; + // Delete messages + $pdo->prepare("DELETE FROM messages WHERE user_id = ?")->execute([$del_id]); + // Optionally update orders to not show in chat (e.g., mark as rejected or hidden if they are just 'matching') + $pdo->prepare("UPDATE fiat_orders SET status = 'rejected' WHERE user_id = ? AND status IN ('matching', 'submitting')")->execute([$del_id]); + header("Location: chat.php"); exit; } -// Handle setting bank info -if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['bank_info']) && isset($_POST['order_id'])) { - $info = $_POST['bank_info']; - $oid = $_POST['order_id']; - $uid = $_POST['user_id']; - $stmt = db()->prepare("UPDATE fiat_orders SET bank_account_info = ? WHERE id = ?"); - $stmt->execute([$info, $oid]); - - // Also send as a chat message - $msg = "I have matched a bank account for your deposit. Please check the matching page.\n\nAccount Info:\n" . $info; - $stmt = db()->prepare("INSERT INTO messages (user_id, sender, message) VALUES (?, 'admin', ?)"); - $stmt->execute([$uid, $msg]); - - header("Location: chat.php?user_id = " . $uid); - exit; -} +$user_id = $_GET['user_id'] ?? null; +$unread_msgs = $pdo->query("SELECT COUNT(*) FROM messages WHERE sender = 'user' AND is_read = 0")->fetchColumn(); +$pending_orders = $pdo->query("SELECT COUNT(*) FROM fiat_orders WHERE status IN ('matching', 'submitting')")->fetchColumn(); -// Fetch all users who have sent messages -$users = db()->query(" - SELECT u.id, u.username, u.uid, MAX(m.created_at) as last_message, - (SELECT COUNT(*) FROM messages WHERE user_id = u.id AND sender = 'user' AND is_read = 0) as unread_count +// Fetch users with messages or active recharge orders +$chat_users = $pdo->query(" + SELECT DISTINCT u.id, u.username, u.uid, + (SELECT message FROM messages WHERE user_id = u.id ORDER BY id DESC LIMIT 1) as last_msg, + (SELECT created_at FROM messages WHERE user_id = u.id ORDER BY id DESC LIMIT 1) as last_time, + (SELECT COUNT(*) FROM messages WHERE user_id = u.id AND sender = 'user' AND is_read = 0) as unread_count, + (SELECT status FROM fiat_orders WHERE user_id = u.id AND status IN ('matching', 'submitting') LIMIT 1) as recharge_status FROM users u JOIN messages m ON u.id = m.user_id - GROUP BY u.id - ORDER BY last_message DESC + UNION + SELECT DISTINCT u.id, u.username, u.uid, + '发起充值匹配申请' as last_msg, + o.created_at as last_time, + 0 as unread_count, + o.status as recharge_status + FROM users u + JOIN fiat_orders o ON u.id = o.user_id + WHERE o.status IN ('matching', 'submitting') + ORDER BY last_time DESC ")->fetchAll(); -$messages = []; -$pending_order = null; -if ($selected_user_id) { - db()->prepare("UPDATE messages SET is_read = 1 WHERE user_id = ? AND sender = 'user'")->execute([$selected_user_id]); - $stmt = db()->prepare("SELECT * FROM messages WHERE user_id = ? ORDER BY created_at ASC"); - $stmt->execute([$selected_user_id]); - $messages = $stmt->fetchAll(); - - // Check for pending fiat order - $stmt = db()->prepare("SELECT * FROM fiat_orders WHERE user_id = ? AND bank_account_info IS NULL ORDER BY created_at DESC LIMIT 1"); - $stmt->execute([$selected_user_id]); - $pending_order = $stmt->fetch(); -} ?> - + - NovaEx CS Workbench + 客服管理 - NovaEx 管理后台 - -