From c1d20b425b10e8ba59f102dd1ab413055883eed0 Mon Sep 17 00:00:00 2001
From: 彭雪彬 <1724387007@qq.com>
Date: Mon, 14 Jul 2025 16:57:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/xin' into pxb

---
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java
index a50b69c..776807d 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java
@@ -1,5 +1,6 @@
 package com.oying.modules.pc.store.service.impl;
-
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.NumberUtil;
 import com.oying.modules.pc.store.domain.Store;
 import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
@@ -39,23 +40,30 @@
         if (total == null || total == 0) {
             // 初始化缓存
             List<Long> ids = storeMapper.queryStoreIds(criteria);
+            int index = 0;
             for (Long id : ids) {
-                redisTemplate.opsForZSet().add(setKey, 1, id);
+                redisTemplate.opsForZSet().add(setKey, id, index++);
             }
             // 设置缓存过期时间
-            redisTemplate.expire(setKey, 30, TimeUnit.MINUTES);
+            redisTemplate.expire(setKey, 15, TimeUnit.MINUTES);
             total = (long) ids.size();
         }
 
         // 2. 从ZSET获取分页ID
-        Long offset = NumberUtil.mul(criteria.getPage(), criteria.getSize()).longValue();
-        long end = NumberUtil.add(offset, criteria.getSize()).longValue();
-        Set<Long> storeIds = Optional.ofNullable(redisTemplate.opsForZSet()
-                        .range(setKey, offset, end - 1)).orElse(Collections.emptySet())
-                .stream().map(i-> (Long) i).collect(Collectors.toSet());
+        int current = (criteria.getPage() == null || criteria.getPage() < 1) ? 1 : criteria.getPage();
+        int offset = (current - 1) * criteria.getSize();
+        int end = offset + criteria.getSize() - 1;
+        Set<Long> storeIds = Optional.ofNullable(redisTemplate.opsForZSet().range(setKey, offset, end))
+                .orElse(Collections.emptySet())
+                .stream()
+                .map(i-> (Long) i)
+                .collect(Collectors.toSet());
 
-        // 3. 获取详情数据
-        List<Store> stores = storeService.listByIds(storeIds);
+        // 3. 获取详情数据]
+        List<Store> stores = Optional.of(storeIds)
+                .filter(CollectionUtil::isNotEmpty)
+                .map(storeService::listByIds)
+                .orElse(ListUtil.toList());
 
         page.setContent(stores);
         page.setTotalElements(total);

--
Gitblit v1.9.3