feat(admin): 订阅列表支持一键绑定到订单(续费缺订阅治理)
This commit is contained in:
@@ -39,6 +39,12 @@
|
||||
$incomingBack = (string) request()->query('back', '');
|
||||
$safeBackForLinks = \App\Support\BackUrl::sanitizeForLinks($incomingBack);
|
||||
|
||||
// “从订单详情页来挑订阅”的治理交互:
|
||||
// - attach_order_id:表示把选中的订阅绑定回某个订单
|
||||
// - attach_back:绑定成功后回跳到哪里(通常是订单详情页)
|
||||
$attachOrderId = (int) request()->query('attach_order_id', 0);
|
||||
$safeAttachBackForLinks = \App\Support\BackUrl::sanitizeForLinks((string) request()->query('attach_back', ''));
|
||||
|
||||
// 用于摘要卡等入口:保留当前 query 并覆盖字段,同时安全透传 back。
|
||||
$safeFullUrlWithQuery = function (array $overrides = []) use ($safeBackForLinks) {
|
||||
return \App\Support\BackUrl::currentPathWithQuery($overrides, $safeBackForLinks);
|
||||
@@ -300,6 +306,25 @@
|
||||
<div class="mt-4 actions gap-10">
|
||||
<a class="btn btn-secondary btn-sm" href="{!! $renewOrderUrl !!}">续费下单</a>
|
||||
|
||||
@if($attachOrderId > 0)
|
||||
@php
|
||||
// 从订单详情进入订阅管理页时:提供“绑定到该订单”的治理按钮
|
||||
// 注意:提交后由 attachSubscription 做强校验(续费单 + merchant/plan 一致)
|
||||
$attachBack = $safeAttachBackForLinks !== '' ? $safeAttachBackForLinks : $safeBackForLinks;
|
||||
if ($attachBack === '') {
|
||||
$attachBack = $back;
|
||||
}
|
||||
@endphp
|
||||
<form method="post" action="/admin/platform-orders/{{ $attachOrderId }}/attach-subscription" class="inline-form" onsubmit="return confirm('确认将该订阅绑定到目标订单?');">
|
||||
@csrf
|
||||
<input type="hidden" name="site_subscription_id" value="{{ $subscription->id }}">
|
||||
@if($attachBack !== '')
|
||||
<input type="hidden" name="back" value="{!! $attachBack !!}">
|
||||
@endif
|
||||
<button type="submit" class="btn btn-primary btn-sm">绑定到订单 #{{ $attachOrderId }}</button>
|
||||
</form>
|
||||
@endif
|
||||
|
||||
<form method="post" action="/admin/site-subscriptions/{{ $subscription->id }}/set-status">
|
||||
@csrf
|
||||
<select name="status" onchange="this.form.submit()" class="w-140">
|
||||
|
||||
Reference in New Issue
Block a user