加码
This commit is contained in:
parent
e1da173526
commit
07ad4b74fb
@ -143,7 +143,7 @@ try {
|
|||||||
$role = $stmt->fetchColumn();
|
$role = $stmt->fetchColumn();
|
||||||
$sender = ($role === 'admin') ? 'admin' : 'user';
|
$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]);
|
$stmt->execute([$target_user_id, $sender, $message]);
|
||||||
echo json_encode(['code' => 0, 'msg' => '已发送']);
|
echo json_encode(['code' => 0, 'msg' => '已发送']);
|
||||||
break;
|
break;
|
||||||
@ -159,9 +159,9 @@ try {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($isAdmin && (int)$target_user_id !== (int)$_SESSION['user_id']) {
|
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) {
|
} 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");
|
$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
|
// Optimized query to get last message reliably
|
||||||
$stmt = $pdo->query("
|
$stmt = $pdo->query("
|
||||||
SELECT u.id, u.username, m.message as last_message, m.created_at as last_time,
|
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
|
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 (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
|
JOIN support_messages m ON m.id = last_msg_idx.max_id
|
||||||
@ -195,14 +195,14 @@ try {
|
|||||||
SELECT m.*, u.username
|
SELECT m.*, u.username
|
||||||
FROM support_messages m
|
FROM support_messages m
|
||||||
JOIN users u ON m.user_id = u.id
|
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
|
ORDER BY m.id DESC LIMIT 1
|
||||||
");
|
");
|
||||||
$last_unread = $stmt->fetch(PDO::FETCH_ASSOC);
|
$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'] ?? '']);
|
echo json_encode(['code' => 0, 'unread_total' => $total_unread, 'last_user' => $last_unread['username'] ?? '']);
|
||||||
} else {
|
} 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']]);
|
$stmt->execute([$_SESSION['user_id']]);
|
||||||
echo json_encode(['code' => 0, 'unread_total' => $stmt->fetchColumn()]);
|
echo json_encode(['code' => 0, 'unread_total' => $stmt->fetchColumn()]);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS recharges (
|
|||||||
txid VARCHAR(255),
|
txid VARCHAR(255),
|
||||||
status ENUM('pending', 'completed', 'rejected') DEFAULT 'pending',
|
status ENUM('pending', 'completed', 'rejected') DEFAULT 'pending',
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
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 (
|
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',
|
status ENUM('pending', 'received', 'canceled', 'expired') DEFAULT 'pending',
|
||||||
expire_at TIMESTAMP NULL,
|
expire_at TIMESTAMP NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
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 (
|
CREATE TABLE IF NOT EXISTS settings (
|
||||||
@ -43,8 +43,9 @@ CREATE TABLE IF NOT EXISTS support_messages (
|
|||||||
user_id INT NOT NULL,
|
user_id INT NOT NULL,
|
||||||
sender ENUM('user', 'admin') NOT NULL,
|
sender ENUM('user', 'admin') NOT NULL,
|
||||||
message TEXT NOT NULL,
|
message TEXT NOT NULL,
|
||||||
|
is_read TINYINT(1) DEFAULT 0,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
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
|
-- Default Settings
|
||||||
@ -60,4 +61,4 @@ ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value);
|
|||||||
-- Default Admin (admin / admin123)
|
-- Default Admin (admin / admin123)
|
||||||
INSERT INTO users (username, password_hash, role) VALUES
|
INSERT INTO users (username, password_hash, role) VALUES
|
||||||
('admin', '$2y$10$QbKYSCqJI0WQLyf6NNSML.ukYrOZ0MdY61ZpK7Ekn5QQ/A9oDr.hu', 'admin')
|
('admin', '$2y$10$QbKYSCqJI0WQLyf6NNSML.ukYrOZ0MdY61ZpK7Ekn5QQ/A9oDr.hu', 'admin')
|
||||||
ON DUPLICATE KEY UPDATE role = 'admin';
|
ON DUPLICATE KEY UPDATE role = 'admin';
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user