From 7504b809da1a6188dfa03c06be3eb0f0a9fd0c8e Mon Sep 17 00:00:00 2001
From: zepengdev <lzpsmith@outlook.com>
Date: Mon, 16 Jun 2025 21:39:25 +0800
Subject: [PATCH] fix(store):修复店铺分页查询异常

---
 oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java |    4 ++--
 oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java        |   14 ++++++++------
 oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml                                  |    2 +-
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java              |    5 +----
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
index 1248406..7540a58 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java
@@ -129,7 +129,7 @@
             productImageService.batchUpdate(request.getUpdatedImages());
         }
         if (CollectionUtil.isNotEmpty(request.getNewImages())) {
-            List<ProductImageCreateRequest> newImages = request.getNewImages().stream().peek(i->{i.setProductId(request.getProductId());}).collect(Collectors.toList());
+            List<ProductImageCreateRequest> newImages = request.getNewImages().stream().peek(i-> i.setProductId(request.getProductId())).collect(Collectors.toList());
             productImageService.batchCreate(newImages);
         }
     }
@@ -142,7 +142,7 @@
             productLabelService.batchUpdate(request.getUpdatedLabels());
         }
         if (CollectionUtil.isNotEmpty(request.getNewLabels())) {
-            List<ProductLabel> newLabels = request.getNewLabels().stream().peek(i->{i.setProductId(request.getProductId());}).collect(Collectors.toList());
+            List<ProductLabel> newLabels = request.getNewLabels().stream().peek(i-> i.setProductId(request.getProductId())).collect(Collectors.toList());
             productLabelService.batchCreate(newLabels);
         }
     }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
index 3208951..3a12592 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java
@@ -6,9 +6,6 @@
 import com.oying.modules.pc.product.domain.enums.ProductStatusEnum;
 import com.oying.modules.pc.product.service.ProductService;
 import com.oying.modules.pc.store.domain.Store;
-import com.oying.modules.pc.store.domain.StoreQualification;
-import com.oying.modules.pc.store.domain.dto.StoreCustomerDetailDto;
-import com.oying.modules.pc.store.domain.dto.StoreQualificationQueryCriteria;
 import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
 import com.oying.modules.pc.store.service.StoreQualificationService;
 import com.oying.modules.pc.store.service.StoreQueryService;
@@ -54,7 +51,7 @@
         for (Store store : stores) {
             store.setProducts(this.getProductsByStoreId(store.getStoreId()));
         }
-        return ResponseEntity.ok(R.success(stores));
+        return ResponseEntity.ok(R.success(pagedStores));
     }
 
     @GetMapping(value = "/{storeId}")
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..b8bc400 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,5 @@
 package com.oying.modules.pc.store.service.impl;
-
+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;
@@ -40,7 +40,7 @@
             // 初始化缓存
             List<Long> ids = storeMapper.queryStoreIds(criteria);
             for (Long id : ids) {
-                redisTemplate.opsForZSet().add(setKey, 1, id);
+                redisTemplate.opsForZSet().add(setKey, id, 1);
             }
             // 设置缓存过期时间
             redisTemplate.expire(setKey, 30, TimeUnit.MINUTES);
@@ -48,14 +48,16 @@
         }
 
         // 2. 从ZSET获取分页ID
-        Long offset = NumberUtil.mul(criteria.getPage(), criteria.getSize()).longValue();
-        long end = NumberUtil.add(offset, criteria.getSize()).longValue();
+        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 - 1)).orElse(Collections.emptySet())
+                        .range(setKey, offset, end))
+                .orElse(Collections.emptySet())
                 .stream().map(i-> (Long) i).collect(Collectors.toSet());
 
         // 3. 获取详情数据
-        List<Store> stores = storeService.listByIds(storeIds);
+        List<Store> stores = Optional.ofNullable(storeService.listByIds(storeIds)).orElse(ListUtil.toList());
 
         page.setContent(stores);
         page.setTotalElements(total);
diff --git a/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml b/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
index 924119b..209639f 100644
--- a/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml
@@ -60,10 +60,10 @@
                 and active = #{criteria.active}
             </if>
         </where>
+        order by product_id desc
         <if test="criteria.limit != null">
             limit #{criteria.limit}
         </if>
-        order by product_id desc
     </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3