platform_orders index: compact table with optional columns toggle
This commit is contained in:
@@ -58,6 +58,9 @@
|
||||
|
||||
// 线索上下文(从开通线索跳转而来):用于提示“当前范围已锁定线索”,以及生成一键清除入口
|
||||
$incomingLeadId = (int) request()->query('lead_id', 0);
|
||||
|
||||
// 列表视图:默认精简(避免列表过长);view=full 展开全部列
|
||||
$isFullView = ((string) request()->query('view', '') === 'full');
|
||||
$clearLeadQuery = $currentQuery;
|
||||
unset($clearLeadQuery['lead_id'], $clearLeadQuery['page']);
|
||||
|
||||
@@ -624,333 +627,329 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="card section-dark mb-10">
|
||||
<h4 class="mt-0">导出</h4>
|
||||
<div class="grid-2 tool-grid">
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">导出</div>
|
||||
<form method="get" action="/admin/platform-orders/export" class="mb-0">
|
||||
<input type="hidden" name="download" value="1">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<div class="grid-2 tool-grid">
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">导出</div>
|
||||
<form method="get" action="/admin/platform-orders/export" class="mb-0">
|
||||
<input type="hidden" name="download" value="1">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="form-inline-row mb-8">
|
||||
<input type="checkbox" name="include_meta" value="1">
|
||||
<span>包含原始 meta(JSON)(用于排障)</span>
|
||||
</label>
|
||||
<label class="form-inline-row mb-8">
|
||||
<input type="checkbox" name="include_meta" value="1">
|
||||
<span>包含原始 meta(JSON)(用于排障)</span>
|
||||
</label>
|
||||
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-secondary btn-sm" type="submit">导出当前筛选结果(CSV)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量同步订阅</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-activate-subscriptions" onsubmit="return confirm('确认批量同步当前筛选范围内“可同步”的订单?(仅处理:已支付+已生效+未同步)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先勾选筛选条件「只看可同步」,再执行批量同步。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量同步订阅(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-activate-subscriptions" onsubmit="return confirm('确认对全部订单执行批量同步?该操作仍只处理“已支付+已生效+未同步”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量同步订阅(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量标记支付并生效(BMPA)</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-paid-and-activate" onsubmit="return confirm('确认批量将当前筛选范围内“待处理+未支付”的订单标记为已支付并生效,并同步订阅?(会补回执留痕;遇到退款/回执不一致会安全阀阻断并记录失败原因)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先筛选「待处理 + 未支付」后再执行,避免误操作。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量标记支付并生效(含订阅同步)(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-paid-and-activate" onsubmit="return confirm('确认对全部订单执行批量标记支付并生效(含订阅同步)?该操作仍只处理“待处理+未支付”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量标记支付并生效(含订阅同步)(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量仅标记为已生效</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-activated" onsubmit="return confirm('确认批量将当前筛选范围内“已支付+待处理”的订单标记为已生效?(不修改支付状态,不自动同步订阅)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先用快捷筛选「待生效」(已支付+待处理)锁定范围,再执行批量生效。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量仅标记为已生效(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-activated" onsubmit="return confirm('确认对全部订单执行批量仅标记为已生效?该操作仍只处理“已支付+待处理”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量仅标记为已生效(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">清理失败标记:同步订阅</div>
|
||||
<form method="post" action="/admin/platform-orders/clear-sync-errors" onsubmit="return confirm('确认清除当前筛选范围内命中的订单的“同步失败”标记?');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除同步失败标记(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/clear-sync-errors" onsubmit="return confirm('确认清除全部订单的“同步失败”标记?该操作不可逆(仅清理 meta 标记),请谨慎。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除同步失败标记(全部订单)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">清理失败标记:批量 BMPA</div>
|
||||
<form method="post" action="/admin/platform-orders/clear-bmpa-errors" onsubmit="return confirm('确认清除当前筛选范围内命中的订单的“批量标记支付失败”标记?');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除批量标记支付失败标记(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/clear-bmpa-errors" onsubmit="return confirm('确认清除全部订单的“批量标记支付失败”标记?该操作不可逆(仅清理 meta 标记),请谨慎。');">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除批量标记支付失败标记(全部订单)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-secondary btn-sm" type="submit">导出当前筛选结果(CSV)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量同步订阅</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-activate-subscriptions" onsubmit="return confirm('确认批量同步当前筛选范围内“可同步”的订单?(仅处理:已支付+已生效+未同步)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先勾选筛选条件「只看可同步」,再执行批量同步。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量同步订阅(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-activate-subscriptions" onsubmit="return confirm('确认对全部订单执行批量同步?该操作仍只处理“已支付+已生效+未同步”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量同步订阅(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量标记支付并生效(BMPA)</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-paid-and-activate" onsubmit="return confirm('确认批量将当前筛选范围内“待处理+未支付”的订单标记为已支付并生效,并同步订阅?(会补回执留痕;遇到退款/回执不一致会安全阀阻断并记录失败原因)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先筛选「待处理 + 未支付」后再执行,避免误操作。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量标记支付并生效(含订阅同步)(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-paid-and-activate" onsubmit="return confirm('确认对全部订单执行批量标记支付并生效(含订阅同步)?该操作仍只处理“待处理+未支付”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量标记支付并生效(含订阅同步)(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">批量仅标记为已生效</div>
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-activated" onsubmit="return confirm('确认批量将当前筛选范围内“已支付+待处理”的订单标记为已生效?(不修改支付状态,不自动同步订阅)');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
|
||||
<div class="muted mb-8">提示:建议先用快捷筛选「待生效」(已支付+待处理)锁定范围,再执行批量生效。</div>
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-sm" type="submit">批量仅标记为已生效(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/batch-mark-activated" onsubmit="return confirm('确认对全部订单执行批量仅标记为已生效?该操作仍只处理“已支付+待处理”的订单,但范围可能很大。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>本次最多处理</span>
|
||||
<input type="number" name="limit" value="50" min="1" max="500" class="w-90">
|
||||
<span>条(安全阀)</span>
|
||||
</label>
|
||||
<button class="btn btn-sm" type="submit">批量仅标记为已生效(全部订单)</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">清理失败标记:同步订阅</div>
|
||||
<form method="post" action="/admin/platform-orders/clear-sync-errors" onsubmit="return confirm('确认清除当前筛选范围内命中的订单的“同步失败”标记?');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除同步失败标记(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/clear-sync-errors" onsubmit="return confirm('确认清除全部订单的“同步失败”标记?该操作不可逆(仅清理 meta 标记),请谨慎。');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除同步失败标记(全部订单)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="tool-group focus-box">
|
||||
<div class="tool-group-title">清理失败标记:批量 BMPA</div>
|
||||
<form method="post" action="/admin/platform-orders/clear-bmpa-errors" onsubmit="return confirm('确认清除当前筛选范围内命中的订单的“批量标记支付失败”标记?');" class="mb-10">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="filtered">
|
||||
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
|
||||
<input type="hidden" name="payment_status" value="{{ $filters['payment_status'] ?? '' }}">
|
||||
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
|
||||
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $filters['site_subscription_id'] ?? '' }}">
|
||||
<input type="hidden" name="fail_only" value="{{ $filters['fail_only'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_failed_only" value="{{ $filters['bmpa_failed_only'] ?? '' }}">
|
||||
<input type="hidden" name="synced_only" value="{{ $filters['synced_only'] ?? '' }}">
|
||||
<input type="hidden" name="sync_status" value="{{ $filters['sync_status'] ?? '' }}">
|
||||
<input type="hidden" name="receipt_status" value="{{ $filters['receipt_status'] ?? '' }}">
|
||||
<input type="hidden" name="refund_status" value="{{ $filters['refund_status'] ?? '' }}">
|
||||
<input type="hidden" name="syncable_only" value="{{ $filters['syncable_only'] ?? '' }}">
|
||||
<input type="hidden" name="batch_synced_24h" value="{{ $filters['batch_synced_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_paid_and_activate_24h" value="{{ $filters['batch_mark_paid_and_activate_24h'] ?? '' }}">
|
||||
<input type="hidden" name="batch_mark_activated_24h" value="{{ $filters['batch_mark_activated_24h'] ?? '' }}">
|
||||
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
|
||||
<input type="hidden" name="lead_id" value="{{ $filters['lead_id'] ?? '' }}">
|
||||
<input type="hidden" name="sync_error_keyword" value="{{ $filters['sync_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="bmpa_error_keyword" value="{{ $filters['bmpa_error_keyword'] ?? '' }}">
|
||||
<input type="hidden" name="reconcile_mismatch" value="{{ $filters['reconcile_mismatch'] ?? '' }}">
|
||||
<input type="hidden" name="refund_inconsistent" value="{{ $filters['refund_inconsistent'] ?? '' }}">
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除批量标记支付失败标记(当前筛选范围)</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/admin/platform-orders/clear-bmpa-errors" onsubmit="return confirm('确认清除全部订单的“批量标记支付失败”标记?该操作不可逆(仅清理 meta 标记),请谨慎。');">
|
||||
@csrf
|
||||
<input type="hidden" name="scope" value="all">
|
||||
|
||||
<label class="muted form-inline-row mb-8">
|
||||
<span>确认输入</span>
|
||||
<input type="text" name="confirm" placeholder="YES" class="w-140">
|
||||
<span>(必须输入 YES 才会执行)</span>
|
||||
</label>
|
||||
|
||||
<div class="mt-6">
|
||||
<button class="btn btn-danger btn-sm" type="submit">清除批量标记支付失败标记(全部订单)</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="flex-between">
|
||||
<h3>平台订单列表</h3>
|
||||
@@ -974,17 +973,26 @@
|
||||
|
||||
$createOrderUrl = '/admin/platform-orders/create?' . \Illuminate\Support\Arr::query($createQuery);
|
||||
@endphp
|
||||
<a href="{!! $createOrderUrl !!}" class="btn btn-sm">新建平台订单</a>
|
||||
@php
|
||||
$toggleViewUrl = $isFullView
|
||||
? $safeFullUrlWithQuery(['view' => null, 'page' => null])
|
||||
: $safeFullUrlWithQuery(['view' => 'full', 'page' => null]);
|
||||
$toggleViewLabel = $isFullView ? '精简视图' : '展开全部列';
|
||||
@endphp
|
||||
<div class="actions gap-10">
|
||||
<a class="btn btn-secondary btn-sm" href="{!! $toggleViewUrl !!}">{{ $toggleViewLabel }}</a>
|
||||
<a href="{!! $createOrderUrl !!}" class="btn btn-sm">新建平台订单</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-wrap">
|
||||
<table class="table-nowrap">
|
||||
<table class="table-nowrap platform-orders-table {{ $isFullView ? 'is-full' : '' }}">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>订单号</th>
|
||||
<th>站点</th>
|
||||
<th>套餐</th>
|
||||
<th>订单类型</th>
|
||||
<th class="col-optional">订单类型</th>
|
||||
<th>订单状态</th>
|
||||
<th>支付状态</th>
|
||||
<th>应付金额</th>
|
||||
@@ -994,15 +1002,15 @@
|
||||
<th>同步状态</th>
|
||||
<th>订阅号</th>
|
||||
<th>订阅到期</th>
|
||||
<th>同步时间</th>
|
||||
<th>失败原因</th>
|
||||
<th>最近批量同步</th>
|
||||
<th>最近批量生效</th>
|
||||
<th>回执总额</th>
|
||||
<th>对账差额</th>
|
||||
<th>回执数</th>
|
||||
<th>退款数</th>
|
||||
<th>退款总额</th>
|
||||
<th class="col-optional">同步时间</th>
|
||||
<th class="col-optional">失败原因</th>
|
||||
<th class="col-optional">最近批量同步</th>
|
||||
<th class="col-optional">最近批量生效</th>
|
||||
<th class="col-optional">回执总额</th>
|
||||
<th class="col-optional">对账差额</th>
|
||||
<th class="col-optional">回执数</th>
|
||||
<th class="col-optional">退款数</th>
|
||||
<th class="col-optional">退款总额</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -1044,7 +1052,7 @@
|
||||
{{ $planName }}
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ $order->order_type }}</td>
|
||||
<td class="col-optional">{{ $order->order_type }}</td>
|
||||
<td>
|
||||
{{ $statusLabels[$order->status] ?? $order->status }}
|
||||
<div class="muted">{{ $order->status }}</div>
|
||||
@@ -1088,8 +1096,8 @@
|
||||
@endif
|
||||
</td>
|
||||
<td>{{ optional($order->siteSubscription?->ends_at)->format('Y-m-d H:i:s') ?: '-' }}</td>
|
||||
<td>{{ data_get($order->meta, 'subscription_activation.synced_at') ?: '-' }}</td>
|
||||
<td>
|
||||
<td class="col-optional">{{ data_get($order->meta, 'subscription_activation.synced_at') ?: '-' }}</td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$syncErrMsg = (string) (data_get($order->meta, 'subscription_activation_error.message') ?? '');
|
||||
$syncErrTooLong = $syncErrMsg !== '' && mb_strlen($syncErrMsg) > $SYNC_ERROR_KEYWORD_LINK_MAX_LEN;
|
||||
@@ -1130,7 +1138,7 @@
|
||||
@endif
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
// 优先使用扁平字段 meta.batch_activation(便于筛选/统计,也避免遍历 audit)
|
||||
$batchActivation = (array) (data_get($order->meta, 'batch_activation', []) ?? []);
|
||||
@@ -1161,7 +1169,7 @@
|
||||
<span class="muted">-</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
// 优先使用扁平字段 meta.batch_mark_activated(便于筛选/统计,也避免遍历 audit)
|
||||
$batchMarkActivated = (array) (data_get($order->meta, 'batch_mark_activated', []) ?? []);
|
||||
@@ -1192,7 +1200,7 @@
|
||||
<span class="muted">-</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$receiptTotal = (float) ($order->receipt_total ?? 0);
|
||||
@endphp
|
||||
@@ -1202,7 +1210,7 @@
|
||||
<span class="muted">-</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$rowDelta = (float) ($order->reconciliation_delta_row ?? 0);
|
||||
// 统一口径:按分取整判断是否对账不一致,避免浮点误差导致 0.01 边界不稳定
|
||||
@@ -1221,7 +1229,7 @@
|
||||
<span class="muted">¥0.00</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$receipts = (array) (data_get($order->meta, 'payment_receipts', []) ?? []);
|
||||
$receiptSummaryCount = data_get($order->meta, 'payment_summary.count');
|
||||
@@ -1236,7 +1244,7 @@
|
||||
<span class="muted">0</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$refunds = (array) (data_get($order->meta, 'refund_receipts', []) ?? []);
|
||||
$refundSummaryCount = data_get($order->meta, 'refund_summary.count');
|
||||
@@ -1251,7 +1259,7 @@
|
||||
<span class="muted">0</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<td class="col-optional">
|
||||
@php
|
||||
$refundTotal = (float) $order->refundTotal();
|
||||
$isRefundInconsistent = (bool) $order->isRefundInconsistent();
|
||||
|
||||
Reference in New Issue
Block a user