Commit a93acd2a74e5b4d1705d5eb0a718f1eff11b8a6f

Authored by YunaiV
1 parent 6573849f

mall + promotion:mock 秒杀列表

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/AppSeckillActivityController.java
1 package cn.iocoder.yudao.module.promotion.controller.app.seckill; 1 package cn.iocoder.yudao.module.promotion.controller.app.seckill;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 -import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.AppSeckillActivitiDetailRespVO; 4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityDetailRespVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityNowRespVO;
  7 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityRespVO;
  8 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.config.AppSeckillConfigRespVO;
5 import io.swagger.v3.oas.annotations.Operation; 9 import io.swagger.v3.oas.annotations.Operation;
6 import io.swagger.v3.oas.annotations.Parameter; 10 import io.swagger.v3.oas.annotations.Parameter;
7 import io.swagger.v3.oas.annotations.tags.Tag; 11 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -23,12 +27,65 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -23,12 +27,65 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
23 @Validated 27 @Validated
24 public class AppSeckillActivityController { 28 public class AppSeckillActivityController {
25 29
  30 + @GetMapping("/get-now")
  31 + @Operation(summary = "获得当前秒杀活动") // 提供给首页使用
  32 + // TODO 芋艿:需要增加 spring cache
  33 + public CommonResult<AppSeckillActivityNowRespVO> getNowSeckillActivity() {
  34 + AppSeckillActivityNowRespVO respVO = new AppSeckillActivityNowRespVO();
  35 + respVO.setConfig(new AppSeckillConfigRespVO().setId(10L).setStartTime("01:00").setEndTime("09:59"));
  36 + List<AppSeckillActivityRespVO> activityList = new ArrayList<>();
  37 + AppSeckillActivityRespVO activity1 = new AppSeckillActivityRespVO();
  38 + activity1.setId(1L);
  39 + activity1.setName("618 大秒杀");
  40 + activity1.setSpuId(2048L);
  41 + activity1.setPicUrl("https://demo26.crmeb.net/uploads/attach/2021/11/15/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg");
  42 + activity1.setMarketPrice(50);
  43 + activity1.setSeckillPrice(100);
  44 + activityList.add(activity1);
  45 +
  46 + AppSeckillActivityRespVO activity2 = new AppSeckillActivityRespVO();
  47 + activity2.setId(2L);
  48 + activity2.setName("双十一大秒杀");
  49 + activity2.setSpuId(4096L);
  50 + activity2.setPicUrl("https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKXMYJOomfp7cebz3cIeb8sHk3GGSIJtWEgREe3j7J1WoAbTvIOicpcNdFkWAziatBSMod8b5RyS4CQ/132");
  51 + activity2.setMarketPrice(100);
  52 + activity2.setSeckillPrice(200);
  53 + activityList.add(activity2);
  54 + respVO.setActivities(activityList);
  55 + return success(respVO);
  56 + }
  57 +
  58 + @GetMapping("/page")
  59 + @Operation(summary = "获得秒杀活动分页")
  60 + // TODO @芋艿:分页参数
  61 + public CommonResult<PageResult<AppSeckillActivityRespVO>> getSeckillActivityPage() {
  62 + List<AppSeckillActivityRespVO> activityList = new ArrayList<>();
  63 + AppSeckillActivityRespVO activity1 = new AppSeckillActivityRespVO();
  64 + activity1.setId(1L);
  65 + activity1.setName("618 大秒杀");
  66 + activity1.setSpuId(2048L);
  67 + activity1.setPicUrl("https://demo26.crmeb.net/uploads/attach/2021/11/15/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg");
  68 + activity1.setMarketPrice(50);
  69 + activity1.setSeckillPrice(100);
  70 + activityList.add(activity1);
  71 +
  72 + AppSeckillActivityRespVO activity2 = new AppSeckillActivityRespVO();
  73 + activity2.setId(2L);
  74 + activity2.setName("双十一大秒杀");
  75 + activity2.setSpuId(4096L);
  76 + activity2.setPicUrl("https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKXMYJOomfp7cebz3cIeb8sHk3GGSIJtWEgREe3j7J1WoAbTvIOicpcNdFkWAziatBSMod8b5RyS4CQ/132");
  77 + activity2.setMarketPrice(100);
  78 + activity2.setSeckillPrice(200);
  79 + activityList.add(activity2);
  80 + return success(new PageResult<>(activityList, 100L));
  81 + }
  82 +
26 @GetMapping("/get-detail") 83 @GetMapping("/get-detail")
27 @Operation(summary = "获得秒杀活动明细") 84 @Operation(summary = "获得秒杀活动明细")
28 @Parameter(name = "id", description = "活动编号", required = true, example = "1024") 85 @Parameter(name = "id", description = "活动编号", required = true, example = "1024")
29 - public CommonResult<AppSeckillActivitiDetailRespVO> getSeckillActivity(@RequestParam("id") Long id) { 86 + public CommonResult<AppSeckillActivityDetailRespVO> getSeckillActivity(@RequestParam("id") Long id) {
30 // TODO 芋艿:如果禁用的时候,需要抛出异常; 87 // TODO 芋艿:如果禁用的时候,需要抛出异常;
31 - AppSeckillActivitiDetailRespVO obj = new AppSeckillActivitiDetailRespVO(); 88 + AppSeckillActivityDetailRespVO obj = new AppSeckillActivityDetailRespVO();
32 // 设置其属性的值 89 // 设置其属性的值
33 obj.setId(id); 90 obj.setId(id);
34 obj.setName("晚九点限时秒杀"); 91 obj.setName("晚九点限时秒杀");
@@ -37,9 +94,9 @@ public class AppSeckillActivityController { @@ -37,9 +94,9 @@ public class AppSeckillActivityController {
37 obj.setEndTime(LocalDateTime.of(2023, 6, 11, 23, 59, 0)); 94 obj.setEndTime(LocalDateTime.of(2023, 6, 11, 23, 59, 0));
38 obj.setSpuId(633L); 95 obj.setSpuId(633L);
39 // 创建一个Product对象的列表 96 // 创建一个Product对象的列表
40 - List<AppSeckillActivitiDetailRespVO.Product> productList = new ArrayList<>(); 97 + List<AppSeckillActivityDetailRespVO.Product> productList = new ArrayList<>();
41 // 创建三个新的Product对象并设置其属性的值 98 // 创建三个新的Product对象并设置其属性的值
42 - AppSeckillActivitiDetailRespVO.Product product1 = new AppSeckillActivitiDetailRespVO.Product(); 99 + AppSeckillActivityDetailRespVO.Product product1 = new AppSeckillActivityDetailRespVO.Product();
43 product1.setSkuId(1L); 100 product1.setSkuId(1L);
44 product1.setSeckillPrice(100); 101 product1.setSeckillPrice(100);
45 product1.setQuota(50); 102 product1.setQuota(50);
@@ -47,7 +104,7 @@ public class AppSeckillActivityController { @@ -47,7 +104,7 @@ public class AppSeckillActivityController {
47 // 将第一个Product对象添加到列表中 104 // 将第一个Product对象添加到列表中
48 productList.add(product1); 105 productList.add(product1);
49 // 创建第二个Product对象并设置其属性的值 106 // 创建第二个Product对象并设置其属性的值
50 - AppSeckillActivitiDetailRespVO.Product product2 = new AppSeckillActivitiDetailRespVO.Product(); 107 + AppSeckillActivityDetailRespVO.Product product2 = new AppSeckillActivityDetailRespVO.Product();
51 product2.setSkuId(2L); 108 product2.setSkuId(2L);
52 product2.setSeckillPrice(200); 109 product2.setSeckillPrice(200);
53 product2.setQuota(100); 110 product2.setQuota(100);
@@ -55,7 +112,7 @@ public class AppSeckillActivityController { @@ -55,7 +112,7 @@ public class AppSeckillActivityController {
55 // 将第二个Product对象添加到列表中 112 // 将第二个Product对象添加到列表中
56 productList.add(product2); 113 productList.add(product2);
57 // 创建第三个Product对象并设置其属性的值 114 // 创建第三个Product对象并设置其属性的值
58 - AppSeckillActivitiDetailRespVO.Product product3 = new AppSeckillActivitiDetailRespVO.Product(); 115 + AppSeckillActivityDetailRespVO.Product product3 = new AppSeckillActivityDetailRespVO.Product();
59 product3.setSkuId(3L); 116 product3.setSkuId(3L);
60 product3.setSeckillPrice(300); 117 product3.setSeckillPrice(300);
61 product3.setQuota(150); 118 product3.setQuota(150);
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/AppSeckillConfigController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.app.seckill;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.config.AppSeckillConfigRespVO;
  5 +import io.swagger.v3.oas.annotations.Operation;
  6 +import io.swagger.v3.oas.annotations.tags.Tag;
  7 +import org.springframework.validation.annotation.Validated;
  8 +import org.springframework.web.bind.annotation.GetMapping;
  9 +import org.springframework.web.bind.annotation.RequestMapping;
  10 +import org.springframework.web.bind.annotation.RestController;
  11 +
  12 +import java.util.Arrays;
  13 +import java.util.List;
  14 +
  15 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  16 +
  17 +@Tag(name = "用户 App - 秒杀时间段")
  18 +@RestController
  19 +@RequestMapping("/promotion/seckill-config")
  20 +@Validated
  21 +public class AppSeckillConfigController {
  22 +
  23 + @GetMapping("/list")
  24 + @Operation(summary = "获得秒杀时间段列表")
  25 + public CommonResult<List<AppSeckillConfigRespVO>> getConfigList() {
  26 + return success(Arrays.asList(
  27 + new AppSeckillConfigRespVO().setId(1L).setStartTime("00:00").setEndTime("09:59"),
  28 + new AppSeckillConfigRespVO().setId(2L).setStartTime("10:00").setEndTime("12:59"),
  29 + new AppSeckillConfigRespVO().setId(2L).setStartTime("13:00").setEndTime("23:59")
  30 + ));
  31 + }
  32 +
  33 +}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/AppSeckillActivitiDetailRespVO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/activity/AppSeckillActivityDetailRespVO.java
1 -package cn.iocoder.yudao.module.promotion.controller.app.seckill.vo; 1 +package cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity;
2 2
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
@@ -6,9 +6,9 @@ import lombok.Data; @@ -6,9 +6,9 @@ import lombok.Data;
6 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
7 import java.util.List; 7 import java.util.List;
8 8
9 -@Schema(description = "用户 App - 秒杀活动 Response VO") 9 +@Schema(description = "用户 App - 秒杀活动的详细 Response VO")
10 @Data 10 @Data
11 -public class AppSeckillActivitiDetailRespVO { 11 +public class AppSeckillActivityDetailRespVO {
12 12
13 @Schema(description = "秒杀活动编号", required = true, example = "1024") 13 @Schema(description = "秒杀活动编号", required = true, example = "1024")
14 private Long id; 14 private Long id;
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/activity/AppSeckillActivityNowRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity;
  2 +
  3 +import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.config.AppSeckillConfigRespVO;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +
  7 +import java.util.List;
  8 +
  9 +@Schema(description = "用户 App - 当前秒杀活动 Response VO")
  10 +@Data
  11 +public class AppSeckillActivityNowRespVO {
  12 +
  13 + @Schema(description = "秒杀时间段", required = true)
  14 + private AppSeckillConfigRespVO config;
  15 +
  16 + @Schema(description = "秒杀活动数组", required = true)
  17 + private List<AppSeckillActivityRespVO> activities;
  18 +
  19 +}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/activity/AppSeckillActivityRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +@Schema(description = "用户 App - 秒杀活动 Response VO")
  7 +@Data
  8 +public class AppSeckillActivityRespVO {
  9 +
  10 + @Schema(description = "秒杀活动编号", required = true, example = "1024")
  11 + private Long id;
  12 +
  13 + @Schema(description = "秒杀活动名称", required = true, example = "晚九点限时秒杀")
  14 + private String name;
  15 +
  16 + @Schema(description = "商品 SPU 编号", required = true, example = "2048")
  17 + private Long spuId;
  18 +
  19 + @Schema(description = "商品图片", required = true, example = "4096") // 从 SPU 的 picUrl 读取
  20 + private String picUrl;
  21 +
  22 + @Schema(description = "商品市场价,单位:分", required = true, example = "50") // 从 SPU 的 marketPrice 读取
  23 + private Integer marketPrice;
  24 +
  25 + @Schema(description = "秒杀金额,单位:分", required = true, example = "100") // 从秒杀商品里取最低价
  26 + private Integer seckillPrice;
  27 +
  28 +}
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/config/AppSeckillConfigRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.config;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +@Schema(description = "用户 App - 秒杀时间段 Response VO")
  7 +@Data
  8 +public class AppSeckillConfigRespVO {
  9 +
  10 + @Schema(description = "秒杀时间段编号", required = true, example = "1024")
  11 + private Long id;
  12 +
  13 + @Schema(description = "开始时间点", required = true, example = "09:00")
  14 + private String startTime;
  15 + @Schema(description = "结束时间点", required = true, example = "09:59")
  16 + private String endTime;
  17 +
  18 +}