diff --git a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java index 8e5ea71..bd9a9dc 100755 --- a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java +++ b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java @@ -118,10 +118,10 @@ public class ProductSpuController { } @GetMapping("/get-count") - @Operation(summary = "获得商品 SPU 分页 tab count") + @Operation(summary = "获得商品 SPU 分页 tab count(支持按 name/categoryId/createTime 筛选)") @PreAuthorize("@ss.hasPermission('product:spu:query')") - public CommonResult> getSpuCount() { - return success(productSpuService.getTabsCount()); + public CommonResult> getSpuCount(ProductSpuPageReqVO reqVO) { + return success(productSpuService.getTabsCount(reqVO)); } @GetMapping("/export-excel") diff --git a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java index 24ebd68..40ec44d 100755 --- a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java +++ b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java @@ -147,6 +147,22 @@ public interface ProductSpuMapper extends BaseMapperX { } /** + * 按筛选条件 + Tab 统计商品 SPU 数量(用于带筛选的 tab count) + * + * @param reqVO 筛选条件(name/categoryId/createTime) + * @param tabType Tab 标签类型 + * @return 数量 + */ + default Long selectCountByTab(ProductSpuPageReqVO reqVO, Integer tabType) { + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() + .likeIfPresent(ProductSpuDO::getName, reqVO.getName()) + .eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId()) + .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getCreateTime()); + appendTabQuery(tabType, queryWrapper); + return selectCount(queryWrapper); + } + + /** * 更新商品 SPU 浏览量 * * @param id 商品 SPU 编号 diff --git a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java index 6ed9460..8329775 100755 --- a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java +++ b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java @@ -118,11 +118,12 @@ public interface ProductSpuService { void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO); /** - * 获取 SPU 列表标签对应的 Count 数量 + * 获取 SPU 列表标签对应的 Count 数量(支持按 name/categoryId/createTime 筛选) * + * @param reqVO 筛选条件 * @return Count 数量 */ - Map getTabsCount(); + Map getTabsCount(ProductSpuPageReqVO reqVO); /** * 通过分类 categoryId 查询 SPU 个数 diff --git a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java index b7b9057..a36a746 100755 --- a/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java @@ -256,23 +256,19 @@ public class ProductSpuServiceImpl implements ProductSpuService { } @Override - public Map getTabsCount() { + public Map getTabsCount(ProductSpuPageReqVO reqVO) { Map counts = Maps.newLinkedHashMapWithExpectedSize(5); - // 查询销售中的商品数量 + // 每个 tab 的数量 = 筛选条件(name/categoryId/createTime)+ 该 tab 的状态/库存条件 counts.put(ProductSpuPageReqVO.FOR_SALE, - productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.ENABLE.getStatus())); - // 查询仓库中的商品数量 + productSpuMapper.selectCountByTab(reqVO, ProductSpuPageReqVO.FOR_SALE)); counts.put(ProductSpuPageReqVO.IN_WAREHOUSE, - productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.DISABLE.getStatus())); - // 查询售空的商品数量 + productSpuMapper.selectCountByTab(reqVO, ProductSpuPageReqVO.IN_WAREHOUSE)); counts.put(ProductSpuPageReqVO.SOLD_OUT, - productSpuMapper.selectCount(ProductSpuDO::getStock, 0)); - // 查询触发警戒库存的商品数量 + productSpuMapper.selectCountByTab(reqVO, ProductSpuPageReqVO.SOLD_OUT)); counts.put(ProductSpuPageReqVO.ALERT_STOCK, - productSpuMapper.selectCount()); - // 查询回收站中的商品数量 + productSpuMapper.selectCountByTab(reqVO, ProductSpuPageReqVO.ALERT_STOCK)); counts.put(ProductSpuPageReqVO.RECYCLE_BIN, - productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus())); + productSpuMapper.selectCountByTab(reqVO, ProductSpuPageReqVO.RECYCLE_BIN)); return counts; }