zepengdev
2025-06-16 4a40342c20ae4fb134917e370c5fda2a4e394309
fix(store):修复店铺分页查询异常
4 files modified
25 ■■■■ changed files
oying-system/src/main/java/com/oying/modules/pc/product/service/impl/ProductMerchantServiceImpl.java 4 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/pc/store/rest/StoreCustomerController.java 5 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/pc/store/service/impl/StoreQueryServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/pc/product/ProductMapper.xml 2 ●●● patch | view | raw | blame | history
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);
        }
    }
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}")
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);
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>