Commit c7a21b2a6447a547c6470a26180cbee6a2bb39bf
1 parent
867293a4
mall:优化商品收藏的分页接口
Showing
7 changed files
with
23 additions
and
46 deletions
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
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
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/favorite/vo/ProductFavoriteRespVO.java
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<ProductFavoriteDO> { |
| 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) { | ... | ... |