From d735de7864115251601dc447b29d4e99543dccfd Mon Sep 17 00:00:00 2001 From: WuYongJie <549727955@qq.com> Date: Mon, 19 Oct 2026 18:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8F=91=E5=B8=83=E5=86=B7?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=97=B6=E5=BA=97=E9=93=BA=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E9=80=80=E5=9B=9E=E5=A4=A7=E8=8C=83=E5=9B=B4=E6=89=AB=E6=8F=8F?= 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