Commit ef656cf76213df84a7261906d495daab36414cfa

Authored by YunaiV
1 parent b3c1be10

mall + promotion:

1、增加获得符合条件的优惠劵
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/coupon/AppCouponController.java
... ... @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.promotion.controller.app.coupon;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponMatchReqVO;
  6 +import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponMatchRespVO;
5 7 import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponPageReqVO;
6 8 import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponRespVO;
7 9 import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.template.AppCouponTemplatePageReqVO;
... ... @@ -31,6 +33,38 @@ public class AppCouponController {
31 33 }
32 34  
33 35 // TODO 芋艿:待实现
  36 + @GetMapping("/match-list")
  37 + @Operation(summary = "获得匹配指定商品的优惠劵列表")
  38 + public CommonResult<List<AppCouponMatchRespVO>> getMatchCouponList(AppCouponMatchReqVO matchReqVO) {
  39 + List<AppCouponMatchRespVO> list = new ArrayList<>();
  40 + Random random = new Random();
  41 + for (int i = 0; i < 10; i++) {
  42 + AppCouponMatchRespVO vo = new AppCouponMatchRespVO();
  43 + vo.setId(i + 1L);
  44 + vo.setName("优惠劵" + (i + 1));
  45 + vo.setUsePrice(random.nextInt(100) * 100);
  46 + vo.setValidStartTime(LocalDateTime.now().plusDays(random.nextInt(10)));
  47 + vo.setValidEndTime(LocalDateTime.now().plusDays(random.nextInt(20) + 10));
  48 + vo.setDiscountType(random.nextInt(2) + 1);
  49 + if (vo.getDiscountType() == 1) {
  50 + vo.setDiscountPercent(null);
  51 + vo.setDiscountPrice(random.nextInt(50) * 100);
  52 + vo.setDiscountLimitPrice(null);
  53 + } else {
  54 + vo.setDiscountPercent(random.nextInt(90) + 10);
  55 + vo.setDiscountPrice(null);
  56 + vo.setDiscountLimitPrice(random.nextInt(200) * 100);
  57 + }
  58 + vo.setMatch(random.nextBoolean());
  59 + if (!vo.getMatch()) {
  60 + vo.setDescription("不符合条件噢");
  61 + }
  62 + list.add(vo);
  63 + }
  64 + return success(list);
  65 + }
  66 +
  67 + // TODO 芋艿:待实现
34 68 @GetMapping("/page")
35 69 @Operation(summary = "优惠劵列表", description = "我的优惠劵")
36 70 public CommonResult<PageResult<AppCouponRespVO>> takeCoupon(AppCouponPageReqVO pageReqVO) {
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/coupon/vo/coupon/AppCouponMatchReqVO.java 0 → 100755
  1 +package cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import javax.validation.constraints.NotEmpty;
  7 +import javax.validation.constraints.NotNull;
  8 +import java.util.List;
  9 +
  10 +@Schema(description = "用户 App - 优惠劵的匹配 Request VO")
  11 +@Data
  12 +public class AppCouponMatchReqVO {
  13 +
  14 + @Schema(description = "商品金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @NotNull(message = "商品金额不能为空")
  16 + private Integer price;
  17 +
  18 + @Schema(description = "商品 SPU 编号的数组", required = true, example = "[1, 2]")
  19 + @NotEmpty(message = "商品 SPU 编号不能为空")
  20 + private List<Long> spuIds;
  21 +
  22 + @Schema(description = "商品 SKU 编号的数组", required = true, example = "[1, 2]")
  23 + @NotEmpty(message = "商品 SKU 编号不能为空")
  24 + private List<Long> skuIds;
  25 +
  26 + @Schema(description = "分类编号的数组", required = true, example = "[10, 20]")
  27 + @NotEmpty(message = "分类编号不能为空")
  28 + private List<Long> categoryIds;
  29 +
  30 +}
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/coupon/vo/coupon/AppCouponMatchRespVO.java 0 → 100755
  1 +package cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon;
  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 AppCouponMatchRespVO extends AppCouponRespVO {
  9 +
  10 + @Schema(description = "是否匹配", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
  11 + private Boolean match;
  12 +
  13 + @Schema(description = "匹配条件的提示", example = "所结算商品没有符合条件的商品")
  14 + private String description;
  15 +
  16 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderGetCreateInfoRespVO.java deleted
1   -package cn.iocoder.yudao.module.trade.controller.app.order.vo;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.AllArgsConstructor;
5   -import lombok.Data;
6   -
7   -import java.util.List;
8   -
9   -@Schema(description = "用户 App - 订单获得创建信息 Response VO")
10   -@Data
11   -public class AppTradeOrderGetCreateInfoRespVO {
12   -
13   - /**
14   - * 商品分组数组
15   - */
16   - private List<ItemGroup> itemGroups;
17   - /**
18   - * 费用
19   - */
20   - private Fee fee;
21   -
22   -// /**
23   -// * 优惠劵列表 TODO 芋艿,后续改改
24   -// */
25   -// private List<CouponCardAvailableRespDTO> coupons;
26   -
27   - @Schema(description = "商品分组") // 多个商品,参加同一个活动,从而形成分组
28   - @Data
29   - public static class ItemGroup {
30   -
31   -// /**
32   -// * 优惠活动
33   -// */
34   -// private PromotionActivityRespDTO activity; // TODO 芋艿,偷懒
35   - /**
36   - * 商品 SKU 数组
37   - */
38   - private List<Sku> items;
39   -
40   - }
41   -
42   - @Schema(description = "商品 SKU")
43   - @Data
44   - public static class Sku {
45   -
46   - // SKU 自带信息
47   - @Schema(description = "SKU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
48   - private Integer id;
49   - /**
50   - * SPU 信息
51   - */
52   - private Spu spu;
53   - /**
54   - * 图片地址
55   - */
56   - private String picURL;
57   -// /**
58   -// * 属性数组
59   -// */
60   -// private List<ProductAttrKeyValueRespVO> attrs; // TODO 后面改下
61   - /**
62   - * 价格,单位:分
63   - */
64   - private Integer price;
65   - /**
66   - * 库存数量
67   - */
68   - private Integer stock;
69   -
70   - // 非 SKU 自带信息
71   -
72   - /**
73   - * 购买数量
74   - */
75   - private Integer buyQuantity;
76   -// /**
77   -// * 优惠活动
78   -// */
79   -// private PromotionActivityRespDTO activity; // TODO 芋艿,偷懒
80   - /**
81   - * 原始单价,单位:分。
82   - */
83   - private Integer originPrice;
84   - /**
85   - * 购买单价,单位:分
86   - */
87   - private Integer buyPrice;
88   - /**
89   - * 最终价格,单位:分。
90   - */
91   - private Integer presentPrice;
92   - /**
93   - * 购买总金额,单位:分
94   - *
95   - * 用途类似 {@link #presentTotal}
96   - */
97   - private Integer buyTotal;
98   - /**
99   - * 优惠总金额,单位:分。
100   - */
101   - private Integer discountTotal;
102   - /**
103   - * 最终总金额,单位:分。
104   - *
105   - * 注意,presentPrice * quantity 不一定等于 presentTotal 。
106   - * 因为,存在无法整除的情况。
107   - * 举个例子,presentPrice = 8.33 ,quantity = 3 的情况,presentTotal 有可能是 24.99 ,也可能是 25 。
108   - * 所以,需要存储一个该字段。
109   - */
110   - private Integer presentTotal;
111   -
112   - }
113   -
114   - @Data
115   - public static class Spu {
116   -
117   - /**
118   - * SPU 编号
119   - */
120   - private Integer id;
121   -
122   - // ========== 基本信息 =========
123   - /**
124   - * SPU 名字
125   - */
126   - private String name;
127   - /**
128   - * 分类编号
129   - */
130   - private Integer cid;
131   - /**
132   - * 商品主图地址
133   - *
134   - * 数组,以逗号分隔
135   - *
136   - * 建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
137   - */
138   - private List<String> picUrls;
139   -
140   - }
141   -
142   - @Schema(description = "费用(合计)")
143   - @Data
144   - @AllArgsConstructor
145   - public static class Fee {
146   -
147   - @Schema(description = "购买总价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
148   - private Integer buyPrice;
149   - /**
150   - * 优惠总价
151   - *
152   - * 注意,满多少元包邮,不算在优惠中。
153   - */
154   - private Integer discountTotal;
155   - /**
156   - * 邮费
157   - */
158   - private Integer postageTotal;
159   - /**
160   - * 最终价格
161   - *
162   - * 计算公式 = 总价 - 优惠总价 + 邮费
163   - */
164   - private Integer presentTotal;
165   -
166   - }
167   -
168   -}