feat(admin): 订阅列表支持一键绑定到订单(续费缺订阅治理)
This commit is contained in:
@@ -660,14 +660,19 @@ class PlatformOrderController extends Controller
|
||||
|
||||
$data = $request->validate([
|
||||
'site_subscription_id' => ['required', 'integer', 'exists:site_subscriptions,id'],
|
||||
'back' => ['nullable', 'string', 'max:2000'],
|
||||
]);
|
||||
|
||||
$safeBack = \App\Support\BackUrl::sanitizeForLinks((string) ($data['back'] ?? ''));
|
||||
|
||||
if ((string) ($order->order_type ?? '') !== 'renewal') {
|
||||
return redirect()->back()->with('warning', '仅「续费」类型订单允许绑定订阅。');
|
||||
return ($safeBack !== '' ? redirect($safeBack) : redirect()->back())
|
||||
->with('warning', '仅「续费」类型订单允许绑定订阅。');
|
||||
}
|
||||
|
||||
if ((int) ($order->site_subscription_id ?? 0) > 0) {
|
||||
return redirect()->back()->with('warning', '该订单已绑定订阅,无需重复操作。');
|
||||
return ($safeBack !== '' ? redirect($safeBack) : redirect()->back())
|
||||
->with('warning', '该订单已绑定订阅,无需重复操作。');
|
||||
}
|
||||
|
||||
$subId = (int) $data['site_subscription_id'];
|
||||
@@ -675,14 +680,16 @@ class PlatformOrderController extends Controller
|
||||
|
||||
// 强约束:订阅上下文必须与订单一致
|
||||
if ((int) ($sub->merchant_id ?? 0) !== (int) ($order->merchant_id ?? 0)) {
|
||||
return redirect()->back()->withErrors([
|
||||
'site_subscription_id' => '订阅所属站点与订单站点不一致,禁止绑定(避免串单)。',
|
||||
]);
|
||||
return ($safeBack !== '' ? redirect($safeBack) : redirect()->back())
|
||||
->withErrors([
|
||||
'site_subscription_id' => '订阅所属站点与订单站点不一致,禁止绑定(避免串单)。',
|
||||
]);
|
||||
}
|
||||
if ((int) ($sub->plan_id ?? 0) !== (int) ($order->plan_id ?? 0)) {
|
||||
return redirect()->back()->withErrors([
|
||||
'site_subscription_id' => '订阅套餐与订单套餐不一致,禁止绑定(避免跨套餐续费)。',
|
||||
]);
|
||||
return ($safeBack !== '' ? redirect($safeBack) : redirect()->back())
|
||||
->withErrors([
|
||||
'site_subscription_id' => '订阅套餐与订单套餐不一致,禁止绑定(避免跨套餐续费)。',
|
||||
]);
|
||||
}
|
||||
|
||||
$order->site_subscription_id = $sub->id;
|
||||
@@ -703,7 +710,8 @@ class PlatformOrderController extends Controller
|
||||
|
||||
$order->save();
|
||||
|
||||
return redirect()->back()->with('success', '已绑定订阅:' . (string) ($sub->subscription_no ?? $sub->id));
|
||||
return ($safeBack !== '' ? redirect($safeBack) : redirect()->back())
|
||||
->with('success', '已绑定订阅:' . (string) ($sub->subscription_no ?? $sub->id));
|
||||
}
|
||||
|
||||
public function activateSubscription(Request $request, PlatformOrder $order, SubscriptionActivationService $service): RedirectResponse
|
||||
|
||||
Reference in New Issue
Block a user