diff --git a/resources/views/admin/platform_orders/form.blade.php b/resources/views/admin/platform_orders/form.blade.php index ebdc7bc..1ecf4b2 100644 --- a/resources/views/admin/platform_orders/form.blade.php +++ b/resources/views/admin/platform_orders/form.blade.php @@ -135,6 +135,29 @@ @if(! $canRenew) 提示:续费单必须绑定订阅。请从「订阅管理」列表/详情进入“续费下单”,系统会自动带入订阅ID。 + + @php + $jumpQuery = []; + if ((int) ($defaults['merchant_id'] ?? 0) > 0) { + $jumpQuery['merchant_id'] = (int) ($defaults['merchant_id'] ?? 0); + } + if ((int) ($defaults['plan_id'] ?? 0) > 0) { + $jumpQuery['plan_id'] = (int) ($defaults['plan_id'] ?? 0); + } + + $jumpBase = '/admin/site-subscriptions'; + if (count($jumpQuery) > 0) { + $jumpBase .= '?' . \Illuminate\Support\Arr::query($jumpQuery); + } + + $jumpUrl = \App\Support\BackUrl::withBack($jumpBase, \App\Support\BackUrl::selfWithoutBack()); + @endphp + + @if(($requireSubscription ?? false) && $jumpUrl) +
+ 去订阅管理选择订阅 +
+ @endif @endif diff --git a/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagShouldRenderJumpToSubscriptionsLinkTest.php b/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagShouldRenderJumpToSubscriptionsLinkTest.php new file mode 100644 index 0000000..fbbf7e9 --- /dev/null +++ b/tests/Feature/AdminPlatformOrderCreateRequireSubscriptionFlagShouldRenderJumpToSubscriptionsLinkTest.php @@ -0,0 +1,42 @@ +seed(); + + $this->post('/admin/login', [ + 'email' => 'platform.admin@demo.local', + 'password' => 'Platform@123456', + ])->assertRedirect('/admin'); + } + + public function test_create_should_render_jump_to_subscriptions_link_when_require_subscription_flag_and_no_subscription_context(): void + { + $this->loginAsPlatformAdmin(); + + $url = '/admin/platform-orders/create?' . Arr::query([ + 'require_subscription' => 1, + 'merchant_id' => 2, + 'plan_id' => 3, + ]); + + $res = $this->get($url); + $res->assertOk(); + + $res->assertSee('去订阅管理选择订阅', false); + $res->assertSee('/admin/site-subscriptions?merchant_id=2&plan_id=3', false); + + // 链接应携带 back + $res->assertSee('back=', false); + } +}