修复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:
+8
-3
@@ -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},已回退"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user