Commit af6016bba5d9f1d55459f92d80d06dc7a0145a30

Authored by puhui999
1 parent a10d77cd

砍价活动: 完善 app 端获取活动分页、列表、详情接口

Showing 11 changed files with 170 additions and 74 deletions
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/spu/dto/ProductSpuRespDTO.java
1 package cn.iocoder.yudao.module.product.api.spu.dto; 1 package cn.iocoder.yudao.module.product.api.spu.dto;
2 2
3 -import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;  
4 import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; 3 import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum;
5 import lombok.Data; 4 import lombok.Data;
6 5
@@ -32,6 +31,12 @@ public class ProductSpuRespDTO { @@ -32,6 +31,12 @@ public class ProductSpuRespDTO {
32 */ 31 */
33 private String keyword; 32 private String keyword;
34 /** 33 /**
  34 + * 单位
  35 + *
  36 + * 对应 product_unit 数据字典
  37 + */
  38 + private Integer unit;
  39 + /**
35 * 商品简介 40 * 商品简介
36 */ 41 */
37 private String introduction; 42 private String introduction;
yudao-module-mall/yudao-module-promotion-biz/pom.xml
@@ -77,6 +77,10 @@ @@ -77,6 +77,10 @@
77 <groupId>cn.iocoder.boot</groupId> 77 <groupId>cn.iocoder.boot</groupId>
78 <artifactId>yudao-spring-boot-starter-excel</artifactId> 78 <artifactId>yudao-spring-boot-starter-excel</artifactId>
79 </dependency> 79 </dependency>
  80 + <dependency>
  81 + <groupId>cn.iocoder.boot</groupId>
  82 + <artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
  83 + </dependency>
80 </dependencies> 84 </dependencies>
81 85
82 </project> 86 </project>
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/bargain/BargainActivityController.java
@@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.promotion.controller.admin.bargain; @@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.promotion.controller.admin.bargain;
3 import cn.hutool.core.collection.CollUtil; 3 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.common.util.collection.CollectionUtils;
  7 +import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
  8 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
6 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityCreateReqVO; 9 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityCreateReqVO;
7 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageReqVO; 10 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageReqVO;
8 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO; 11 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO;
@@ -19,6 +22,7 @@ import org.springframework.web.bind.annotation.*; @@ -19,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
19 22
20 import javax.annotation.Resource; 23 import javax.annotation.Resource;
21 import javax.validation.Valid; 24 import javax.validation.Valid;
  25 +import java.util.List;
22 26
23 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
24 28
@@ -30,6 +34,8 @@ public class BargainActivityController { @@ -30,6 +34,8 @@ public class BargainActivityController {
30 34
31 @Resource 35 @Resource
32 private BargainActivityService activityService; 36 private BargainActivityService activityService;
  37 + @Resource
  38 + private ProductSpuApi spuApi;
33 39
34 @PostMapping("/create") 40 @PostMapping("/create")
35 @Operation(summary = "创建砍价活动") 41 @Operation(summary = "创建砍价活动")
@@ -73,7 +79,8 @@ public class BargainActivityController { @@ -73,7 +79,8 @@ public class BargainActivityController {
73 if (CollUtil.isEmpty(pageResult.getList())) { 79 if (CollUtil.isEmpty(pageResult.getList())) {
74 return success(PageResult.empty(pageResult.getTotal())); 80 return success(PageResult.empty(pageResult.getTotal()));
75 } 81 }
76 - return success(BargainActivityConvert.INSTANCE.convertPage(activityService.getBargainActivityPage(pageVO))); 82 + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(CollectionUtils.convertList(pageResult.getList(), BargainActivityDO::getSpuId));
  83 + return success(BargainActivityConvert.INSTANCE.convertPage(pageResult, spuList));
77 } 84 }
78 85
79 } 86 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/bargain/AppBargainActivityController.java
1 package cn.iocoder.yudao.module.promotion.controller.app.bargain; 1 package cn.iocoder.yudao.module.promotion.controller.app.bargain;
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.PageParam; 5 import cn.iocoder.yudao.framework.common.pojo.PageParam;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 -import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; 7 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  8 +import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
  9 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
7 import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityDetailRespVO; 10 import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityDetailRespVO;
8 import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityRespVO; 11 import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityRespVO;
  12 +import cn.iocoder.yudao.module.promotion.convert.bargain.BargainActivityConvert;
  13 +import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
  14 +import cn.iocoder.yudao.module.promotion.service.bargain.BargainActivityService;
9 import io.swagger.v3.oas.annotations.Operation; 15 import io.swagger.v3.oas.annotations.Operation;
  16 +import io.swagger.v3.oas.annotations.Parameter;
10 import io.swagger.v3.oas.annotations.tags.Tag; 17 import io.swagger.v3.oas.annotations.tags.Tag;
11 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
12 import org.springframework.web.bind.annotation.GetMapping; 19 import org.springframework.web.bind.annotation.GetMapping;
@@ -14,8 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -14,8 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestParam; 21 import org.springframework.web.bind.annotation.RequestParam;
15 import org.springframework.web.bind.annotation.RestController; 22 import org.springframework.web.bind.annotation.RestController;
16 23
17 -import java.time.Duration;  
18 -import java.util.ArrayList; 24 +import javax.annotation.Resource;
19 import java.util.List; 25 import java.util.List;
20 26
21 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -25,86 +31,49 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -25,86 +31,49 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 @RequestMapping("/promotion/bargain-activity") 31 @RequestMapping("/promotion/bargain-activity")
26 @Validated 32 @Validated
27 public class AppBargainActivityController { 33 public class AppBargainActivityController {
  34 + @Resource
  35 + private BargainActivityService bargainActivityService;
  36 + @Resource
  37 + private ProductSpuApi spuApi;
28 38
29 @GetMapping("/page") 39 @GetMapping("/page")
30 - @Operation(summary = "获得砍价活动活动") // TODO 芋艿:只查询进行中,且在时间范围内的  
31 - // TODO 芋艿:缺少 swagger 注解 40 + @Operation(summary = "获得砍价活动分页")
32 public CommonResult<PageResult<AppBargainActivityRespVO>> getBargainActivityPage(PageParam pageReqVO) { 41 public CommonResult<PageResult<AppBargainActivityRespVO>> getBargainActivityPage(PageParam pageReqVO) {
33 - List<AppBargainActivityRespVO> activityList = new ArrayList<>();  
34 - AppBargainActivityRespVO activity1 = new AppBargainActivityRespVO();  
35 - activity1.setId(1L);  
36 - activity1.setName("618 大砍价");  
37 - activity1.setSpuId(2048L);  
38 - activity1.setPicUrl("https://static.iocoder.cn/mall/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg");  
39 - activity1.setMarketPrice(50);  
40 - activity1.setBargainPrice(100);  
41 - activity1.setStartTime(LocalDateTimeUtils.addTime(Duration.ofDays(-2)));  
42 - activity1.setEndTime(LocalDateTimeUtils.addTime(Duration.ofDays(1)));  
43 - activity1.setStock(10);  
44 - activityList.add(activity1); 42 + PageResult<BargainActivityDO> result = bargainActivityService.getBargainActivityAppPage(pageReqVO);
  43 + if (CollUtil.isEmpty(result.getList())) {
  44 + return success(PageResult.empty(result.getTotal()));
  45 + }
45 46
46 - AppBargainActivityRespVO activity2 = new AppBargainActivityRespVO();  
47 - activity2.setId(2L);  
48 - activity2.setName("双十一砍价");  
49 - activity2.setSpuId(4096L);  
50 - activity2.setPicUrl("https://static.iocoder.cn/mall/132.jpeg");  
51 - activity2.setMarketPrice(100);  
52 - activity2.setBargainPrice(200);  
53 - activity2.setStartTime(LocalDateTimeUtils.addTime(Duration.ofDays(-2)));  
54 - activity2.setEndTime(LocalDateTimeUtils.addTime(Duration.ofDays(1)));  
55 - activity2.setStock(0);  
56 - activityList.add(activity2);  
57 -  
58 - return success(new PageResult<>(activityList, 10L)); 47 + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(CollectionUtils.convertList(result.getList(), BargainActivityDO::getSpuId));
  48 + return success(BargainActivityConvert.INSTANCE.convertAppPage(result, spuList));
59 } 49 }
60 50
61 @GetMapping("/list") 51 @GetMapping("/list")
62 @Operation(summary = "获得砍价活动列表", description = "用于小程序首页") 52 @Operation(summary = "获得砍价活动列表", description = "用于小程序首页")
63 - // TODO 芋艿:增加 Spring Cache  
64 - // TODO 芋艿:缺少 swagger 注解 53 + @Parameter(name = "count", description = "需要展示的数量", example = "6")
65 public CommonResult<List<AppBargainActivityRespVO>> getBargainActivityList( 54 public CommonResult<List<AppBargainActivityRespVO>> getBargainActivityList(
66 @RequestParam(name = "count", defaultValue = "6") Integer count) { 55 @RequestParam(name = "count", defaultValue = "6") Integer count) {
67 - List<AppBargainActivityRespVO> activityList = new ArrayList<>();  
68 - AppBargainActivityRespVO activity1 = new AppBargainActivityRespVO();  
69 - activity1.setId(1L);  
70 - activity1.setName("618 大砍价");  
71 - activity1.setSpuId(2048L);  
72 - activity1.setPicUrl("https://static.iocoder.cn/mall/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg");  
73 - activity1.setMarketPrice(50);  
74 - activity1.setBargainPrice(100);  
75 - activityList.add(activity1);  
76 -  
77 - AppBargainActivityRespVO activity2 = new AppBargainActivityRespVO();  
78 - activity2.setId(2L);  
79 - activity2.setName("双十一砍价");  
80 - activity2.setSpuId(4096L);  
81 - activity2.setPicUrl("https://static.iocoder.cn/mall/132.jpeg");  
82 - activity2.setMarketPrice(100);  
83 - activity2.setBargainPrice(200);  
84 - activityList.add(activity2); 56 + List<BargainActivityDO> list = bargainActivityService.getBargainActivityAppList(count);
  57 + if (CollUtil.isEmpty(list)) {
  58 + return success(BargainActivityConvert.INSTANCE.convertAppList(list));
  59 + }
85 60
86 - return success(activityList); 61 + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(CollectionUtils.convertList(list, BargainActivityDO::getSpuId));
  62 + // TODO 芋艿:增加 Spring Cache
  63 + return success(BargainActivityConvert.INSTANCE.convertAppList(list, spuList));
87 } 64 }
88 65
89 @GetMapping("/get-detail") 66 @GetMapping("/get-detail")
90 @Operation(summary = "获得砍价活动详情") 67 @Operation(summary = "获得砍价活动详情")
91 - // TODO 芋艿:缺少 swagger 注解 68 + @Parameter(name = "id", description = "活动编号", example = "1")
92 public CommonResult<AppBargainActivityDetailRespVO> getBargainActivityDetail(@RequestParam("id") Long id) { 69 public CommonResult<AppBargainActivityDetailRespVO> getBargainActivityDetail(@RequestParam("id") Long id) {
93 - AppBargainActivityDetailRespVO activity = new AppBargainActivityDetailRespVO();  
94 - activity.setId(2L);  
95 - activity.setName("618 大砍价");  
96 - activity.setSpuId(2048L);  
97 - activity.setPicUrl("https://static.iocoder.cn/mall/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg");  
98 - activity.setMarketPrice(50);  
99 - activity.setBargainPrice(100);  
100 - activity.setStock(10);  
101 - activity.setUnitName("件");  
102 - activity.setPrice(40);  
103 - activity.setStartTime(LocalDateTimeUtils.addTime(Duration.ofDays(-2)));  
104 - activity.setEndTime(LocalDateTimeUtils.addTime(Duration.ofDays(-10)));  
105 - activity.setDescription("我吃西红柿");  
106 - activity.setSuccessCount(10);  
107 - return success(activity); 70 + BargainActivityDO activity = bargainActivityService.getBargainActivity(id);
  71 + if (activity == null) {
  72 + return success(null);
  73 + }
  74 +
  75 + ProductSpuRespDTO spu = spuApi.getSpu(activity.getSpuId());
  76 + return success(BargainActivityConvert.INSTANCE.convert1(activity, spu));
108 } 77 }
109 78
110 } 79 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/bargain/vo/activity/AppBargainActivityDetailRespVO.java
@@ -45,7 +45,7 @@ public class AppBargainActivityDetailRespVO { @@ -45,7 +45,7 @@ public class AppBargainActivityDetailRespVO {
45 @Schema(description = "商品单位", required = true, example = "个") // 从 SPU 的 unit 读取,然后转换 45 @Schema(description = "商品单位", required = true, example = "个") // 从 SPU 的 unit 读取,然后转换
46 private String unitName; 46 private String unitName;
47 47
48 - @Schema(description = "砍价最低金额,单位:分", required = true, example = "100") // 从砍价商品里取最低价 48 + @Schema(description = "砍价最低金额,单位:分", required = true, example = "100")
49 private Integer bargainPrice; 49 private Integer bargainPrice;
50 50
51 @Schema(description = "砍价成功数量", required = true, example = "100") 51 @Schema(description = "砍价成功数量", required = true, example = "100")
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/bargain/vo/activity/AppBargainActivityRespVO.java
@@ -36,7 +36,7 @@ public class AppBargainActivityRespVO { @@ -36,7 +36,7 @@ public class AppBargainActivityRespVO {
36 @Schema(description = "商品市场价,单位:分", required = true, example = "50") // 从 SPU 的 marketPrice 读取 36 @Schema(description = "商品市场价,单位:分", required = true, example = "50") // 从 SPU 的 marketPrice 读取
37 private Integer marketPrice; 37 private Integer marketPrice;
38 38
39 - @Schema(description = "砍价最低金额,单位:分", required = true, example = "100") // 从砍价商品里取最低价 39 + @Schema(description = "砍价最低金额,单位:分", required = true, example = "100")
40 private Integer bargainPrice; 40 private Integer bargainPrice;
41 41
42 } 42 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/bargain/BargainActivityConvert.java
1 package cn.iocoder.yudao.module.promotion.convert.bargain; 1 package cn.iocoder.yudao.module.promotion.convert.bargain;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
  5 +import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils;
  6 +import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
  7 +import cn.iocoder.yudao.module.product.enums.DictTypeConstants;
4 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityBaseVO; 8 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityBaseVO;
5 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO; 9 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityRespVO;
6 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityUpdateReqVO; 10 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityUpdateReqVO;
  11 +import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityDetailRespVO;
  12 +import cn.iocoder.yudao.module.promotion.controller.app.bargain.vo.activity.AppBargainActivityRespVO;
7 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; 13 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
8 import org.mapstruct.Mapper; 14 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 15 import org.mapstruct.factory.Mappers;
10 16
11 import java.util.List; 17 import java.util.List;
  18 +import java.util.Map;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
  21 +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
12 22
13 /** 23 /**
14 * 拼团活动 Convert 24 * 拼团活动 Convert
@@ -30,4 +40,60 @@ public interface BargainActivityConvert { @@ -30,4 +40,60 @@ public interface BargainActivityConvert {
30 40
31 PageResult<BargainActivityRespVO> convertPage(PageResult<BargainActivityDO> page); 41 PageResult<BargainActivityRespVO> convertPage(PageResult<BargainActivityDO> page);
32 42
  43 + default PageResult<BargainActivityRespVO> convertPage(PageResult<BargainActivityDO> page, List<ProductSpuRespDTO> spuList) {
  44 + PageResult<BargainActivityRespVO> result = convertPage(page);
  45 + Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);
  46 + List<BargainActivityRespVO> list = CollectionUtils.convertList(result.getList(), item -> {
  47 + findAndThen(spuMap, item.getSpuId(), spu -> {
  48 + item.setPicUrl(spu.getPicUrl());
  49 + item.setSpuName(spu.getName());
  50 + });
  51 + return item;
  52 + });
  53 + result.setList(list);
  54 + return result;
  55 + }
  56 +
  57 + AppBargainActivityDetailRespVO convert1(BargainActivityDO bean);
  58 +
  59 + default AppBargainActivityDetailRespVO convert1(BargainActivityDO bean, ProductSpuRespDTO spu) {
  60 + AppBargainActivityDetailRespVO detail = convert1(bean);
  61 + if (spu != null) {
  62 + detail.setPicUrl(spu.getPicUrl());
  63 + detail.setMarketPrice(spu.getMarketPrice());
  64 + detail.setUnitName(DictFrameworkUtils.getDictDataLabel(DictTypeConstants.PRODUCT_UNIT, spu.getUnit()));
  65 + }
  66 + return detail;
  67 + }
  68 +
  69 + PageResult<AppBargainActivityRespVO> convertAppPage(PageResult<BargainActivityDO> page);
  70 +
  71 + default PageResult<AppBargainActivityRespVO> convertAppPage(PageResult<BargainActivityDO> page, List<ProductSpuRespDTO> spuList) {
  72 + PageResult<AppBargainActivityRespVO> result = convertAppPage(page);
  73 + Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);
  74 + List<AppBargainActivityRespVO> list = CollectionUtils.convertList(result.getList(), item -> {
  75 + findAndThen(spuMap, item.getSpuId(), spu -> {
  76 + item.setPicUrl(spu.getPicUrl());
  77 + item.setMarketPrice(spu.getMarketPrice());
  78 + });
  79 + return item;
  80 + });
  81 + result.setList(list);
  82 + return result;
  83 + }
  84 +
  85 + List<AppBargainActivityRespVO> convertAppList(List<BargainActivityDO> list);
  86 +
  87 + default List<AppBargainActivityRespVO> convertAppList(List<BargainActivityDO> list, List<ProductSpuRespDTO> spuList) {
  88 + List<AppBargainActivityRespVO> activityList = convertAppList(list);
  89 + Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);
  90 + return CollectionUtils.convertList(activityList, item -> {
  91 + findAndThen(spuMap, item.getSpuId(), spu -> {
  92 + item.setPicUrl(spu.getPicUrl());
  93 + item.setMarketPrice(spu.getMarketPrice());
  94 + });
  95 + return item;
  96 + });
  97 + }
  98 +
33 } 99 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/bargain/BargainActivityMapper.java
1 package cn.iocoder.yudao.module.promotion.dal.mysql.bargain; 1 package cn.iocoder.yudao.module.promotion.dal.mysql.bargain;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -8,6 +9,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityD @@ -8,6 +9,7 @@ import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityD
8 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 9 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
9 import org.apache.ibatis.annotations.Mapper; 10 import org.apache.ibatis.annotations.Mapper;
10 11
  12 +import java.time.LocalDateTime;
11 import java.util.List; 13 import java.util.List;
12 14
13 /** 15 /**
@@ -43,4 +45,11 @@ public interface BargainActivityMapper extends BaseMapperX&lt;BargainActivityDO&gt; { @@ -43,4 +45,11 @@ public interface BargainActivityMapper extends BaseMapperX&lt;BargainActivityDO&gt; {
43 .setSql("stock = stock - " + count)); 45 .setSql("stock = stock - " + count));
44 } 46 }
45 47
  48 + default PageResult<BargainActivityDO> selectAppPage(PageParam pageReqVO, Integer status, LocalDateTime now) {
  49 + return selectPage(pageReqVO, new LambdaQueryWrapperX<BargainActivityDO>()
  50 + .eq(BargainActivityDO::getStatus, status)
  51 + .le(BargainActivityDO::getStartTime, now)
  52 + .ge(BargainActivityDO::getEndTime, now));
  53 + }
  54 +
46 } 55 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityService.java
1 package cn.iocoder.yudao.module.promotion.service.bargain; 1 package cn.iocoder.yudao.module.promotion.service.bargain;
2 2
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityCreateReqVO; 5 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityCreateReqVO;
5 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageReqVO; 6 import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActivityPageReqVO;
@@ -7,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActi @@ -7,6 +8,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.BargainActi
7 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO; 8 import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainActivityDO;
8 9
9 import javax.validation.Valid; 10 import javax.validation.Valid;
  11 +import java.util.List;
10 12
11 /** 13 /**
12 * 砍价活动 Service 接口 14 * 砍价活动 Service 接口
@@ -61,4 +63,19 @@ public interface BargainActivityService { @@ -61,4 +63,19 @@ public interface BargainActivityService {
61 */ 63 */
62 PageResult<BargainActivityDO> getBargainActivityPage(BargainActivityPageReqVO pageReqVO); 64 PageResult<BargainActivityDO> getBargainActivityPage(BargainActivityPageReqVO pageReqVO);
63 65
  66 + /**
  67 + * 获取 APP 端活动分页数据
  68 + *
  69 + * @param pageReqVO 分页请求
  70 + * @return 砍价活动分页
  71 + */
  72 + PageResult<BargainActivityDO> getBargainActivityAppPage(PageParam pageReqVO);
  73 +
  74 + /**
  75 + * 获取 APP 端活动展示数据
  76 + *
  77 + * @param count 需要的数量
  78 + * @return
  79 + */
  80 + List<BargainActivityDO> getBargainActivityAppList(Integer count);
64 } 81 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/bargain/BargainActivityServiceImpl.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.promotion.service.bargain; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.promotion.service.bargain;
2 2
3 import cn.hutool.core.util.ObjectUtil; 3 import cn.hutool.core.util.ObjectUtil;
4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 4 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi; 7 import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
7 import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; 8 import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
@@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional; @@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.Transactional;
16 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
17 18
18 import javax.annotation.Resource; 19 import javax.annotation.Resource;
  20 +import java.time.LocalDateTime;
19 import java.util.List; 21 import java.util.List;
20 22
21 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 23 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -113,9 +115,9 @@ public class BargainActivityServiceImpl implements BargainActivityService { @@ -113,9 +115,9 @@ public class BargainActivityServiceImpl implements BargainActivityService {
113 // 校验存在 115 // 校验存在
114 BargainActivityDO activityDO = validateBargainActivityExists(id); 116 BargainActivityDO activityDO = validateBargainActivityExists(id);
115 // 校验状态 117 // 校验状态
116 - if (ObjectUtil.equal(activityDO.getStatus(), CommonStatusEnum.ENABLE.getStatus())) {  
117 - throw exception(BARGAIN_ACTIVITY_DELETE_FAIL_STATUS_NOT_CLOSED_OR_END);  
118 - } 118 + //if (ObjectUtil.equal(activityDO.getStatus(), CommonStatusEnum.ENABLE.getStatus())) {
  119 + // throw exception(BARGAIN_ACTIVITY_DELETE_FAIL_STATUS_NOT_CLOSED_OR_END);
  120 + //}
119 121
120 // 删除 122 // 删除
121 bargainActivityMapper.deleteById(id); 123 bargainActivityMapper.deleteById(id);
@@ -139,4 +141,20 @@ public class BargainActivityServiceImpl implements BargainActivityService { @@ -139,4 +141,20 @@ public class BargainActivityServiceImpl implements BargainActivityService {
139 return bargainActivityMapper.selectPage(pageReqVO); 141 return bargainActivityMapper.selectPage(pageReqVO);
140 } 142 }
141 143
  144 + @Override
  145 + public PageResult<BargainActivityDO> getBargainActivityAppPage(PageParam pageReqVO) {
  146 + // 只查询进行中,且在时间范围内的
  147 + return bargainActivityMapper.selectAppPage(pageReqVO, CommonStatusEnum.ENABLE.getStatus(), LocalDateTime.now());
  148 +
  149 + }
  150 +
  151 + @Override
  152 + public List<BargainActivityDO> getBargainActivityAppList(Integer count) {
  153 + if (count == null) {
  154 + count = 6;
  155 + }
  156 + PageResult<BargainActivityDO> result = bargainActivityMapper.selectAppPage(new PageParam().setPageSize(count), CommonStatusEnum.ENABLE.getStatus(), LocalDateTime.now());
  157 + return result.getList();
  158 + }
  159 +
142 } 160 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -38,6 +38,7 @@ import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; @@ -38,6 +38,7 @@ import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
38 public class CombinationRecordServiceImpl implements CombinationRecordService { 38 public class CombinationRecordServiceImpl implements CombinationRecordService {
39 39
40 @Resource 40 @Resource
  41 + @Lazy
41 private CombinationActivityService combinationActivityService; 42 private CombinationActivityService combinationActivityService;
42 @Resource 43 @Resource
43 private CombinationRecordMapper recordMapper; 44 private CombinationRecordMapper recordMapper;