Commit af6016bba5d9f1d55459f92d80d06dc7a0145a30
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<BargainActivityDO> { | @@ -43,4 +45,11 @@ public interface BargainActivityMapper extends BaseMapperX<BargainActivityDO> { | ||
| 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; |