You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.1 KiB

/**
* 订单类,包含订单的基本信息
*/
package com.orderprocessing;
import java.util.Date;
import java.util.List;
public class Order {
private String orderId;
private Date orderDate;
private double totalAmount;
private String customerName;
private List<OrderItem> items;
private OrderStatus status;
public enum OrderStatus {
CREATED, VALIDATED, PROCESSED, SHIPPED, DELIVERED, CANCELLED
}
// 构造方法
public Order(String orderId, String customerName, List<OrderItem> items) {
this.orderId = orderId;
this.customerName = customerName;
this.items = items;
this.orderDate = new Date();
this.status = OrderStatus.CREATED;
calculateTotalAmount();
}
// 计算订单总金额
private void calculateTotalAmount() {
totalAmount = 0;
if (items != null) {
for (OrderItem item : items) {
totalAmount += item.getPrice() * item.getQuantity();
}
}
}
// 应用折扣
public void applyDiscount(double discountAmount) {
if (discountAmount > 0 && discountAmount <= totalAmount) {
totalAmount -= discountAmount;
}
}
// getter和setter方法
public String getOrderId() {
return orderId;
}
public Date getOrderDate() {
return orderDate;
}
public double getTotalAmount() {
return totalAmount;
}
public String getCustomerName() {
return customerName;
}
public List<OrderItem> getItems() {
return items;
}
public OrderStatus getStatus() {
return status;
}
public void setStatus(OrderStatus status) {
this.status = status;
}
@Override
public String toString() {
return "Order{" +
"orderId='" + orderId + '\'' +
", customerName='" + customerName + '\'' +
", totalAmount=" + totalAmount +
", status=" + status +
'}';
}
}