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
| @@ -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<ProductFavoriteDO> { | @@ -24,10 +24,9 @@ public interface ProductFavoriteMapper extends BaseMapperX<ProductFavoriteDO> { | ||
| 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) { |