Commit 147cd271b83bcb5b1c4663704feddb70ee0252d4

Authored by puhui999
1 parent 7cdb321f

fix:完善拼团活动列表展示

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationActivityController.java
1 package cn.iocoder.yudao.module.promotion.controller.admin.combination; 1 package cn.iocoder.yudao.module.promotion.controller.admin.combination;
2 2
  3 +import cn.hutool.core.collection.CollectionUtil;
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;
  6 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
5 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; 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 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.*; 11 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.*;
8 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; 12 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert;
9 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationActivityDO; 13 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationActivityDO;
@@ -22,6 +26,7 @@ import javax.validation.Valid; @@ -22,6 +26,7 @@ import javax.validation.Valid;
22 import java.io.IOException; 26 import java.io.IOException;
23 import java.util.Collection; 27 import java.util.Collection;
24 import java.util.List; 28 import java.util.List;
  29 +import java.util.Set;
25 30
26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 31 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
27 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 32 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@@ -34,6 +39,8 @@ public class CombinationActivityController { @@ -34,6 +39,8 @@ public class CombinationActivityController {
34 39
35 @Resource 40 @Resource
36 private CombinationActivityService combinationActivityService; 41 private CombinationActivityService combinationActivityService;
  42 + @Resource
  43 + private ProductSpuApi spuApi;
37 44
38 @PostMapping("/create") 45 @PostMapping("/create")
39 @Operation(summary = "创建拼团活动") 46 @Operation(summary = "创建拼团活动")
@@ -65,7 +72,7 @@ public class CombinationActivityController { @@ -65,7 +72,7 @@ public class CombinationActivityController {
65 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") 72 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')")
66 public CommonResult<CombinationActivityRespVO> getCombinationActivity(@RequestParam("id") Long id) { 73 public CommonResult<CombinationActivityRespVO> getCombinationActivity(@RequestParam("id") Long id) {
67 CombinationActivityDO combinationActivity = combinationActivityService.getCombinationActivity(id); 74 CombinationActivityDO combinationActivity = combinationActivityService.getCombinationActivity(id);
68 - List<CombinationProductDO> productDOs = combinationActivityService.getProductsByActivityId(id); 75 + List<CombinationProductDO> productDOs = combinationActivityService.getProductsByActivityIds(CollectionUtil.newArrayList(id));
69 return success(CombinationActivityConvert.INSTANCE.convert(combinationActivity, productDOs)); 76 return success(CombinationActivityConvert.INSTANCE.convert(combinationActivity, productDOs));
70 } 77 }
71 78
@@ -83,7 +90,11 @@ public class CombinationActivityController { @@ -83,7 +90,11 @@ public class CombinationActivityController {
83 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") 90 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')")
84 public CommonResult<PageResult<CombinationActivityRespVO>> getCombinationActivityPage(@Valid CombinationActivityPageReqVO pageVO) { 91 public CommonResult<PageResult<CombinationActivityRespVO>> getCombinationActivityPage(@Valid CombinationActivityPageReqVO pageVO) {
85 PageResult<CombinationActivityDO> pageResult = combinationActivityService.getCombinationActivityPage(pageVO); 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 @GetMapping("/export-excel") 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,6 +17,12 @@ import java.util.List;
17 @ToString(callSuper = true) 17 @ToString(callSuper = true)
18 public class CombinationActivityRespVO extends CombinationActivityBaseVO { 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 @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") 26 @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901")
21 private Long id; 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,7 +18,7 @@ public class SeckillActivityRespVO extends SeckillActivityBaseVO {
18 @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促") 18 @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促")
19 private String spuName; 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 private String picUrl; 22 private String picUrl;
23 23
24 @Schema(description = "秒杀活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") 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,6 +3,7 @@ package cn.iocoder.yudao.module.promotion.convert.combination;
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  6 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
6 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityCreateReqVO; 7 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityCreateReqVO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityExcelVO; 8 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityExcelVO;
8 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityRespVO; 9 import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityRespVO;
@@ -63,11 +64,7 @@ public interface CombinationActivityConvert { @@ -63,11 +64,7 @@ public interface CombinationActivityConvert {
63 64
64 default CombinationActivityRespVO convert(CombinationActivityDO bean, List<CombinationProductDO> productDOs) { 65 default CombinationActivityRespVO convert(CombinationActivityDO bean, List<CombinationProductDO> productDOs) {
65 CombinationActivityRespVO respVO = convert(bean); 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 return respVO; 68 return respVO;
72 } 69 }
73 70
@@ -75,6 +72,19 @@ public interface CombinationActivityConvert { @@ -75,6 +72,19 @@ public interface CombinationActivityConvert {
75 72
76 PageResult<CombinationActivityRespVO> convertPage(PageResult<CombinationActivityDO> page); 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 List<CombinationActivityExcelVO> convertList02(List<CombinationActivityDO> list); 88 List<CombinationActivityExcelVO> convertList02(List<CombinationActivityDO> list);
79 89
80 @Mappings({ 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,7 +62,7 @@ public interface SeckillActivityConvert {
62 } 62 }
63 63
64 @Mappings({ 64 @Mappings({
65 - @Mapping(target = "id", expression = "java(null)"), 65 + @Mapping(target = "id", ignore = true),
66 @Mapping(target = "activityId", source = "activityDO.id"), 66 @Mapping(target = "activityId", source = "activityDO.id"),
67 @Mapping(target = "configIds", source = "activityDO.configIds"), 67 @Mapping(target = "configIds", source = "activityDO.configIds"),
68 @Mapping(target = "spuId", source = "activityDO.spuId"), 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,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.product
8 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationProductDO; 8 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.combinationactivity.CombinationProductDO;
9 import org.apache.ibatis.annotations.Mapper; 9 import org.apache.ibatis.annotations.Mapper;
10 10
  11 +import java.util.Collection;
11 import java.util.List; 12 import java.util.List;
12 13
13 /** 14 /**
@@ -44,8 +45,8 @@ public interface CombinationProductMapper extends BaseMapperX&lt;CombinationProduct @@ -44,8 +45,8 @@ public interface CombinationProductMapper extends BaseMapperX&lt;CombinationProduct
44 .orderByDesc(CombinationProductDO::getId)); 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,8 +76,8 @@ public interface CombinationActivityService {
76 /** 76 /**
77 * 获得拼团活动商品列表 77 * 获得拼团活动商品列表
78 * 78 *
79 - * @param id 拼团活动 ID 79 + * @param ids 拼团活动 ids
80 * @return 拼团活动的商品列表 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,7 +129,7 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
129 * @param products 商品配置 129 * @param products 商品配置
130 */ 130 */
131 private void updateCombinationProduct(CombinationActivityDO updateObj, List<CombinationProductUpdateReqVO> products) { 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 Set<Long> convertSet = CollectionUtils.convertSet(combinationProductDOs, CombinationProductDO::getSkuId); 134 Set<Long> convertSet = CollectionUtils.convertSet(combinationProductDOs, CombinationProductDO::getSkuId);
135 // 前端传过来的活动商品 135 // 前端传过来的活动商品
@@ -197,8 +197,8 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic @@ -197,8 +197,8 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
197 } 197 }
198 198
199 @Override 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 }