This commit is contained in:
Flatlogic Bot 2026-02-10 14:31:59 +00:00
parent e1da173526
commit 07ad4b74fb
2 changed files with 12 additions and 11 deletions

View File

@ -143,7 +143,7 @@ try {
$role = $stmt->fetchColumn();
$sender = ($role === 'admin') ? 'admin' : 'user';
$stmt = $pdo->prepare("INSERT INTO support_messages (user_id, sender, message, is_read) VALUES (?, ?, ?, 0)");
$stmt = $pdo->prepare("INSERT INTO support_messages (user_id, sender, message, `is_read`) VALUES (?, ?, ?, 0)");
$stmt->execute([$target_user_id, $sender, $message]);
echo json_encode(['code' => 0, 'msg' => '已发送']);
break;
@ -159,9 +159,9 @@ try {
}
if ($isAdmin && (int)$target_user_id !== (int)$_SESSION['user_id']) {
$pdo->prepare("UPDATE support_messages SET is_read = 1 WHERE user_id = ? AND sender = 'user'")->execute([$target_user_id]);
$pdo->prepare("UPDATE support_messages SET `is_read` = 1 WHERE user_id = ? AND sender = 'user'")->execute([$target_user_id]);
} else if (!$isAdmin) {
$pdo->prepare("UPDATE support_messages SET is_read = 1 WHERE user_id = ? AND sender = 'admin'")->execute([$_SESSION['user_id']]);
$pdo->prepare("UPDATE support_messages SET `is_read` = 1 WHERE user_id = ? AND sender = 'admin'")->execute([$_SESSION['user_id']]);
}
$stmt = $pdo->prepare("SELECT * FROM support_messages WHERE user_id = ? ORDER BY id ASC");
@ -177,7 +177,7 @@ try {
// Optimized query to get last message reliably
$stmt = $pdo->query("
SELECT u.id, u.username, m.message as last_message, m.created_at as last_time,
(SELECT COUNT(*) FROM support_messages WHERE user_id = u.id AND sender = 'user' AND is_read = 0) as unread_count
(SELECT COUNT(*) FROM support_messages WHERE user_id = u.id AND sender = 'user' AND `is_read` = 0) as unread_count
FROM users u
JOIN (SELECT user_id, MAX(id) as max_id FROM support_messages GROUP BY user_id) last_msg_idx ON u.id = last_msg_idx.user_id
JOIN support_messages m ON m.id = last_msg_idx.max_id
@ -195,14 +195,14 @@ try {
SELECT m.*, u.username
FROM support_messages m
JOIN users u ON m.user_id = u.id
WHERE m.sender = 'user' AND m.is_read = 0
WHERE m.sender = 'user' AND m.`is_read` = 0
ORDER BY m.id DESC LIMIT 1
");
$last_unread = $stmt->fetch(PDO::FETCH_ASSOC);
$total_unread = $pdo->query("SELECT COUNT(*) FROM support_messages WHERE sender = 'user' AND is_read = 0")->fetchColumn();
$total_unread = $pdo->query("SELECT COUNT(*) FROM support_messages WHERE sender = 'user' AND `is_read` = 0")->fetchColumn();
echo json_encode(['code' => 0, 'unread_total' => $total_unread, 'last_user' => $last_unread['username'] ?? '']);
} else {
$stmt = $pdo->prepare("SELECT COUNT(*) FROM support_messages WHERE user_id = ? AND sender = 'admin' AND is_read = 0");
$stmt = $pdo->prepare("SELECT COUNT(*) FROM support_messages WHERE user_id = ? AND sender = 'admin' AND `is_read` = 0");
$stmt->execute([$_SESSION['user_id']]);
echo json_encode(['code' => 0, 'unread_total' => $stmt->fetchColumn()]);
}

View File

@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS recharges (
txid VARCHAR(255),
status ENUM('pending', 'completed', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS sms_orders (
@ -29,7 +29,7 @@ CREATE TABLE IF NOT EXISTS sms_orders (
status ENUM('pending', 'received', 'canceled', 'expired') DEFAULT 'pending',
expire_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS settings (
@ -43,8 +43,9 @@ CREATE TABLE IF NOT EXISTS support_messages (
user_id INT NOT NULL,
sender ENUM('user', 'admin') NOT NULL,
message TEXT NOT NULL,
is_read TINYINT(1) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Default Settings