From d00c62f859654ea8ca7ed0d1dc630e3a07b37230 Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Wed, 31 May 2023 15:19:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=9A=8F=E6=9C=BA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BA=91=E4=BB=93=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/store/product/SpuRepository.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/common/repositories/store/product/SpuRepository.php b/app/common/repositories/store/product/SpuRepository.php index 7ca25b91..69605d9b 100644 --- a/app/common/repositories/store/product/SpuRepository.php +++ b/app/common/repositories/store/product/SpuRepository.php @@ -188,7 +188,8 @@ class SpuRepository extends BaseRepository $RedisCacheService->SADD($dataKey, $productId); } } - $where['product_id'] = $this->getSpuFromCache($where['mer_id'], $page); + $where['product_id'] = $RedisCacheService->sRandMember($dataKey, 10); +// $where['product_id'] = $this->getSpuFromCache($where['mer_id'], $page); unset($where['mer_id'], $where['page']); $page = 1; } @@ -225,12 +226,17 @@ class SpuRepository extends BaseRepository { $dataKey = 'CloudMerchantSpu_' . $merId; $takenKey = 'CloudMerchantSpuTakenProductIds_' . $merId . '_page_'. $page; + $allTakenKey = 'CloudMerchantSpuTakenProductIds_' . $merId; /** @var RedisCacheService $RedisCacheService */ $RedisCacheService = app()->make(RedisCacheService::class); if ($RedisCacheService->exists($takenKey)) { return $RedisCacheService->sMembers($takenKey); } - $keys = $RedisCacheService->sDiff($dataKey, $takenKey); + if ($RedisCacheService->sCard($allTakenKey) == $RedisCacheService->sCard($dataKey)) { + $keys = $RedisCacheService->sRandMember($dataKey, 10); + } else { + $keys = $RedisCacheService->sDiff($dataKey, $allTakenKey); + } $number = min(count($keys), 10); if ($number <= 0) { return []; @@ -241,6 +247,7 @@ class SpuRepository extends BaseRepository $productIds[] = $keys[$index]; } $RedisCacheService->sAdd($takenKey, ...$productIds); + $RedisCacheService->sAdd($allTakenKey, ...$productIds); $RedisCacheService->expire($takenKey, 60); return $productIds; }