mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
mall + promotion:
1、增加获得符合条件的优惠劵
This commit is contained in:
parent
b3c1be108c
commit
ef656cf762
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.promotion.controller.app.coupon;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponMatchReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponMatchRespVO;
|
||||||
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponPageReqVO;
|
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponPageReqVO;
|
||||||
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponRespVO;
|
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon.AppCouponRespVO;
|
||||||
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.template.AppCouponTemplatePageReqVO;
|
import cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.template.AppCouponTemplatePageReqVO;
|
||||||
@ -30,6 +32,38 @@ public class AppCouponController {
|
|||||||
return success(1L);
|
return success(1L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO 芋艿:待实现
|
||||||
|
@GetMapping("/match-list")
|
||||||
|
@Operation(summary = "获得匹配指定商品的优惠劵列表")
|
||||||
|
public CommonResult<List<AppCouponMatchRespVO>> getMatchCouponList(AppCouponMatchReqVO matchReqVO) {
|
||||||
|
List<AppCouponMatchRespVO> list = new ArrayList<>();
|
||||||
|
Random random = new Random();
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
AppCouponMatchRespVO vo = new AppCouponMatchRespVO();
|
||||||
|
vo.setId(i + 1L);
|
||||||
|
vo.setName("优惠劵" + (i + 1));
|
||||||
|
vo.setUsePrice(random.nextInt(100) * 100);
|
||||||
|
vo.setValidStartTime(LocalDateTime.now().plusDays(random.nextInt(10)));
|
||||||
|
vo.setValidEndTime(LocalDateTime.now().plusDays(random.nextInt(20) + 10));
|
||||||
|
vo.setDiscountType(random.nextInt(2) + 1);
|
||||||
|
if (vo.getDiscountType() == 1) {
|
||||||
|
vo.setDiscountPercent(null);
|
||||||
|
vo.setDiscountPrice(random.nextInt(50) * 100);
|
||||||
|
vo.setDiscountLimitPrice(null);
|
||||||
|
} else {
|
||||||
|
vo.setDiscountPercent(random.nextInt(90) + 10);
|
||||||
|
vo.setDiscountPrice(null);
|
||||||
|
vo.setDiscountLimitPrice(random.nextInt(200) * 100);
|
||||||
|
}
|
||||||
|
vo.setMatch(random.nextBoolean());
|
||||||
|
if (!vo.getMatch()) {
|
||||||
|
vo.setDescription("不符合条件噢");
|
||||||
|
}
|
||||||
|
list.add(vo);
|
||||||
|
}
|
||||||
|
return success(list);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO 芋艿:待实现
|
// TODO 芋艿:待实现
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "优惠劵列表", description = "我的优惠劵")
|
@Operation(summary = "优惠劵列表", description = "我的优惠劵")
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Schema(description = "用户 App - 优惠劵的匹配 Request VO")
|
||||||
|
@Data
|
||||||
|
public class AppCouponMatchReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "商品金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "商品金额不能为空")
|
||||||
|
private Integer price;
|
||||||
|
|
||||||
|
@Schema(description = "商品 SPU 编号的数组", required = true, example = "[1, 2]")
|
||||||
|
@NotEmpty(message = "商品 SPU 编号不能为空")
|
||||||
|
private List<Long> spuIds;
|
||||||
|
|
||||||
|
@Schema(description = "商品 SKU 编号的数组", required = true, example = "[1, 2]")
|
||||||
|
@NotEmpty(message = "商品 SKU 编号不能为空")
|
||||||
|
private List<Long> skuIds;
|
||||||
|
|
||||||
|
@Schema(description = "分类编号的数组", required = true, example = "[10, 20]")
|
||||||
|
@NotEmpty(message = "分类编号不能为空")
|
||||||
|
private List<Long> categoryIds;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.controller.app.coupon.vo.coupon;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Schema(description = "用户 App - 优惠劵 Response VO")
|
||||||
|
@Data
|
||||||
|
public class AppCouponMatchRespVO extends AppCouponRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "是否匹配", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
|
||||||
|
private Boolean match;
|
||||||
|
|
||||||
|
@Schema(description = "匹配条件的提示", example = "所结算商品没有符合条件的商品")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
}
|
@ -1,168 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.trade.controller.app.order.vo;
|
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Schema(description = "用户 App - 订单获得创建信息 Response VO")
|
|
||||||
@Data
|
|
||||||
public class AppTradeOrderGetCreateInfoRespVO {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 商品分组数组
|
|
||||||
*/
|
|
||||||
private List<ItemGroup> itemGroups;
|
|
||||||
/**
|
|
||||||
* 费用
|
|
||||||
*/
|
|
||||||
private Fee fee;
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * 优惠劵列表 TODO 芋艿,后续改改
|
|
||||||
// */
|
|
||||||
// private List<CouponCardAvailableRespDTO> coupons;
|
|
||||||
|
|
||||||
@Schema(description = "商品分组") // 多个商品,参加同一个活动,从而形成分组
|
|
||||||
@Data
|
|
||||||
public static class ItemGroup {
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * 优惠活动
|
|
||||||
// */
|
|
||||||
// private PromotionActivityRespDTO activity; // TODO 芋艿,偷懒
|
|
||||||
/**
|
|
||||||
* 商品 SKU 数组
|
|
||||||
*/
|
|
||||||
private List<Sku> items;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "商品 SKU")
|
|
||||||
@Data
|
|
||||||
public static class Sku {
|
|
||||||
|
|
||||||
// SKU 自带信息
|
|
||||||
@Schema(description = "SKU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
|
||||||
private Integer id;
|
|
||||||
/**
|
|
||||||
* SPU 信息
|
|
||||||
*/
|
|
||||||
private Spu spu;
|
|
||||||
/**
|
|
||||||
* 图片地址
|
|
||||||
*/
|
|
||||||
private String picURL;
|
|
||||||
// /**
|
|
||||||
// * 属性数组
|
|
||||||
// */
|
|
||||||
// private List<ProductAttrKeyValueRespVO> attrs; // TODO 后面改下
|
|
||||||
/**
|
|
||||||
* 价格,单位:分
|
|
||||||
*/
|
|
||||||
private Integer price;
|
|
||||||
/**
|
|
||||||
* 库存数量
|
|
||||||
*/
|
|
||||||
private Integer stock;
|
|
||||||
|
|
||||||
// 非 SKU 自带信息
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 购买数量
|
|
||||||
*/
|
|
||||||
private Integer buyQuantity;
|
|
||||||
// /**
|
|
||||||
// * 优惠活动
|
|
||||||
// */
|
|
||||||
// private PromotionActivityRespDTO activity; // TODO 芋艿,偷懒
|
|
||||||
/**
|
|
||||||
* 原始单价,单位:分。
|
|
||||||
*/
|
|
||||||
private Integer originPrice;
|
|
||||||
/**
|
|
||||||
* 购买单价,单位:分
|
|
||||||
*/
|
|
||||||
private Integer buyPrice;
|
|
||||||
/**
|
|
||||||
* 最终价格,单位:分。
|
|
||||||
*/
|
|
||||||
private Integer presentPrice;
|
|
||||||
/**
|
|
||||||
* 购买总金额,单位:分
|
|
||||||
*
|
|
||||||
* 用途类似 {@link #presentTotal}
|
|
||||||
*/
|
|
||||||
private Integer buyTotal;
|
|
||||||
/**
|
|
||||||
* 优惠总金额,单位:分。
|
|
||||||
*/
|
|
||||||
private Integer discountTotal;
|
|
||||||
/**
|
|
||||||
* 最终总金额,单位:分。
|
|
||||||
*
|
|
||||||
* 注意,presentPrice * quantity 不一定等于 presentTotal 。
|
|
||||||
* 因为,存在无法整除的情况。
|
|
||||||
* 举个例子,presentPrice = 8.33 ,quantity = 3 的情况,presentTotal 有可能是 24.99 ,也可能是 25 。
|
|
||||||
* 所以,需要存储一个该字段。
|
|
||||||
*/
|
|
||||||
private Integer presentTotal;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Data
|
|
||||||
public static class Spu {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SPU 编号
|
|
||||||
*/
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
// ========== 基本信息 =========
|
|
||||||
/**
|
|
||||||
* SPU 名字
|
|
||||||
*/
|
|
||||||
private String name;
|
|
||||||
/**
|
|
||||||
* 分类编号
|
|
||||||
*/
|
|
||||||
private Integer cid;
|
|
||||||
/**
|
|
||||||
* 商品主图地址
|
|
||||||
*
|
|
||||||
* 数组,以逗号分隔
|
|
||||||
*
|
|
||||||
* 建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
|
|
||||||
*/
|
|
||||||
private List<String> picUrls;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Schema(description = "费用(合计)")
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
public static class Fee {
|
|
||||||
|
|
||||||
@Schema(description = "购买总价", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
|
||||||
private Integer buyPrice;
|
|
||||||
/**
|
|
||||||
* 优惠总价
|
|
||||||
*
|
|
||||||
* 注意,满多少元包邮,不算在优惠中。
|
|
||||||
*/
|
|
||||||
private Integer discountTotal;
|
|
||||||
/**
|
|
||||||
* 邮费
|
|
||||||
*/
|
|
||||||
private Integer postageTotal;
|
|
||||||
/**
|
|
||||||
* 最终价格
|
|
||||||
*
|
|
||||||
* 计算公式 = 总价 - 优惠总价 + 邮费
|
|
||||||
*/
|
|
||||||
private Integer presentTotal;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user