From 88f7308b6a18d156bfdb6728ab232bea9f1058a2 Mon Sep 17 00:00:00 2001 From: WuYongJie <549727955@qq.com> Date: Mon, 19 Oct 2026 18:06:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=B5=84=E6=BA=90=E4=BC=98=E5=8C=96):=20?= =?UTF-8?q?=E5=86=B7=E7=BC=93=E5=AD=98=E6=97=B6=E7=94=A8=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=BF=9D=E7=95=99=E7=AD=89=E5=80=BC=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repositories/OrderDataMirrorRepository.php | 3 ++- .../EcommerceFinance/OrderDataMirrorRepositoryTest.php | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/EcommerceFinance/Repositories/OrderDataMirrorRepository.php b/modules/EcommerceFinance/Repositories/OrderDataMirrorRepository.php index 4c37ecf1..7de8c475 100644 --- a/modules/EcommerceFinance/Repositories/OrderDataMirrorRepository.php +++ b/modules/EcommerceFinance/Repositories/OrderDataMirrorRepository.php @@ -495,7 +495,8 @@ class OrderDataMirrorRepository $shopNames = $this->selectedShopNames($filters); if ($shopNames !== []) { - $known = (array) Cache::get(self::SHOP_NAMES_CACHE_KEY, []); + // A release clears the complete cache; the small shop directory remains valid. + $known = $this->shopNames(); if (! empty($filters['shop_names_exact']) && array_diff($shopNames, $known) === []) { $query->whereIn('o.shop_name', $shopNames); } else { diff --git a/tests/Unit/EcommerceFinance/OrderDataMirrorRepositoryTest.php b/tests/Unit/EcommerceFinance/OrderDataMirrorRepositoryTest.php index 25c52e14..451ff867 100644 --- a/tests/Unit/EcommerceFinance/OrderDataMirrorRepositoryTest.php +++ b/tests/Unit/EcommerceFinance/OrderDataMirrorRepositoryTest.php @@ -141,6 +141,16 @@ class OrderDataMirrorRepositoryTest extends TestCase $selected = $repository->afterSales(array_replace($base, ['shop_names' => ['拼多多-甲店'], 'shop_names_exact' => true]), 1, 25); $this->assertSame(['拼多多-甲店'], $this->sortedShops($selected['rows'])); $this->assertDoesNotMatchRegularExpression('/shop_name\s+LIKE/i', collect($db->getQueryLog())->pluck('query')->implode("\n")); + + Cache::forget(OrderDataMirrorRepository::SHOP_NAMES_CACHE_KEY); + $db->table('ops_jst_shop_info')->insert(['shop_id' => 1, 'shop_name' => '拼多多-甲店']); + $db->flushQueryLog(); + $selected = $repository->afterSales(array_replace($base, ['shop_names' => ['拼多多-甲店'], 'shop_names_exact' => true]), 1, 25); + $this->assertSame(['拼多多-甲店'], $this->sortedShops($selected['rows'])); + $this->assertDoesNotMatchRegularExpression('/shop_name\s+LIKE/i', collect($db->getQueryLog())->pluck('query')->implode("\n")); + // Array inputs containing partial names still retain the original contains semantics. + $partial = $repository->afterSales(array_replace($base, ['shop_names' => ['甲店'], 'shop_names_exact' => true]), 1, 25); + $this->assertSame(['拼多多-甲店'], $this->sortedShops($partial['rows'])); } public function test_shop_names_lists_distinct_shops_from_the_order_mirror(): void -- 2.47.2