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,4 +139,5 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
139 // 转换返回 139 // 转换返回
140 return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); 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,20 +41,13 @@ public class ProductFavoriteController {
41 @Operation(summary = "获得商品收藏分页") 41 @Operation(summary = "获得商品收藏分页")
42 @PreAuthorize("@ss.hasPermission('product:favorite:query')") 42 @PreAuthorize("@ss.hasPermission('product:favorite:query')")
43 public CommonResult<PageResult<ProductFavoriteRespVO>> getFavoritePage(@Valid ProductFavoritePageReqVO pageVO) { 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 return success(PageResult.empty()); 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,4 +14,5 @@ public class ProductFavoritePageReqVO extends PageParam {
14 14
15 @Schema(description = "用户编号", example = "5036") 15 @Schema(description = "用户编号", example = "5036")
16 private Long userId; 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,4 +15,5 @@ public class ProductFavoriteRespVO extends ProductSpuRespVO {
15 15
16 @Schema(description = "spuId", requiredMode = Schema.RequiredMode.REQUIRED, example = "111") 16 @Schema(description = "spuId", requiredMode = Schema.RequiredMode.REQUIRED, example = "111")
17 private Long spuId; 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 package cn.iocoder.yudao.module.product.convert.favorite; 1 package cn.iocoder.yudao.module.product.convert.favorite;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
4 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO; 5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO;
5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; 6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO;
6 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
7 -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;  
8 import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; 8 import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
9 import org.mapstruct.Mapper; 9 import org.mapstruct.Mapper;
10 import org.mapstruct.Mapping; 10 import org.mapstruct.Mapping;
@@ -13,7 +13,6 @@ import org.mapstruct.factory.Mappers; @@ -13,7 +13,6 @@ import org.mapstruct.factory.Mappers;
13 import java.util.ArrayList; 13 import java.util.ArrayList;
14 import java.util.List; 14 import java.util.List;
15 import java.util.Map; 15 import java.util.Map;
16 -import java.util.Optional;  
17 16
18 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; 17 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
19 18
@@ -38,20 +37,18 @@ public interface ProductFavoriteConvert { @@ -38,20 +37,18 @@ public interface ProductFavoriteConvert {
38 return resultList; 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 @Mapping(target = "id", source = "favorite.id") 48 @Mapping(target = "id", source = "favorite.id")
42 @Mapping(target = "userId", source = "favorite.userId") 49 @Mapping(target = "userId", source = "favorite.userId")
43 @Mapping(target = "spuId", source = "favorite.spuId") 50 @Mapping(target = "spuId", source = "favorite.spuId")
44 @Mapping(target = "createTime", source = "favorite.createTime") 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,11 +2,11 @@ package cn.iocoder.yudao.module.product.dal.mysql.favorite;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO; 6 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; 7 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 8 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
8 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 9 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
9 -import com.github.yulichang.wrapper.MPJLambdaWrapper;  
10 import org.apache.ibatis.annotations.Mapper; 10 import org.apache.ibatis.annotations.Mapper;
11 11
12 @Mapper 12 @Mapper
@@ -24,10 +24,9 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; { @@ -24,10 +24,9 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; {
24 } 24 }
25 25
26 default PageResult<ProductFavoriteDO> selectPageByUserId(ProductFavoritePageReqVO reqVO) { 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 default Long selectCountByUserId(Long userId) { 32 default Long selectCountByUserId(Long userId) {