Files
todo-backend/src/main/java/com/example/building/dto/CreateOrderRequest.java

90 lines
1.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<OrderItemDTO> 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;
}
}