Commit 8ed52701fd0c651b609c632b35447f572c1c0628
1 parent
4b643a7b
调整商品收藏的命名
Showing
5 changed files
with
35 additions
and
42 deletions
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/favorite/AppFavoriteController.java
| 1 | package cn.iocoder.yudao.module.product.controller.app.favorite; | 1 | package cn.iocoder.yudao.module.product.controller.app.favorite; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 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.controller.app.favorite.vo.AppFavoriteReqVO; | 7 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteReqVO; |
| 8 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; | 8 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; |
| @@ -17,11 +17,11 @@ import org.springframework.web.bind.annotation.*; | @@ -17,11 +17,11 @@ import org.springframework.web.bind.annotation.*; | ||
| 17 | 17 | ||
| 18 | import javax.annotation.Resource; | 18 | import javax.annotation.Resource; |
| 19 | import javax.validation.Valid; | 19 | import javax.validation.Valid; |
| 20 | - | ||
| 21 | import java.util.List; | 20 | import java.util.List; |
| 22 | import java.util.Objects; | 21 | import java.util.Objects; |
| 23 | 22 | ||
| 24 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 23 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 24 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 25 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 25 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 26 | 26 | ||
| 27 | @Tag(name = "用户 APP - 商品收藏") | 27 | @Tag(name = "用户 APP - 商品收藏") |
| @@ -51,17 +51,19 @@ public class AppFavoriteController { | @@ -51,17 +51,19 @@ public class AppFavoriteController { | ||
| 51 | @GetMapping(value = "/page") | 51 | @GetMapping(value = "/page") |
| 52 | @Operation(summary = "分页获取商品收藏列表") | 52 | @Operation(summary = "分页获取商品收藏列表") |
| 53 | public CommonResult<PageResult<AppFavoriteRespVO>> getFavoritePage(AppFavoritePageReqVO reqVO) { | 53 | public CommonResult<PageResult<AppFavoriteRespVO>> getFavoritePage(AppFavoritePageReqVO reqVO) { |
| 54 | - PageResult<ProductFavoriteDO> favorites = productFavoriteService.getFavoritePage(getLoginUserId(), reqVO); | ||
| 55 | - if (favorites.getTotal() <= 0) { | 54 | + PageResult<ProductFavoriteDO> favoritePage = productFavoriteService.getFavoritePage(getLoginUserId(), reqVO); |
| 55 | + if (CollUtil.isEmpty(favoritePage.getList())) { | ||
| 56 | return success(PageResult.empty()); | 56 | return success(PageResult.empty()); |
| 57 | } | 57 | } |
| 58 | - List<ProductFavoriteDO> productFavoriteList = favorites.getList(); | 58 | + |
| 59 | // 得到商品 spu 信息 | 59 | // 得到商品 spu 信息 |
| 60 | - List<Long> spuIds = CollectionUtils.convertList(productFavoriteList, ProductFavoriteDO::getSpuId); | ||
| 61 | - List<ProductSpuDO> spuList = productSpuService.getSpuList(spuIds); | ||
| 62 | - //转换 VO | ||
| 63 | - PageResult<AppFavoriteRespVO> pageResult = new PageResult<>(favorites.getTotal()); | ||
| 64 | - pageResult.setList(ProductFavoriteConvert.INSTANCE.convertList(productFavoriteList, spuList)); | 60 | + List<ProductFavoriteDO> favorites = favoritePage.getList(); |
| 61 | + List<Long> spuIds = convertList(favorites, ProductFavoriteDO::getSpuId); | ||
| 62 | + List<ProductSpuDO> spus = productSpuService.getSpuList(spuIds); | ||
| 63 | + | ||
| 64 | + // 转换 VO 结果 | ||
| 65 | + PageResult<AppFavoriteRespVO> pageResult = new PageResult<>(favoritePage.getTotal()); | ||
| 66 | + pageResult.setList(ProductFavoriteConvert.INSTANCE.convertList(favorites, spus)); | ||
| 65 | return success(pageResult); | 67 | return success(pageResult); |
| 66 | } | 68 | } |
| 67 | 69 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/favorite/vo/AppFavoriteReqVO.java
| @@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull; | @@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull; | ||
| 9 | 9 | ||
| 10 | import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; | 10 | import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; |
| 11 | 11 | ||
| 12 | -@Schema(description = "用户 APP - 商品收藏 Request VO") // 用于收藏、取消收藏, 获取收藏 | 12 | +@Schema(description = "用户 APP - 商品收藏 Request VO") // 用于收藏、取消收藏、获取收藏 |
| 13 | @Data | 13 | @Data |
| 14 | public class AppFavoriteReqVO { | 14 | public class AppFavoriteReqVO { |
| 15 | 15 |
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.util.collection.CollectionUtils; | ||
| 4 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteReqVO; | 3 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteReqVO; |
| 5 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; | 4 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; |
| 6 | import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; | 5 | import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; |
| @@ -13,6 +12,8 @@ import java.util.ArrayList; | @@ -13,6 +12,8 @@ import java.util.ArrayList; | ||
| 13 | import java.util.List; | 12 | import java.util.List; |
| 14 | import java.util.Map; | 13 | import java.util.Map; |
| 15 | 14 | ||
| 15 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | ||
| 16 | + | ||
| 16 | @Mapper | 17 | @Mapper |
| 17 | public interface ProductFavoriteConvert { | 18 | public interface ProductFavoriteConvert { |
| 18 | 19 | ||
| @@ -20,17 +21,18 @@ public interface ProductFavoriteConvert { | @@ -20,17 +21,18 @@ public interface ProductFavoriteConvert { | ||
| 20 | 21 | ||
| 21 | ProductFavoriteDO convert(Long userId, AppFavoriteReqVO reqVO); | 22 | ProductFavoriteDO convert(Long userId, AppFavoriteReqVO reqVO); |
| 22 | 23 | ||
| 23 | - @Mapping(target = "id", source = "favoriteDO.id") | ||
| 24 | - @Mapping(target = "spuName", source = "spuDO.name") | ||
| 25 | - AppFavoriteRespVO convert(ProductSpuDO spuDO, ProductFavoriteDO favoriteDO); | 24 | + @Mapping(target = "id", source = "favorite.id") |
| 25 | + @Mapping(target = "spuName", source = "spu.name") | ||
| 26 | + AppFavoriteRespVO convert(ProductSpuDO spu, ProductFavoriteDO favorite); | ||
| 26 | 27 | ||
| 27 | - default List<AppFavoriteRespVO> convertList(List<ProductFavoriteDO> productFavoriteDOList, List<ProductSpuDO> productSpuDOList) { | ||
| 28 | - List<AppFavoriteRespVO> resultList = new ArrayList<>(productFavoriteDOList.size()); | ||
| 29 | - Map<Long, ProductSpuDO> spuMap = CollectionUtils.convertMap(productSpuDOList, ProductSpuDO::getId); | ||
| 30 | - for (ProductFavoriteDO item : productFavoriteDOList) { | ||
| 31 | - ProductSpuDO spuDO = spuMap.get(item.getSpuId()); | ||
| 32 | - resultList.add(convert(spuDO, item)); | 28 | + default List<AppFavoriteRespVO> convertList(List<ProductFavoriteDO> favorites, List<ProductSpuDO> spus) { |
| 29 | + List<AppFavoriteRespVO> resultList = new ArrayList<>(favorites.size()); | ||
| 30 | + Map<Long, ProductSpuDO> spuMap = convertMap(spus, ProductSpuDO::getId); | ||
| 31 | + for (ProductFavoriteDO favorite : favorites) { | ||
| 32 | + ProductSpuDO spuDO = spuMap.get(favorite.getSpuId()); | ||
| 33 | + resultList.add(convert(spuDO, favorite)); | ||
| 33 | } | 34 | } |
| 34 | return resultList; | 35 | return resultList; |
| 35 | } | 36 | } |
| 37 | + | ||
| 36 | } | 38 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/favorite/ProductFavoriteMapper.java
| 1 | package cn.iocoder.yudao.module.product.dal.mysql.favorite; | 1 | package cn.iocoder.yudao.module.product.dal.mysql.favorite; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.lang.Assert; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| @@ -13,9 +12,6 @@ import org.apache.ibatis.annotations.Mapper; | @@ -13,9 +12,6 @@ import org.apache.ibatis.annotations.Mapper; | ||
| 13 | public interface ProductFavoriteMapper extends BaseMapperX<ProductFavoriteDO> { | 12 | public interface ProductFavoriteMapper extends BaseMapperX<ProductFavoriteDO> { |
| 14 | 13 | ||
| 15 | default ProductFavoriteDO selectByUserAndSpuAndType(Long userId, Long spuId, Integer type) { | 14 | default ProductFavoriteDO selectByUserAndSpuAndType(Long userId, Long spuId, Integer type) { |
| 16 | - Assert.notNull(userId, "the userId must not be null"); | ||
| 17 | - Assert.notNull(spuId, "the spuId must not be null"); | ||
| 18 | - Assert.notNull(type, "the type must not be null"); | ||
| 19 | return selectOne(new LambdaQueryWrapperX<ProductFavoriteDO>() | 15 | return selectOne(new LambdaQueryWrapperX<ProductFavoriteDO>() |
| 20 | .eq(ProductFavoriteDO::getUserId, userId) | 16 | .eq(ProductFavoriteDO::getUserId, userId) |
| 21 | .eq(ProductFavoriteDO::getSpuId, spuId) | 17 | .eq(ProductFavoriteDO::getSpuId, spuId) |
| @@ -23,9 +19,6 @@ public interface ProductFavoriteMapper extends BaseMapperX<ProductFavoriteDO> { | @@ -23,9 +19,6 @@ public interface ProductFavoriteMapper extends BaseMapperX<ProductFavoriteDO> { | ||
| 23 | } | 19 | } |
| 24 | 20 | ||
| 25 | default PageResult<ProductFavoriteDO> selectPageByUserAndType(Long userId, Integer type, PageParam pageParam) { | 21 | default PageResult<ProductFavoriteDO> selectPageByUserAndType(Long userId, Integer type, PageParam pageParam) { |
| 26 | - Assert.notNull(userId, "the userId must not be null"); | ||
| 27 | - Assert.notNull(type, "the type must not be null"); | ||
| 28 | - Assert.notNull(pageParam, "the pageParam must not be null"); | ||
| 29 | return selectPage(pageParam, new LambdaQueryWrapper<ProductFavoriteDO>() | 22 | return selectPage(pageParam, new LambdaQueryWrapper<ProductFavoriteDO>() |
| 30 | .eq(ProductFavoriteDO::getUserId, userId) | 23 | .eq(ProductFavoriteDO::getUserId, userId) |
| 31 | .eq(ProductFavoriteDO::getType, type) | 24 | .eq(ProductFavoriteDO::getType, type) |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/favorite/ProductFavoriteServiceImpl.java
| 1 | package cn.iocoder.yudao.module.product.service.favorite; | 1 | package cn.iocoder.yudao.module.product.service.favorite; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.lang.Assert; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 6 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; | 4 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoritePageReqVO; |
| 7 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteReqVO; | 5 | import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteReqVO; |
| 8 | import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert; | 6 | import cn.iocoder.yudao.module.product.convert.favorite.ProductFavoriteConvert; |
| 9 | import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; | 7 | import cn.iocoder.yudao.module.product.dal.dataobject.favorite.ProductFavoriteDO; |
| 10 | -import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; | ||
| 11 | import cn.iocoder.yudao.module.product.dal.mysql.favorite.ProductFavoriteMapper; | 8 | import cn.iocoder.yudao.module.product.dal.mysql.favorite.ProductFavoriteMapper; |
| 12 | -import cn.iocoder.yudao.module.product.controller.app.favorite.vo.AppFavoriteRespVO; | ||
| 13 | -import cn.iocoder.yudao.module.product.service.spu.ProductSpuService; | ||
| 14 | import org.springframework.stereotype.Service; | 9 | import org.springframework.stereotype.Service; |
| 15 | import org.springframework.validation.annotation.Validated; | 10 | import org.springframework.validation.annotation.Validated; |
| 16 | 11 | ||
| 17 | import javax.annotation.Resource; | 12 | import javax.annotation.Resource; |
| 18 | import javax.validation.Valid; | 13 | import javax.validation.Valid; |
| 19 | -import java.util.ArrayList; | ||
| 20 | -import java.util.List; | ||
| 21 | -import java.util.Map; | ||
| 22 | import java.util.Objects; | 14 | import java.util.Objects; |
| 23 | 15 | ||
| 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 16 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| @@ -39,10 +31,12 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService { | @@ -39,10 +31,12 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService { | ||
| 39 | 31 | ||
| 40 | @Override | 32 | @Override |
| 41 | public Long createFavorite(Long userId, @Valid AppFavoriteReqVO reqVO) { | 33 | public Long createFavorite(Long userId, @Valid AppFavoriteReqVO reqVO) { |
| 42 | - ProductFavoriteDO favoriteDO = productFavoriteMapper.selectByUserAndSpuAndType(userId, reqVO.getSpuId(), reqVO.getType()); | ||
| 43 | - if (Objects.nonNull(favoriteDO)) { | 34 | + ProductFavoriteDO favorite = productFavoriteMapper.selectByUserAndSpuAndType( |
| 35 | + userId, reqVO.getSpuId(), reqVO.getType()); | ||
| 36 | + if (Objects.nonNull(favorite)) { | ||
| 44 | throw exception(FAVORITE_EXISTS); | 37 | throw exception(FAVORITE_EXISTS); |
| 45 | } | 38 | } |
| 39 | + | ||
| 46 | ProductFavoriteDO entity = ProductFavoriteConvert.INSTANCE.convert(userId, reqVO); | 40 | ProductFavoriteDO entity = ProductFavoriteConvert.INSTANCE.convert(userId, reqVO); |
| 47 | productFavoriteMapper.insert(entity); | 41 | productFavoriteMapper.insert(entity); |
| 48 | return entity.getId(); | 42 | return entity.getId(); |
| @@ -50,16 +44,18 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService { | @@ -50,16 +44,18 @@ public class ProductFavoriteServiceImpl implements ProductFavoriteService { | ||
| 50 | 44 | ||
| 51 | @Override | 45 | @Override |
| 52 | public void deleteFavorite(Long userId, @Valid AppFavoriteReqVO reqVO) { | 46 | public void deleteFavorite(Long userId, @Valid AppFavoriteReqVO reqVO) { |
| 53 | - ProductFavoriteDO favoriteDO = productFavoriteMapper.selectByUserAndSpuAndType(userId, reqVO.getSpuId(), reqVO.getType()); | ||
| 54 | - if (Objects.isNull(favoriteDO)) { | 47 | + ProductFavoriteDO favorite = productFavoriteMapper.selectByUserAndSpuAndType( |
| 48 | + userId, reqVO.getSpuId(), reqVO.getType()); | ||
| 49 | + if (Objects.isNull(favorite)) { | ||
| 55 | throw exception(FAVORITE_NOT_EXISTS); | 50 | throw exception(FAVORITE_NOT_EXISTS); |
| 56 | } | 51 | } |
| 57 | - productFavoriteMapper.deleteById(favoriteDO.getId()); | 52 | + |
| 53 | + productFavoriteMapper.deleteById(favorite.getId()); | ||
| 58 | } | 54 | } |
| 59 | 55 | ||
| 60 | @Override | 56 | @Override |
| 61 | public PageResult<ProductFavoriteDO> getFavoritePage(Long userId, @Valid AppFavoritePageReqVO reqVO) { | 57 | public PageResult<ProductFavoriteDO> getFavoritePage(Long userId, @Valid AppFavoritePageReqVO reqVO) { |
| 62 | - return productFavoriteMapper.selectPageByUserAndType(userId, reqVO.getType(), reqVO); | 58 | + return productFavoriteMapper.selectPageByUserAndType(userId, reqVO.getType(), reqVO); |
| 63 | } | 59 | } |
| 64 | 60 | ||
| 65 | @Override | 61 | @Override |