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();
-}
?>
-
+
-
- 0):
- // The original code had $u['unread_count']
- // The new code has $u['unread_count']
- // No change needed here as it's already correctly escaped.
- ?>
-
-
-
diff --git a/admin/orders.php b/admin/orders.php
index 7a75b44..1c28f46 100644
--- a/admin/orders.php
+++ b/admin/orders.php
@@ -13,8 +13,7 @@ if (isset($_POST['action'])) {
$column = ($table === 'fiat_orders') ? 'bank_account_info' : 'account_info';
$pdo->prepare("UPDATE $table SET status = 'matched', $column = ? WHERE id = ?")->execute([$info, $id]);
- // Also send a chat message to the user automatically
- $orderStmt = $pdo->prepare("SELECT user_id, amount, currency FROM $table WHERE id = ?");
+ $orderStmt = $pdo->prepare("SELECT user_id FROM $table WHERE id = ?");
$orderStmt->execute([$id]);
$order = $orderStmt->fetch();
if ($order) {
@@ -22,7 +21,7 @@ if (isset($_POST['action'])) {
$pdo->prepare("INSERT INTO messages (user_id, sender, message) VALUES (?, 'admin', ?)")->execute([$order['user_id'], $msg]);
}
} elseif ($_POST['action'] == 'complete') {
- $orderStmt = $pdo->prepare("SELECT user_id, amount FROM $table WHERE id = ?");
+ $orderStmt = $pdo->prepare("SELECT user_id, amount, currency FROM $table WHERE id = ?");
$orderStmt->execute([$id]);
$order = $orderStmt->fetch();
if ($order) {
@@ -35,18 +34,12 @@ if (isset($_POST['action'])) {
} elseif ($_POST['action'] == 'reject') {
$pdo->prepare("UPDATE $table SET status = 'rejected' WHERE id = ?")->execute([$id]);
}
-
- if ($_POST['action'] == 'set_win_loss') {
- $win_loss = $_POST['win_loss'];
- $pdo->prepare("UPDATE trading_orders SET win_loss = ? WHERE id = ?")->execute([$win_loss, $id]);
- }
}
$fiat_orders = $pdo->query("SELECT o.*, u.username, u.uid, 'fiat' as tbl FROM fiat_orders o JOIN users u ON o.user_id = u.id ORDER BY o.id DESC")->fetchAll();
$usdt_orders = $pdo->query("SELECT o.*, u.username, u.uid, 'usdt' as tbl FROM orders o JOIN users u ON o.user_id = u.id ORDER BY o.id DESC")->fetchAll();
$all_deposits = array_merge($fiat_orders, $usdt_orders);
-// Sort so 'matching' and 'submitting' are at the top
usort($all_deposits, function($a, $b) {
$priority = ['matching' => 3, 'submitting' => 2, 'pending' => 2, 'matched' => 1, 'completed' => 0];
$pA = $priority[$a['status']] ?? 0;
@@ -55,12 +48,14 @@ usort($all_deposits, function($a, $b) {
return $b['id'] - $a['id'];
});
-$trading_orders = $pdo->query("SELECT o.*, u.username, u.uid FROM trading_orders o JOIN users u ON o.user_id = u.id ORDER BY o.id DESC LIMIT 50")->fetchAll();
+$unread_msgs = $pdo->query("SELECT COUNT(*) FROM messages WHERE sender = 'user' AND is_read = 0")->fetchColumn();
+$pending_orders_count = $pdo->query("SELECT COUNT(*) FROM fiat_orders WHERE status IN ('matching', 'submitting')")->fetchColumn();
?>
-
+
- Admin - Order Management
+
+ 充值管理 - NovaEx 管理后台