修复PHP改主校验流程:Java失败时PHP自动回退+前端不立即刷新

1. PHP handleUpdateLandOwner: 不再直接更新web_area_lands,写入pending队列,返回pending=true
2. PHP handleOwnerChangeCallback失败时:回退owner为旧值,记录日志
3. PHP admin.php adminTransferLand: 收到pending=true时不立即刷新列表,改为5秒后轮询
4. 按钮禁用防重复提交,等待回调后恢复
This commit is contained in:
ypsdf1
2026-06-29 16:38:31 +08:00
parent e9bd63a1e4
commit 5403479a2c
2 changed files with 24 additions and 4 deletions
+8 -3
View File
@@ -2203,10 +2203,15 @@ function handleOwnerChangeCallback($db, $post) {
debugLog("handleOwnerChangeCallback: 改主 {$targetName} {$oldOwner}→{$newOwner} Java验证通过,已更新PHP副本");
echo json_encode(['success' => true, 'message' => '改主验证通过,已更新']);
} else {
// ★ Java验证失败
// ★ Java验证失败:更新PHP副本为原始所有者(回退)+ 标记失败
$stmtRb = $db->prepare("UPDATE web_area_lands SET owner = :old_owner WHERE name = :name");
$stmtRb->bindValue(':old_owner', $oldOwner, SQLITE3_TEXT);
$stmtRb->bindValue(':name', $targetName, SQLITE3_TEXT);
$stmtRb->execute();
$db->query("UPDATE web_admin_changes SET status = 'failed', acknowledged = 1, acked_at = " . time() . " WHERE id = " . $changeId);
debugLog("handleOwnerChangeCallback: 改主 {$targetName} {$oldOwner}→{$newOwner} Java验证失败: {$reason}");
echo json_encode(['success' => true, 'message' => "改主验证失败: {$reason}"]);
debugLog("handleOwnerChangeCallback: 改主 {$targetName} {$oldOwner}→{$newOwner} Java验证失败: {$reason},已回退为{$oldOwner}");
echo json_encode(['success' => true, 'message' => "改主验证失败: {$reason},已回退"]);
}
}