Commit c7a21b2a6447a547c6470a26180cbee6a2bb39bf

Authored by YunaiV
1 parent 867293a4

mall:优化商品收藏的分页接口

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
... ... @@ -139,4 +139,5 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
139 139 // 转换返回
140 140 return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
141 141 }
  142 +
142 143 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/favorite/ProductFavoriteController.java
... ... @@ -41,20 +41,13 @@ public class ProductFavoriteController {
41 41 @Operation(summary = "获得商品收藏分页")
42 42 @PreAuthorize("@ss.hasPermission('product:favorite:query')")
43 43 public CommonResult<PageResult<ProductFavoriteRespVO>> getFavoritePage(@Valid ProductFavoritePageReqVO pageVO) {
44   - PageResult<ProductFavoriteDO> favoritePage = productFavoriteService.getFavoritePage(pageVO);
45   - if (CollUtil.isEmpty(favoritePage.getList())) {
  44 + PageResult<ProductFavoriteDO> pageResult = productFavoriteService.getFavoritePage(pageVO);
  45 + if (CollUtil.isEmpty(pageResult.getList())) {
46 46 return success(PageResult.empty());
47 47 }
48   -
49   - List<ProductSpuDO> list = productSpuService.getSpuList(convertSet(favoritePage.getList(), ProductFavoriteDO::getSpuId));
50   -
51   - // 得到商品 spu 信息
52   - List<ProductFavoriteRespVO> favorites = ProductFavoriteConvert.INSTANCE.convertList2admin(favoritePage.getList(), list);
53   -
54   - // 转换 VO 结果
55   - PageResult<ProductFavoriteRespVO> pageResult = new PageResult<>(favoritePage.getTotal());
56   - pageResult.setList(favorites);
57   -
58   - return success(pageResult);
  48 + // 拼接数据
  49 + List<ProductSpuDO> spuList = productSpuService.getSpuList(convertSet(pageResult.getList(), ProductFavoriteDO::getSpuId));
  50 + return success(ProductFavoriteConvert.INSTANCE.convertPage(pageResult, spuList));
59 51 }
  52 +
60 53 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/favorite/vo/ProductFavoritePageReqVO.java
... ... @@ -14,4 +14,5 @@ public class ProductFavoritePageReqVO extends PageParam {
14 14  
15 15 @Schema(description = "用户编号", example = "5036")
16 16 private Long userId;
  17 +
17 18 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/favorite/vo/ProductFavoriteRespVO.java
... ... @@ -15,4 +15,5 @@ public class ProductFavoriteRespVO extends ProductSpuRespVO {
15 15  
16 16 @Schema(description = "spuId", requiredMode = Schema.RequiredMode.REQUIRED, example = "111")
17 17 private Long spuId;
  18 +
18 19 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/favorite/ProductFavoriteConvert.java
1 1 package cn.iocoder.yudao.module.product.convert.favorite;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
4 5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO;
5 6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO;
6 7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
7   -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;
8 8 import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
9 9 import org.mapstruct.Mapper;
10 10 import org.mapstruct.Mapping;
... ... @@ -13,7 +13,6 @@ import org.mapstruct.factory.Mappers;
13 13 import java.util.ArrayList;
14 14 import java.util.List;
15 15 import java.util.Map;
16   -import java.util.Optional;
17 16  
18 17 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
19 18  
... ... @@ -38,20 +37,18 @@ public interface ProductFavoriteConvert {
38 37 return resultList;
39 38 }
40 39  
  40 + default PageResult<ProductFavoriteRespVO> convertPage(PageResult<ProductFavoriteDO> pageResult, List<ProductSpuDO> spuList) {
  41 + Map<Long, ProductSpuDO> spuMap = convertMap(spuList, ProductSpuDO::getId);
  42 + List<ProductFavoriteRespVO> voList = CollectionUtils.convertList(pageResult.getList(), favorite -> {
  43 + ProductSpuDO spu = spuMap.get(favorite.getSpuId());
  44 + return convert02(spu, favorite);
  45 + });
  46 + return new PageResult<>(voList, pageResult.getTotal());
  47 + }
41 48 @Mapping(target = "id", source = "favorite.id")
42 49 @Mapping(target = "userId", source = "favorite.userId")
43 50 @Mapping(target = "spuId", source = "favorite.spuId")
44 51 @Mapping(target = "createTime", source = "favorite.createTime")
45   - ProductFavoriteRespVO convert2admin(ProductSpuDO spu, ProductFavoriteDO favorite);
46   -
47   - default List<ProductFavoriteRespVO> convertList2admin(List<ProductFavoriteDO> favorites, List<ProductSpuDO> spus) {
48   - List<ProductFavoriteRespVO> resultList = new ArrayList<>(spus.size());
49   - for (ProductFavoriteDO favorite : favorites) {
50   - Optional<ProductSpuDO> spu = spus.stream().filter(e -> e.getId().equals(favorite.getSpuId())).findFirst();
51   - resultList.add(convert2admin(spu.get(), favorite));
52   - }
53   - return resultList;
54   - }
  52 + ProductFavoriteRespVO convert02(ProductSpuDO spu, ProductFavoriteDO favorite);
55 53  
56   - PageResult<ProductFavoriteRespVO> convertPage(PageResult<ProductFavoriteDetailDO> page);
57 54 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/favorite/ProductFavoriteDetailDO.java deleted
1   -package cn.iocoder.yudao.module.product.dal.dataobject.favorite;
2   -
3   -import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
4   -import lombok.Data;
5   -
6   -/**
7   - * 商品收藏 DO
8   - *
9   - * @author 芋道源码
10   - */
11   -@Data
12   -public class ProductFavoriteDetailDO extends ProductFavoriteDO {
13   -
14   - ProductSpuDO spuDO;
15   -}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/favorite/ProductFavoriteMapper.java
... ... @@ -2,11 +2,11 @@ package cn.iocoder.yudao.module.product.dal.mysql.favorite;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
5 6 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
6 7 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
7 8 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
8 9 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
9   -import com.github.yulichang.wrapper.MPJLambdaWrapper;
10 10 import org.apache.ibatis.annotations.Mapper;
11 11  
12 12 @Mapper
... ... @@ -24,10 +24,9 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; {
24 24 }
25 25  
26 26 default PageResult<ProductFavoriteDO> selectPageByUserId(ProductFavoritePageReqVO reqVO) {
27   - return selectPage(reqVO, new MPJLambdaWrapper<ProductFavoriteDO>()
28   - .selectAll(ProductFavoriteDO.class)
29   - .eq(ProductFavoriteDO::getUserId, reqVO.getUserId())
30   - .orderByDesc(ProductFavoriteDO::getCreateTime));
  27 + return selectPage(reqVO, new LambdaQueryWrapperX<ProductFavoriteDO>()
  28 + .eqIfPresent(ProductFavoriteDO::getUserId, reqVO.getUserId())
  29 + .orderByDesc(ProductFavoriteDO::getId));
31 30 }
32 31  
33 32 default Long selectCountByUserId(Long userId) {
... ...