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,9 +133,9 @@ public interface BaseMapperX<T> extends MPJBaseMapper<T> {
133 Db.saveOrUpdateBatch(collection); 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 IPage<DTO> mpPage = MyBatisUtils.buildPage(pageParam); 137 IPage<DTO> mpPage = MyBatisUtils.buildPage(pageParam);
138 - selectJoinPage(mpPage, var2, queryWrapper); 138 + selectJoinPage(mpPage, resultTypeClass, joinQueryWrapper);
139 // 转换返回 139 // 转换返回
140 return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); 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,16 +4,15 @@ import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; 6 import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated;
7 -import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteBatchReqVO;  
8 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO; 7 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
9 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteReqVO; 8 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteReqVO;
10 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO; 9 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoriteRespVO;
11 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert; 10 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert;
12 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 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 import cn.iocoder.yudao.module.product.service.favorite.ProductFavoriteService; 13 import cn.iocoder.yudao.module.product.service.favorite.ProductFavoriteService;
  14 +import cn.iocoder.yudao.module.product.service.spu.ProductSpuService;
15 import io.swagger.v3.oas.annotations.Operation; 15 import io.swagger.v3.oas.annotations.Operation;
16 -import io.swagger.v3.oas.annotations.Parameter;  
17 import io.swagger.v3.oas.annotations.tags.Tag; 16 import io.swagger.v3.oas.annotations.tags.Tag;
18 import org.springframework.security.access.prepost.PreAuthorize; 17 import org.springframework.security.access.prepost.PreAuthorize;
19 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
@@ -24,6 +23,7 @@ import javax.validation.Valid; @@ -24,6 +23,7 @@ import javax.validation.Valid;
24 import java.util.List; 23 import java.util.List;
25 24
26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 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 @Tag(name = "管理后台 - 商品收藏") 28 @Tag(name = "管理后台 - 商品收藏")
29 @RestController 29 @RestController
@@ -34,6 +34,9 @@ public class ProductFavoriteController { @@ -34,6 +34,9 @@ public class ProductFavoriteController {
34 @Resource 34 @Resource
35 private ProductFavoriteService productFavoriteService; 35 private ProductFavoriteService productFavoriteService;
36 36
  37 + @Resource
  38 + private ProductSpuService productSpuService;
  39 +
37 @PostMapping("/create") 40 @PostMapping("/create")
38 @Operation(summary = "添加单个商品收藏") 41 @Operation(summary = "添加单个商品收藏")
39 @PreAuthorize("@ss.hasPermission('product:favorite:create')") 42 @PreAuthorize("@ss.hasPermission('product:favorite:create')")
@@ -41,14 +44,6 @@ public class ProductFavoriteController { @@ -41,14 +44,6 @@ public class ProductFavoriteController {
41 return success(productFavoriteService.createFavorite(reqVO.getUserId(), reqVO.getSpuId())); 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 @DeleteMapping("/delete") 47 @DeleteMapping("/delete")
53 @Operation(summary = "取消单个商品收藏") 48 @Operation(summary = "取消单个商品收藏")
54 @PreAuthorize("@ss.hasPermission('product:favorite:delete')") 49 @PreAuthorize("@ss.hasPermission('product:favorite:delete')")
@@ -57,26 +52,19 @@ public class ProductFavoriteController { @@ -57,26 +52,19 @@ public class ProductFavoriteController {
57 return success(Boolean.TRUE); 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 @GetMapping("/page") 55 @GetMapping("/page")
70 @Operation(summary = "获得商品收藏分页") 56 @Operation(summary = "获得商品收藏分页")
71 @PreAuthorize("@ss.hasPermission('product:favorite:query')") 57 @PreAuthorize("@ss.hasPermission('product:favorite:query')")
72 public CommonResult<PageResult<ProductFavoriteRespVO>> getFavoritePage(@Valid ProductFavoritePageReqVO pageVO) { 58 public CommonResult<PageResult<ProductFavoriteRespVO>> getFavoritePage(@Valid ProductFavoritePageReqVO pageVO) {
73 - PageResult<ProductFavoriteDetailDO> favoritePage = productFavoriteService.getFavoritePageByFilter(pageVO); 59 + PageResult<ProductFavoriteDO> favoritePage = productFavoriteService.getFavoritePage(pageVO);
74 if (CollUtil.isEmpty(favoritePage.getList())) { 60 if (CollUtil.isEmpty(favoritePage.getList())) {
75 return success(PageResult.empty()); 61 return success(PageResult.empty());
76 } 62 }
77 63
  64 + List<ProductSpuDO> list = productSpuService.getSpuList(convertSet(favoritePage.getList(), ProductFavoriteDO::getSpuId));
  65 +
78 // 得到商品 spu 信息 66 // 得到商品 spu 信息
79 - List<ProductFavoriteRespVO> favorites = ProductFavoriteConvert.INSTANCE.convertList2admin(favoritePage.getList()); 67 + List<ProductFavoriteRespVO> favorites = ProductFavoriteConvert.INSTANCE.convertList2admin(favoritePage.getList(), list);
80 68
81 // 转换 VO 结果 69 // 转换 VO 结果
82 PageResult<ProductFavoriteRespVO> pageResult = new PageResult<>(favoritePage.getTotal()); 70 PageResult<ProductFavoriteRespVO> pageResult = new PageResult<>(favoritePage.getTotal());
@@ -92,13 +80,4 @@ public class ProductFavoriteController { @@ -92,13 +80,4 @@ public class ProductFavoriteController {
92 ProductFavoriteDO favorite = productFavoriteService.getFavorite(reqVO.getUserId(), reqVO.getSpuId()); 80 ProductFavoriteDO favorite = productFavoriteService.getFavorite(reqVO.getUserId(), reqVO.getSpuId());
93 return success(favorite != null); 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,6 +13,7 @@ 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;
16 17
17 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; 18 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
18 19
@@ -41,13 +42,13 @@ public interface ProductFavoriteConvert { @@ -41,13 +42,13 @@ public interface ProductFavoriteConvert {
41 @Mapping(target = "userId", source = "favorite.userId") 42 @Mapping(target = "userId", source = "favorite.userId")
42 @Mapping(target = "spuId", source = "favorite.spuId") 43 @Mapping(target = "spuId", source = "favorite.spuId")
43 @Mapping(target = "createTime", source = "favorite.createTime") 44 @Mapping(target = "createTime", source = "favorite.createTime")
44 - @Mapping(target = "favoriteStatus", constant = "1")  
45 ProductFavoriteRespVO convert2admin(ProductSpuDO spu, ProductFavoriteDO favorite); 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 return resultList; 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,5 +12,4 @@ import lombok.Data;
12 public class ProductFavoriteDetailDO extends ProductFavoriteDO { 12 public class ProductFavoriteDetailDO extends ProductFavoriteDO {
13 13
14 ProductSpuDO spuDO; 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,12 +5,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO; 5 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; 6 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 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 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 8 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11 -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;  
12 import com.github.yulichang.wrapper.MPJLambdaWrapper; 9 import com.github.yulichang.wrapper.MPJLambdaWrapper;
13 -import org.apache.commons.lang3.StringUtils;  
14 import org.apache.ibatis.annotations.Mapper; 10 import org.apache.ibatis.annotations.Mapper;
15 11
16 @Mapper 12 @Mapper
@@ -27,34 +23,11 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; { @@ -27,34 +23,11 @@ public interface ProductFavoriteMapper extends BaseMapperX&lt;ProductFavoriteDO&gt; {
27 .orderByDesc(ProductFavoriteDO::getId)); 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 .selectAll(ProductFavoriteDO.class) 28 .selectAll(ProductFavoriteDO.class)
33 .eq(ProductFavoriteDO::getUserId, reqVO.getUserId()) 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 default Long selectCountByUserId(Long userId) { 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,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO; 4 import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavoritePageReqVO;
5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; 5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
6 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 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 import javax.validation.Valid; 8 import javax.validation.Valid;
10 9
@@ -44,7 +43,7 @@ public interface ProductFavoriteService { @@ -44,7 +43,7 @@ public interface ProductFavoriteService {
44 * 43 *
45 * @param reqVO 请求 vo 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,7 +5,6 @@ import cn.iocoder.yudao.module.product.controller.admin.favorite.vo.ProductFavor
5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; 5 import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO;
6 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert; 6 import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert;
7 import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; 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.mysql.favorite.ProductFavoriteMapper; 8 import cn.iocoder.yudao.module.product.dal.mysql.favorite.ProductFavoriteMapper;
10 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
11 import org.springframework.validation.annotation.Validated; 10 import org.springframework.validation.annotation.Validated;
@@ -56,8 +55,8 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService { @@ -56,8 +55,8 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService {
56 } 55 }
57 56
58 @Override 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 @Override 62 @Override