Commit daa7d14b092342b1bd7062873c9c9b7ec79cc2bc

Authored by niou233
1 parent 98aae5ed

reafactor: 会员商品收藏

yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java
... ... @@ -133,9 +133,9 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
133 133 Db.saveOrUpdateBatch(collection);
134 134 }
135 135  
136   - default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, @Param("resultTypeClass_Eg1sG") Class<DTO> var2, @Param("ew") MPJBaseJoin<T> queryWrapper) {
  136 + default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, Class<DTO> resultTypeClass, MPJBaseJoin<T> joinQueryWrapper) {
137 137 IPage<DTO> mpPage = MyBatisUtils.buildPage(pageParam);
138   - selectJoinPage(mpPage, var2, queryWrapper);
  138 + selectJoinPage(mpPage, resultTypeClass, joinQueryWrapper);
139 139 // 转换返回
140 140 return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
141 141 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/favorite/ProductFavoriteController.java
... ... @@ -4,16 +4,15 @@ import cn.hutool.core.collection.CollUtil;
4 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
7   -import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteBatchReqVO;
8 7 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
9 8 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteReqVO;
10 9 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO;
11 10 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert;
12 11 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
13   -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;
  12 +import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
14 13 import cn.iocoder.yudao.module.product.service.favorite.ProductFavoriteService;
  14 +import cn.iocoder.yudao.module.product.service.spu.ProductSpuService;
15 15 import io.swagger.v3.oas.annotations.Operation;
16   -import io.swagger.v3.oas.annotations.Parameter;
17 16 import io.swagger.v3.oas.annotations.tags.Tag;
18 17 import org.springframework.security.access.prepost.PreAuthorize;
19 18 import org.springframework.validation.annotation.Validated;
... ... @@ -24,6 +23,7 @@ import javax.validation.Valid;
24 23 import java.util.List;
25 24  
26 25 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  26 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
27 27  
28 28 @Tag(name = "管理后台 - 商品收藏")
29 29 @RestController
... ... @@ -34,6 +34,9 @@ public class ProductFavoriteController {
34 34 @Resource
35 35 private ProductFavoriteService productFavoriteService;
36 36  
  37 + @Resource
  38 + private ProductSpuService productSpuService;
  39 +
37 40 @PostMapping("/create")
38 41 @Operation(summary = "添加单个商品收藏")
39 42 @PreAuthorize("@ss.hasPermission('product:favorite:create')")
... ... @@ -41,14 +44,6 @@ public class ProductFavoriteController {
41 44 return success(productFavoriteService.createFavorite(reqVO.getUserId(), reqVO.getSpuId()));
42 45 }
43 46  
44   - @PostMapping("/create-list")
45   - @Operation(summary = "添加多个商品收藏")
46   - @PreAuthorize("@ss.hasPermission('product:favorite:create')")
47   - public CommonResult<Boolean> createFavoriteList(@Valid @RequestBody ProductFavoriteBatchReqVO reqVO) {
48   - // todo @jason:待实现;如果有已经收藏的,不用报错,忽略即可;
49   - return success(Boolean.TRUE);
50   - }
51   -
52 47 @DeleteMapping("/delete")
53 48 @Operation(summary = "取消单个商品收藏")
54 49 @PreAuthorize("@ss.hasPermission('product:favorite:delete')")
... ... @@ -57,26 +52,19 @@ public class ProductFavoriteController {
57 52 return success(Boolean.TRUE);
58 53 }
59 54  
60   - @DeleteMapping("/delete-list")
61   - @Operation(summary = "取消单个商品收藏")
62   - @PreAuthorize("@ss.hasPermission('product:favorite:delete')")
63   - public CommonResult<Boolean> deleteFavoriteList(@Valid @RequestBody ProductFavoriteBatchReqVO reqVO) {
64   - // todo @jason:待实现
65   -// productFavoriteService.deleteFavorite(getLoginUserId(), reqVO.getSpuId());
66   - return success(Boolean.TRUE);
67   - }
68   -
69 55 @GetMapping("/page")
70 56 @Operation(summary = "获得商品收藏分页")
71 57 @PreAuthorize("@ss.hasPermission('product:favorite:query')")
72 58 public CommonResult<PageResult<ProductFavoriteRespVO>> getFavoritePage(@Valid ProductFavoritePageReqVO pageVO) {
73   - PageResult<ProductFavoriteDetailDO> favoritePage = productFavoriteService.getFavoritePageByFilter(pageVO);
  59 + PageResult<ProductFavoriteDO> favoritePage = productFavoriteService.getFavoritePage(pageVO);
74 60 if (CollUtil.isEmpty(favoritePage.getList())) {
75 61 return success(PageResult.empty());
76 62 }
77 63  
  64 + List<ProductSpuDO> list = productSpuService.getSpuList(convertSet(favoritePage.getList(), ProductFavoriteDO::getSpuId));
  65 +
78 66 // 得到商品 spu 信息
79   - List<ProductFavoriteRespVO> favorites = ProductFavoriteConvert.INSTANCE.convertList2admin(favoritePage.getList());
  67 + List<ProductFavoriteRespVO> favorites = ProductFavoriteConvert.INSTANCE.convertList2admin(favoritePage.getList(), list);
80 68  
81 69 // 转换 VO 结果
82 70 PageResult<ProductFavoriteRespVO> pageResult = new PageResult<>(favoritePage.getTotal());
... ... @@ -92,13 +80,4 @@ public class ProductFavoriteController {
92 80 ProductFavoriteDO favorite = productFavoriteService.getFavorite(reqVO.getUserId(), reqVO.getSpuId());
93 81 return success(favorite != null);
94 82 }
95   -
96   - @GetMapping(value = "/get-count")
97   - @Operation(summary = "获得商品收藏数量")
98   - @Parameter(name = "userId", description = "用户编号", required = true)
99   - @PreAuthenticated
100   - public CommonResult<Long> getFavoriteCount(@RequestParam("userId") Long userId) {
101   - return success(productFavoriteService.getFavoriteCount(userId));
102   - }
103   -
104 83 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/favorite/ProductFavoriteConvert.java
... ... @@ -13,6 +13,7 @@ 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;
16 17  
17 18 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
18 19  
... ... @@ -41,13 +42,13 @@ public interface ProductFavoriteConvert {
41 42 @Mapping(target = "userId", source = "favorite.userId")
42 43 @Mapping(target = "spuId", source = "favorite.spuId")
43 44 @Mapping(target = "createTime", source = "favorite.createTime")
44   - @Mapping(target = "favoriteStatus", constant = "1")
45 45 ProductFavoriteRespVO convert2admin(ProductSpuDO spu, ProductFavoriteDO favorite);
46 46  
47   - default List<ProductFavoriteRespVO> convertList2admin(List<ProductFavoriteDetailDO> favorites) {
48   - List<ProductFavoriteRespVO> resultList = new ArrayList<>(favorites.size());
49   - for (ProductFavoriteDetailDO favorite : favorites) {
50   - resultList.add(convert2admin(favorite.getSpuDO(), favorite));
  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));
51 52 }
52 53 return resultList;
53 54 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/favorite/ProductFavoriteDetailDO.java
... ... @@ -12,5 +12,4 @@ import lombok.Data;
12 12 public class ProductFavoriteDetailDO extends ProductFavoriteDO {
13 13  
14 14 ProductSpuDO spuDO;
15   -
16 15 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/favorite/ProductFavoriteMapper.java
... ... @@ -5,12 +5,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
6 6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
7 7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
8   -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;
9   -import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
10 8 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11   -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
12 9 import com.github.yulichang.wrapper.MPJLambdaWrapper;
13   -import org.apache.commons.lang3.StringUtils;
14 10 import org.apache.ibatis.annotations.Mapper;
15 11  
16 12 @Mapper
... ... @@ -27,34 +23,11 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; {
27 23 .orderByDesc(ProductFavoriteDO::getId));
28 24 }
29 25  
30   - default PageResult<ProductFavoriteDetailDO> selectPageByUserAndFields(ProductFavoritePageReqVO reqVO) {
31   - MPJLambdaWrapper<ProductFavoriteDO> wrapper = new MPJLambdaWrapper<ProductFavoriteDO>()
  26 + default PageResult<ProductFavoriteDO> selectPageByUserId(ProductFavoritePageReqVO reqVO) {
  27 + return selectPage(reqVO, new MPJLambdaWrapper<ProductFavoriteDO>()
32 28 .selectAll(ProductFavoriteDO.class)
33 29 .eq(ProductFavoriteDO::getUserId, reqVO.getUserId())
34   - .selectAssociation(ProductSpuDO.class, ProductFavoriteDetailDO::getSpuDO);
35   - if(StringUtils.isNotEmpty(reqVO.getName())){
36   - wrapper.likeRight(ProductSpuDO::getName, reqVO.getName());
37   - }
38   - if(StringUtils.isNotEmpty(reqVO.getName()) && StringUtils.isNotEmpty(reqVO.getKeyword())){
39   - wrapper.or();
40   - }
41   - if(StringUtils.isNotEmpty(reqVO.getKeyword())){
42   - wrapper.likeRight(ProductSpuDO::getKeyword, reqVO.getKeyword());
43   - }
44   -
45   - if(reqVO.getCreateTime() != null){
46   - if (reqVO.getCreateTime()[0] != null && reqVO.getCreateTime()[1] != null) {
47   - wrapper.between(ProductFavoriteDO::getCreateTime, reqVO.getCreateTime()[0], reqVO.getCreateTime()[1]);
48   - }
49   - if (reqVO.getCreateTime()[0] != null) {
50   - wrapper.ge(ProductFavoriteDO::getCreateTime, reqVO.getCreateTime()[0]);
51   - }
52   - if (reqVO.getCreateTime()[1] != null) {
53   - wrapper.le(ProductFavoriteDO::getCreateTime, reqVO.getCreateTime()[1]);
54   - }
55   - }
56   -
57   - return selectJoinPage(reqVO, ProductFavoriteDetailDO.class, wrapper);
  30 + .orderByDesc(ProductFavoriteDO::getCreateTime));
58 31 }
59 32  
60 33 default Long selectCountByUserId(Long userId) {
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/favorite/ProductFavoriteService.java
... ... @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
5 5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
6 6 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
7   -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;
8 7  
9 8 import javax.validation.Valid;
10 9  
... ... @@ -44,7 +43,7 @@ public interface ProductFavoriteService {
44 43 *
45 44 * @param reqVO 请求 vo
46 45 */
47   - PageResult<ProductFavoriteDetailDO> getFavoritePageByFilter(@Valid ProductFavoritePageReqVO reqVO);
  46 + PageResult<ProductFavoriteDO> getFavoritePage(@Valid ProductFavoritePageReqVO reqVO);
48 47  
49 48 /**
50 49 * 获取收藏过商品
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/favorite/ProductFavoriteServiceImpl.java
... ... @@ -5,7 +5,6 @@ import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavor
5 5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
6 6 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert;
7 7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO;
8   -import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDetailDO;
9 8 import cn.iocoder.yudao.module.product.dal.mysql.favorite.ProductFavoriteMapper;
10 9 import org.springframework.stereotype.Service;
11 10 import org.springframework.validation.annotation.Validated;
... ... @@ -56,8 +55,8 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService {
56 55 }
57 56  
58 57 @Override
59   - public PageResult<ProductFavoriteDetailDO> getFavoritePageByFilter(@Valid ProductFavoritePageReqVO reqVO) {
60   - return productFavoriteMapper.selectPageByUserAndFields(reqVO);
  58 + public PageResult<ProductFavoriteDO> getFavoritePage(@Valid ProductFavoritePageReqVO reqVO) {
  59 + return productFavoriteMapper.selectPageByUserId(reqVO);
61 60 }
62 61  
63 62 @Override
... ...