From a50d14fc2a7ff257ff98ffd6ef511c074ef31056 Mon Sep 17 00:00:00 2001 From: 92451 <924518135@qq.com> Date: Wed, 23 Sep 2026 15:05:30 +0800 Subject: [PATCH] feat: add withdrawal store entity filter --- app/Http/Controllers/Business/Pages.php | 17 ++++++++++++++++- .../withdrawal-management.blade.php | 11 ++++++++++- tests/Feature/Business/ManagementCrudTest.php | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Business/Pages.php b/app/Http/Controllers/Business/Pages.php index 6c93ab1f..b6c80bde 100644 --- a/app/Http/Controllers/Business/Pages.php +++ b/app/Http/Controllers/Business/Pages.php @@ -875,6 +875,7 @@ class Pages extends Controller $clean = static fn (mixed $value, int $length = 80): string => mb_substr(trim((string) $value), 0, $length); $platform = $clean(request()->query('platform')); $withdrawalPath = $clean(request()->query('withdrawal_path')); + $storeEntity = $clean(request()->query('store_entity'), 191); $keyword = $clean(request()->query('keyword'), 191); $balanceStatus = $clean(request()->query('balance_status')); if (! in_array($balanceStatus, ['matched', 'unmatched', 'ambiguous', 'not_ready'], true)) { @@ -897,6 +898,15 @@ class Pages extends Controller ->filter() ->values() ->all(); + $storeEntities = StoreReceivingAccount::query() + ->whereNotNull('store_entity_name') + ->where('store_entity_name', '<>', '') + ->distinct() + ->orderBy('store_entity_name') + ->pluck('store_entity_name') + ->filter() + ->values() + ->all(); $query = StoreReceivingAccount::query(); @@ -908,6 +918,10 @@ class Pages extends Controller $query->where('receiving_method', $withdrawalPath); } + if ($storeEntity !== '') { + $query->where('store_entity_name', $storeEntity); + } + if ($keyword !== '') { $query->where('store_name', 'like', '%' . addcslashes($keyword, '%_\\') . '%'); } @@ -963,9 +977,10 @@ class Pages extends Controller return [ 'view' => 'business.pages.fund-management.withdrawal-management', 'withdrawalRows' => $withdrawalRows, - 'withdrawalFilters' => compact('platform', 'withdrawalPath', 'keyword', 'balanceStatus'), + 'withdrawalFilters' => compact('platform', 'withdrawalPath', 'storeEntity', 'keyword', 'balanceStatus'), 'withdrawalPlatforms' => $platforms, 'withdrawalPaths' => $withdrawalPaths, + 'withdrawalStoreEntities' => $storeEntities, 'withdrawalBalances' => $withdrawalBalances, 'withdrawalReserveStandards' => $withdrawalReserveStandards, 'withdrawalBalanceSummary' => [ diff --git a/resources/views/business/pages/fund-management/withdrawal-management.blade.php b/resources/views/business/pages/fund-management/withdrawal-management.blade.php index 773c9b7f..507fdfdb 100644 --- a/resources/views/business/pages/fund-management/withdrawal-management.blade.php +++ b/resources/views/business/pages/fund-management/withdrawal-management.blade.php @@ -32,6 +32,15 @@ @endforeach +
+ + +
@@ -47,7 +56,7 @@
- @if (request()->hasAny(['platform', 'withdrawal_path', 'keyword', 'balance_status'])) + @if (request()->hasAny(['platform', 'withdrawal_path', 'store_entity', 'keyword', 'balance_status'])) 重置 @endif diff --git a/tests/Feature/Business/ManagementCrudTest.php b/tests/Feature/Business/ManagementCrudTest.php index 89dbdc5b..3d6a19bb 100644 --- a/tests/Feature/Business/ManagementCrudTest.php +++ b/tests/Feature/Business/ManagementCrudTest.php @@ -112,6 +112,11 @@ class ManagementCrudTest extends FeatureTestCase 'page' => 'withdrawal-management', 'balance_status' => 'unmatched', ])); + $entityResponse = $this->loginAs()->get(route('business.pages.show', [ + 'section' => 'fund-management', + 'page' => 'withdrawal-management', + 'store_entity' => '提现测试主体', + ])); } finally { Carbon::setTestNow(); } @@ -130,6 +135,7 @@ class ManagementCrudTest extends FeatureTestCase ->assertSeeText('余额源 1 条') ->assertSeeText('已显示余额 1 条') ->assertSeeText('余额状态') + ->assertSeeText('店铺主体') ->assertSeeText('预留标准') ->assertSeeText('20,000.00') ->assertSeeText('5,000.00') @@ -151,6 +157,8 @@ class ManagementCrudTest extends FeatureTestCase '是否达标', ], false) ->assertSee('aria-label="提现管理筛选"', false) + ->assertSee('name="store_entity"', false) + ->assertSee('value="提现测试主体"', false) ->assertSee('title="聚水潭店铺:天猫-提现测试店铺;余额日期:2026-09-12"', false) ->assertSeeInOrder(['提现测试ERP店', '未接入测试ERP店']) ->assertDontSee('店铺名称', false) @@ -163,6 +171,14 @@ class ManagementCrudTest extends FeatureTestCase ->assertOk() ->assertSeeText('未接入测试ERP店') ->assertDontSeeText('提现测试ERP店'); + + $entityResponse + ->assertOk() + ->assertSeeText('提现测试ERP店') + ->assertSeeText('提现测试主体') + ->assertDontSeeText('未接入测试ERP店') + ->assertSee('name="store_entity"', false) + ->assertSee('value="提现测试主体" selected', false); } public function testInstallationDetailsRendersWorkbookHeadersAndImportedRows(): void