ziashishi
This commit is contained in:
parent
accdd4c3dc
commit
048b140dfd
@ -627,7 +627,7 @@ document.getElementById('payment-btn').addEventListener('click', () => {
|
||||
});
|
||||
|
||||
async function notifyMatchSuccess() {
|
||||
if (!selectedUser) return;
|
||||
if (selectedUser === null) return;
|
||||
const bank = document.getElementById('pay-bank').value.trim();
|
||||
const name = document.getElementById('pay-name').value.trim();
|
||||
const account = document.getElementById('pay-account').value.trim();
|
||||
@ -639,6 +639,8 @@ async function notifyMatchSuccess() {
|
||||
|
||||
const fd = new URLSearchParams();
|
||||
fd.append('user_id', selectedUser);
|
||||
fd.append('ip_address', selectedIp);
|
||||
fd.append('session_id', selectedSid);
|
||||
fd.append('bank', bank);
|
||||
fd.append('name', name);
|
||||
fd.append('account', account);
|
||||
@ -647,15 +649,17 @@ async function notifyMatchSuccess() {
|
||||
const r = await fetch(apiPath + 'admin_recharge.php?action=match_success&v=' + Date.now(), { method: 'POST', body: fd });
|
||||
const res = await r.json();
|
||||
if (res.success) {
|
||||
alert('匹配成功!状态已更新。若要向用户显示收款账户,请继续点击“发送账户”按钮。');
|
||||
alert('匹配成功!订单状态已更新为“匹配中”。');
|
||||
} else {
|
||||
alert('错误: ' + res.error);
|
||||
alert('匹配失败: ' + res.error);
|
||||
}
|
||||
} catch(err) {}
|
||||
} catch(err) {
|
||||
alert('网络请求失败');
|
||||
}
|
||||
}
|
||||
|
||||
async function sendPaymentInfo() {
|
||||
if (!selectedUser) return;
|
||||
if (selectedUser === null) return;
|
||||
const bank = document.getElementById('pay-bank').value.trim();
|
||||
const name = document.getElementById('pay-name').value.trim();
|
||||
const account = document.getElementById('pay-account').value.trim();
|
||||
@ -667,30 +671,24 @@ async function sendPaymentInfo() {
|
||||
|
||||
const fd = new URLSearchParams();
|
||||
fd.append('user_id', selectedUser);
|
||||
fd.append('ip_address', selectedIp);
|
||||
fd.append('session_id', selectedSid);
|
||||
fd.append('bank', bank);
|
||||
fd.append('name', name);
|
||||
fd.append('account', account);
|
||||
|
||||
try {
|
||||
console.log('Sending account info...', { bank, name, account });
|
||||
const r = await fetch(apiPath + 'admin_recharge.php?action=send_account&v=' + Date.now(), { method: 'POST', body: fd });
|
||||
const res = await r.json();
|
||||
|
||||
if (res.success) {
|
||||
console.log('Account sent successfully');
|
||||
if (paymentModal) paymentModal.hide();
|
||||
// Clear inputs
|
||||
document.getElementById('pay-bank').value = '';
|
||||
document.getElementById('pay-name').value = '';
|
||||
document.getElementById('pay-account').value = '';
|
||||
document.getElementById('pay-note').value = '';
|
||||
alert('账户信息已发送,用户页面将立即显示收款账户');
|
||||
alert('账户信息已发送!用户前端将立即显示收款详情。');
|
||||
fetchMessages();
|
||||
} else {
|
||||
console.error('Send failed:', res.error);
|
||||
alert('发送失败: ' + res.error);
|
||||
}
|
||||
} catch(err) {
|
||||
console.error('Network error:', err);
|
||||
alert('网络请求失败');
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,10 +11,12 @@ if (!isset($_SESSION['admin_id'])) {
|
||||
}
|
||||
|
||||
$action = $_GET['action'] ?? '';
|
||||
$user_id = $_POST['user_id'] ?? null;
|
||||
$user_id = $_REQUEST['user_id'] ?? null;
|
||||
$ip_address = $_REQUEST['ip_address'] ?? '';
|
||||
$session_id = $_REQUEST['session_id'] ?? '';
|
||||
|
||||
if (!$user_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Missing User ID']);
|
||||
if (!isset($user_id) && empty($ip_address)) {
|
||||
echo json_encode(['success' => false, 'error' => 'Missing User ID or IP']);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -22,12 +24,18 @@ try {
|
||||
$db = db();
|
||||
|
||||
// Find the latest pending/matching/account_sent recharge for this user
|
||||
$stmt = $db->prepare("SELECT id FROM finance_requests WHERE user_id = ? AND type = 'recharge' AND status IN ('0', '1', '2', 'pending', 'matched', 'account_sent') ORDER BY created_at DESC LIMIT 1");
|
||||
$stmt->execute([$user_id]);
|
||||
// We try to match by user_id first, then by IP/Session if user_id is 0
|
||||
if ($user_id > 0) {
|
||||
$stmt = $db->prepare("SELECT id FROM finance_requests WHERE user_id = ? AND type = 'recharge' AND status IN ('0', '1', '2', 'pending', 'matched', 'account_sent') ORDER BY id DESC LIMIT 1");
|
||||
$stmt->execute([$user_id]);
|
||||
} else {
|
||||
$stmt = $db->prepare("SELECT id FROM finance_requests WHERE (ip_address = ? OR payment_details = ?) AND type = 'recharge' AND status IN ('0', '1', '2', 'pending', 'matched', 'account_sent') ORDER BY id DESC LIMIT 1");
|
||||
$stmt->execute([$ip_address, $session_id]);
|
||||
}
|
||||
$order_id = $stmt->fetchColumn();
|
||||
|
||||
if (!$order_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'No pending recharge order found for this user']);
|
||||
echo json_encode(['success' => false, 'error' => '未找到该用户的待处理充值订单']);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -35,35 +43,31 @@ try {
|
||||
$bank = $_POST['bank'] ?? '';
|
||||
$name = $_POST['name'] ?? '';
|
||||
$account = $_POST['account'] ?? '';
|
||||
$amount = isset($_POST['amount']) ? (float)$_POST['amount'] : null;
|
||||
|
||||
if ($amount !== null) {
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '1', account_bank = ?, account_name = ?, account_number = ?, amount = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $amount, $order_id]);
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '1', account_bank = ?, account_name = ?, account_number = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $order_id]);
|
||||
|
||||
if ($stmt->rowCount() > 0) {
|
||||
echo json_encode(['success' => true]);
|
||||
} else {
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '1', account_bank = ?, account_name = ?, account_number = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $order_id]);
|
||||
// Check if it was already status 1
|
||||
$stmt = $db->prepare("SELECT status FROM finance_requests WHERE id = ?");
|
||||
$stmt->execute([$order_id]);
|
||||
if ($stmt->fetchColumn() == '1') {
|
||||
echo json_encode(['success' => true, 'note' => 'Already matched']);
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'error' => '更新失败']);
|
||||
}
|
||||
}
|
||||
echo json_encode(['success' => true]);
|
||||
}
|
||||
elseif ($action === 'send_account') {
|
||||
$bank = $_POST['bank'] ?? '';
|
||||
$name = $_POST['name'] ?? '';
|
||||
$account = $_POST['account'] ?? '';
|
||||
$amount = isset($_POST['amount']) ? (float)$_POST['amount'] : null;
|
||||
|
||||
if ($bank && $name && $account) {
|
||||
if ($amount !== null) {
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '2', account_bank = ?, account_name = ?, account_number = ?, amount = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $amount, $order_id]);
|
||||
} else {
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '2', account_bank = ?, account_name = ?, account_number = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $order_id]);
|
||||
}
|
||||
} else {
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '2' WHERE id = ?");
|
||||
$stmt->execute([$order_id]);
|
||||
}
|
||||
$stmt = $db->prepare("UPDATE finance_requests SET status = '2', account_bank = ?, account_name = ?, account_number = ? WHERE id = ?");
|
||||
$stmt->execute([$bank, $name, $account, $order_id]);
|
||||
|
||||
echo json_encode(['success' => true]);
|
||||
}
|
||||
else {
|
||||
|
||||
@ -243,7 +243,7 @@ if ($action === 'admin_get_all') {
|
||||
MAX(v.has_recharge) as has_recharge,
|
||||
CASE
|
||||
WHEN MAX(m.message) LIKE '<img%' THEN '[图片消息]'
|
||||
WHEN (MAX(m.message) IS NULL OR MAX(m.message) = '') AND MAX(v.has_recharge) = 1 THEN '[充值申请]'
|
||||
WHEN MAX(v.has_recharge) = 1 AND (MAX(m.message) IS NULL OR MAX(m.message) = '' OR MAX(m.created_at) < MAX(v.last_activity)) THEN '[充值申请]'
|
||||
ELSE COALESCE(MAX(m.message), '新会话')
|
||||
END as message,
|
||||
COALESCE(MAX(m.created_at), MAX(v.last_activity)) as created_at,
|
||||
|
||||
@ -557,13 +557,15 @@ function startStatusPolling(order_id) {
|
||||
const data = await r.json();
|
||||
if (data.success) {
|
||||
console.log('Order status update:', data.status, data);
|
||||
// Ensure data status is treated as string for comparison
|
||||
const currentStatus = String(data.status);
|
||||
renderRechargeUI(data);
|
||||
if (data.status === '3') clearInterval(window.statusPollingInterval);
|
||||
if (currentStatus === '3') clearInterval(window.statusPollingInterval);
|
||||
}
|
||||
} catch (e) { console.error('Status polling error:', e); }
|
||||
};
|
||||
checkStatus();
|
||||
window.statusPollingInterval = setInterval(checkStatus, 2000);
|
||||
window.statusPollingInterval = setInterval(checkStatus, 3000);
|
||||
}
|
||||
|
||||
function renderRechargeUI(data) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user