From 109cbb50d48867083e1a2c746a7ebc3c95cf3569 Mon Sep 17 00:00:00 2001
From: zepengdev <lzpsmith@outlook.com>
Date: Thu, 26 Jun 2025 22:54:12 +0800
Subject: [PATCH] fix: 修正分页查询返回错误总数的问题

---
 oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreMapper.java            |    7 +++----
 oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml                          |    4 +++-
 oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreQueryCriteria.java |   33 ++++++++++++++-------------------
 oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java  |    6 ++----
 4 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreQueryCriteria.java
index ad86796..f2791d4 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/domain/dto/StoreQueryCriteria.java
@@ -1,8 +1,7 @@
 package com.oying.modules.pc.store.domain.dto;
 
-import com.oying.utils.StringUtils;
-import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.springframework.util.DigestUtils;
 
 import java.io.Serializable;
@@ -18,13 +17,13 @@
     @ApiModelProperty(value = "商户ID", example = "1")
     private Long merchantId;
 
-    private String storeName;
-
-    private Integer status;
-
     private Long storeId;
 
     private Long platformCategoryId;
+
+    private String storeName;
+
+    private Integer status;
 
     private String blurry;
 
@@ -44,19 +43,15 @@
 
     public String buildConditionCacheKey() {
         StringJoiner baseKeyJoiner = new StringJoiner("|");
-        if (platformCategoryId != null) {
-            baseKeyJoiner.add("platformCategoryId=" + platformCategoryId);
-        }
-        if (StringUtils.isNotEmpty(blurry)) {
-            baseKeyJoiner.add("blurry=" + blurry);
-        }
-        if (longitude != null && latitude != null) {
-            baseKeyJoiner.add("longitude=" + longitude);
-            baseKeyJoiner.add("latitude=" + latitude);
-        }
-        if (StringUtils.isNotEmpty(blurry)) {
-            baseKeyJoiner.add("radius=" + radius);
-        }
+        baseKeyJoiner.add("merchantId=" + merchantId);
+        baseKeyJoiner.add("storeId=" + storeId);
+        baseKeyJoiner.add("platformCategoryId=" + platformCategoryId);
+        baseKeyJoiner.add("storeName=" + storeName);
+        baseKeyJoiner.add("status=" + status);
+        baseKeyJoiner.add("blurry=" + blurry);
+        baseKeyJoiner.add("longitude=" + longitude);
+        baseKeyJoiner.add("latitude=" + latitude);
+        baseKeyJoiner.add("radius=" + radius);
         // 使用MD5或SHA缩短键长度
         return "store:search:page:" + DigestUtils.md5DigestAsHex(baseKeyJoiner.toString().getBytes());
     }
diff --git a/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreMapper.java b/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreMapper.java
index b535f17..ae21034 100644
--- a/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/pc/store/mapper/StoreMapper.java
@@ -3,11 +3,10 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.oying.modules.pc.store.domain.Store;
 import com.oying.modules.pc.search.domain.dto.NearbyStoreQueryCriteria;
-import com.oying.modules.pc.store.domain.dto.StoreCustomerQueryCriteria;
-import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
 import com.oying.modules.pc.search.domain.dto.StoreSearchDto;
+import com.oying.modules.pc.store.domain.Store;
+import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -22,7 +21,7 @@
 @Mapper
 public interface StoreMapper extends BaseMapper<Store> {
 
-    List<Store> selectStoreList(@Param("criteria") StoreQueryCriteria criteria, Page<Store> page);
+    IPage<Store> selectStoreList(@Param("criteria") StoreQueryCriteria criteria, Page<Store> page);
 
     List<Store> selectStoreList(@Param("criteria") StoreQueryCriteria criteria);
 
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 3a12592..59900e0 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
@@ -46,11 +46,9 @@
     @GetMapping(value = "/page")
     @ApiOperation("查询店铺")
     public ResponseEntity<?> getStoresByPage(StoreQueryCriteria criteria) {
+        criteria.setLimit(1000);
         PageResult<Store> pagedStores = storeQueryService.findPagedStores(criteria);
-        List<Store> stores = pagedStores.getContent();
-        for (Store store : stores) {
-            store.setProducts(this.getProductsByStoreId(store.getStoreId()));
-        }
+        pagedStores.getContent().forEach(store -> store.setProducts(this.getProductsByStoreId(store.getStoreId())));
         return ResponseEntity.ok(R.success(pagedStores));
     }
 
diff --git a/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml b/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
index 25f5a00..ac3cb3d 100644
--- a/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
+++ b/oying-system/src/main/resources/mapper/pc/store/StoreMapper.xml
@@ -135,7 +135,9 @@
                 AND s.platform_category_id = #{criteria.platformCategoryId}
             </if>
         </where>
-        LIMIT 1000
+        <if test="criteria.limit != null">
+            limit #{criteria.limit}
+        </if>
     </select>
 
     <select id="queryUserStores" parameterType="java.lang.Long" resultMap="StoreResult">

--
Gitblit v1.9.3