package com.example.building.dto; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; /** * 创建订单请求DTO * 核心业务逻辑: * 1. 计算订单原价(total_amount) = Σ(item.price × item.quantity) * 2. 计算优惠金额(discount_amount) = total_amount × (100 - discount_rate) / 100 * 3. 计算实付金额(actual_amount) = total_amount - discount_amount */ @Data public class CreateOrderRequest { /** * 客户ID */ private String customerId; /** * 订单明细 */ @NotEmpty(message = "订单明细不能为空") private List items; /** * 折扣率(百分比), 默认100(保留此逻辑) */ private BigDecimal discountRate; /** * 优惠金额(元) */ private BigDecimal discountMoney; /** * 备注 */ private String remark; /** * 支付方式 */ private String paymentMethod; /** * 订单明细项DTO */ @Data public static class OrderItemDTO { /** * 商品ID */ @NotBlank(message = "商品ID不能为空") private String productId; /** * 数量 */ @NotNull(message = "数量不能为空") private Integer quantity; /** * 销售单价(用户可自定义) */ private BigDecimal price; /** * 长度(cm) */ private BigDecimal length; /** * 宽度(cm) */ private BigDecimal width; /** * 面积(m²) */ private BigDecimal area; } }