Commit 147cd271b83bcb5b1c4663704feddb70ee0252d4
1 parent
7cdb321f
fix:完善拼团活动列表展示
Showing
8 changed files
with
44 additions
and
16 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationActivityController.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.controller.admin.combination; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.collection.CollectionUtil; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | |
| 5 | 7 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 6 | 8 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 9 | +import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; | |
| 10 | +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | |
| 7 | 11 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.*; |
| 8 | 12 | import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; |
| 9 | 13 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationActivityDO; |
| ... | ... | @@ -22,6 +26,7 @@ import javax.validation.Valid; |
| 22 | 26 | import java.io.IOException; |
| 23 | 27 | import java.util.Collection; |
| 24 | 28 | import java.util.List; |
| 29 | +import java.util.Set; | |
| 25 | 30 | |
| 26 | 31 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 27 | 32 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| ... | ... | @@ -34,6 +39,8 @@ public class CombinationActivityController { |
| 34 | 39 | |
| 35 | 40 | @Resource |
| 36 | 41 | private CombinationActivityService combinationActivityService; |
| 42 | + @Resource | |
| 43 | + private ProductSpuApi spuApi; | |
| 37 | 44 | |
| 38 | 45 | @PostMapping("/create") |
| 39 | 46 | @Operation(summary = "创建拼团活动") |
| ... | ... | @@ -65,7 +72,7 @@ public class CombinationActivityController { |
| 65 | 72 | @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") |
| 66 | 73 | public CommonResult<CombinationActivityRespVO> getCombinationActivity(@RequestParam("id") Long id) { |
| 67 | 74 | CombinationActivityDO combinationActivity = combinationActivityService.getCombinationActivity(id); |
| 68 | - List<CombinationProductDO> productDOs = combinationActivityService.getProductsByActivityId(id); | |
| 75 | + List<CombinationProductDO> productDOs = combinationActivityService.getProductsByActivityIds(CollectionUtil.newArrayList(id)); | |
| 69 | 76 | return success(CombinationActivityConvert.INSTANCE.convert(combinationActivity, productDOs)); |
| 70 | 77 | } |
| 71 | 78 | |
| ... | ... | @@ -83,7 +90,11 @@ public class CombinationActivityController { |
| 83 | 90 | @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") |
| 84 | 91 | public CommonResult<PageResult<CombinationActivityRespVO>> getCombinationActivityPage(@Valid CombinationActivityPageReqVO pageVO) { |
| 85 | 92 | PageResult<CombinationActivityDO> pageResult = combinationActivityService.getCombinationActivityPage(pageVO); |
| 86 | - return success(CombinationActivityConvert.INSTANCE.convertPage(pageResult)); | |
| 93 | + Set<Long> aIds = CollectionUtils.convertSet(pageResult.getList(), CombinationActivityDO::getId); | |
| 94 | + List<CombinationProductDO> productDOs = combinationActivityService.getProductsByActivityIds(aIds); | |
| 95 | + Set<Long> spuIds = CollectionUtils.convertSet(pageResult.getList(), CombinationActivityDO::getSpuId); | |
| 96 | + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(spuIds); | |
| 97 | + return success(CombinationActivityConvert.INSTANCE.convertPage(pageResult, productDOs, spuList)); | |
| 87 | 98 | } |
| 88 | 99 | |
| 89 | 100 | @GetMapping("/export-excel") | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/activity/CombinationActivityRespVO.java
| ... | ... | @@ -17,6 +17,12 @@ import java.util.List; |
| 17 | 17 | @ToString(callSuper = true) |
| 18 | 18 | public class CombinationActivityRespVO extends CombinationActivityBaseVO { |
| 19 | 19 | |
| 20 | + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") | |
| 21 | + private String spuName; | |
| 22 | + | |
| 23 | + @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.png") | |
| 24 | + private String picUrl; | |
| 25 | + | |
| 20 | 26 | @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") |
| 21 | 27 | private Long id; |
| 22 | 28 | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/activity/SeckillActivityRespVO.java
| ... | ... | @@ -18,7 +18,7 @@ public class SeckillActivityRespVO extends SeckillActivityBaseVO { |
| 18 | 18 | @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") |
| 19 | 19 | private String spuName; |
| 20 | 20 | |
| 21 | - @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") | |
| 21 | + @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.png") | |
| 22 | 22 | private String picUrl; |
| 23 | 23 | |
| 24 | 24 | @Schema(description = "秒杀活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java
| ... | ... | @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.convert.combination; |
| 3 | 3 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; |
| 6 | +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | |
| 6 | 7 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityCreateReqVO; |
| 7 | 8 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityExcelVO; |
| 8 | 9 | import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityRespVO; |
| ... | ... | @@ -63,11 +64,7 @@ public interface CombinationActivityConvert { |
| 63 | 64 | |
| 64 | 65 | default CombinationActivityRespVO convert(CombinationActivityDO bean, List<CombinationProductDO> productDOs) { |
| 65 | 66 | CombinationActivityRespVO respVO = convert(bean); |
| 66 | - ArrayList<CombinationProductRespVO> vos = new ArrayList<>(); | |
| 67 | - productDOs.forEach(item -> { | |
| 68 | - vos.add(convert(item)); | |
| 69 | - }); | |
| 70 | - respVO.setProducts(vos); | |
| 67 | + respVO.setProducts(convertList2(productDOs)); | |
| 71 | 68 | return respVO; |
| 72 | 69 | } |
| 73 | 70 | |
| ... | ... | @@ -75,6 +72,19 @@ public interface CombinationActivityConvert { |
| 75 | 72 | |
| 76 | 73 | PageResult<CombinationActivityRespVO> convertPage(PageResult<CombinationActivityDO> page); |
| 77 | 74 | |
| 75 | + default PageResult<CombinationActivityRespVO> convertPage(PageResult<CombinationActivityDO> page, List<CombinationProductDO> productDOList, List<ProductSpuRespDTO> spuList) { | |
| 76 | + Map<Long, ProductSpuRespDTO> spuMap = CollectionUtils.convertMap(spuList, ProductSpuRespDTO::getId, c -> c); | |
| 77 | + PageResult<CombinationActivityRespVO> pageResult = convertPage(page); | |
| 78 | + pageResult.getList().forEach(item -> { | |
| 79 | + item.setSpuName(spuMap.get(item.getSpuId()).getName()); | |
| 80 | + item.setPicUrl(spuMap.get(item.getSpuId()).getPicUrl()); | |
| 81 | + item.setProducts(convertList2(productDOList)); | |
| 82 | + }); | |
| 83 | + return pageResult; | |
| 84 | + } | |
| 85 | + | |
| 86 | + List<CombinationProductRespVO> convertList2(List<CombinationProductDO> productDOs); | |
| 87 | + | |
| 78 | 88 | List<CombinationActivityExcelVO> convertList02(List<CombinationActivityDO> list); |
| 79 | 89 | |
| 80 | 90 | @Mappings({ | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckillactivity/SeckillActivityConvert.java
| ... | ... | @@ -62,7 +62,7 @@ public interface SeckillActivityConvert { |
| 62 | 62 | } |
| 63 | 63 | |
| 64 | 64 | @Mappings({ |
| 65 | - @Mapping(target = "id", expression = "java(null)"), | |
| 65 | + @Mapping(target = "id", ignore = true), | |
| 66 | 66 | @Mapping(target = "activityId", source = "activityDO.id"), |
| 67 | 67 | @Mapping(target = "configIds", source = "activityDO.configIds"), |
| 68 | 68 | @Mapping(target = "spuId", source = "activityDO.spuId"), | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/combination/combinationactivity/CombinationProductMapper.java
| ... | ... | @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.product |
| 8 | 8 | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationProductDO; |
| 9 | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 10 | |
| 11 | +import java.util.Collection; | |
| 11 | 12 | import java.util.List; |
| 12 | 13 | |
| 13 | 14 | /** |
| ... | ... | @@ -44,8 +45,8 @@ public interface CombinationProductMapper extends BaseMapperX<CombinationProduct |
| 44 | 45 | .orderByDesc(CombinationProductDO::getId)); |
| 45 | 46 | } |
| 46 | 47 | |
| 47 | - default List<CombinationProductDO> selectListByActivityId(Long id) { | |
| 48 | - return selectList(CombinationProductDO::getActivityId, id); | |
| 48 | + default List<CombinationProductDO> selectListByActivityIds(Collection<Long> ids) { | |
| 49 | + return selectList(CombinationProductDO::getActivityId, ids); | |
| 49 | 50 | } |
| 50 | 51 | |
| 51 | 52 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityService.java
| ... | ... | @@ -76,8 +76,8 @@ public interface CombinationActivityService { |
| 76 | 76 | /** |
| 77 | 77 | * 获得拼团活动商品列表 |
| 78 | 78 | * |
| 79 | - * @param id 拼团活动 ID | |
| 79 | + * @param ids 拼团活动 ids | |
| 80 | 80 | * @return 拼团活动的商品列表 |
| 81 | 81 | */ |
| 82 | - List<CombinationProductDO> getProductsByActivityId(Long id); | |
| 82 | + List<CombinationProductDO> getProductsByActivityIds(Collection<Long> ids); | |
| 83 | 83 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
| ... | ... | @@ -129,7 +129,7 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic |
| 129 | 129 | * @param products 商品配置 |
| 130 | 130 | */ |
| 131 | 131 | private void updateCombinationProduct(CombinationActivityDO updateObj, List<CombinationProductUpdateReqVO> products) { |
| 132 | - List<CombinationProductDO> combinationProductDOs = combinationProductMapper.selectListByActivityId(updateObj.getId()); | |
| 132 | + List<CombinationProductDO> combinationProductDOs = combinationProductMapper.selectListByActivityIds(CollUtil.newArrayList(updateObj.getId())); | |
| 133 | 133 | // 数据库中的活动商品 |
| 134 | 134 | Set<Long> convertSet = CollectionUtils.convertSet(combinationProductDOs, CombinationProductDO::getSkuId); |
| 135 | 135 | // 前端传过来的活动商品 |
| ... | ... | @@ -197,8 +197,8 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic |
| 197 | 197 | } |
| 198 | 198 | |
| 199 | 199 | @Override |
| 200 | - public List<CombinationProductDO> getProductsByActivityId(Long id) { | |
| 201 | - return combinationProductMapper.selectListByActivityId(id); | |
| 200 | + public List<CombinationProductDO> getProductsByActivityIds(Collection<Long> ids) { | |
| 201 | + return combinationProductMapper.selectListByActivityIds(ids); | |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | 204 | } | ... | ... |