138 lines
3.4 KiB
Java
138 lines
3.4 KiB
Java
package com.org.flashsalesystem.dto;
|
||
|
||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||
import lombok.AllArgsConstructor;
|
||
import lombok.Data;
|
||
import lombok.NoArgsConstructor;
|
||
|
||
import javax.validation.constraints.Min;
|
||
import javax.validation.constraints.NotNull;
|
||
import java.math.BigDecimal;
|
||
import java.time.LocalDateTime;
|
||
|
||
/**
|
||
* 订单数据传输对象
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public class OrderDTO {
|
||
|
||
private Long id;
|
||
private Long userId;
|
||
private String username;
|
||
private Long productId;
|
||
private String productName;
|
||
private String productImageUrl;
|
||
private Integer quantity;
|
||
private BigDecimal totalPrice;
|
||
private Integer status;
|
||
private String statusDescription;
|
||
private Integer orderType;
|
||
private String orderTypeDescription;
|
||
|
||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||
private LocalDateTime createdAt;
|
||
|
||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||
private LocalDateTime updatedAt;
|
||
|
||
/**
|
||
* 创建订单DTO
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public static class CreateDTO {
|
||
@NotNull(message = "商品ID不能为空")
|
||
private Long productId;
|
||
|
||
@Min(value = 1, message = "商品数量必须大于0")
|
||
private Integer quantity;
|
||
|
||
// 收货地址信息
|
||
private String receiverName;
|
||
private String receiverPhone;
|
||
private String receiverAddress;
|
||
|
||
// 备注
|
||
private String remark;
|
||
}
|
||
|
||
/**
|
||
* 订单查询DTO
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public static class QueryDTO {
|
||
private Long userId;
|
||
private Integer status;
|
||
private Integer orderType;
|
||
|
||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||
private LocalDateTime startTime;
|
||
|
||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||
private LocalDateTime endTime;
|
||
private Integer page = 0;
|
||
private Integer size = 10;
|
||
private String sortBy = "createdAt";
|
||
private String sortDirection = "desc";
|
||
}
|
||
|
||
/**
|
||
* 订单状态更新DTO
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public static class StatusUpdateDTO {
|
||
@NotNull(message = "订单ID不能为空")
|
||
private Long orderId;
|
||
|
||
@NotNull(message = "订单状态不能为空")
|
||
private Integer status;
|
||
|
||
private String remark;
|
||
}
|
||
|
||
/**
|
||
* 批量订单操作DTO
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public static class BatchOperationDTO {
|
||
@NotNull(message = "订单ID列表不能为空")
|
||
private java.util.List<Long> orderIds;
|
||
|
||
/**
|
||
* 操作类型:cancel-取消,pay-支付,ship-发货,complete-完成
|
||
*/
|
||
@NotNull(message = "操作类型不能为空")
|
||
private String operation;
|
||
|
||
private String remark;
|
||
}
|
||
|
||
/**
|
||
* 订单统计DTO
|
||
*/
|
||
@Data
|
||
@NoArgsConstructor
|
||
@AllArgsConstructor
|
||
public static class StatisticsDTO {
|
||
private Long totalOrders;
|
||
private Long pendingPaymentOrders;
|
||
private Long paidOrders;
|
||
private Long shippedOrders;
|
||
private Long completedOrders;
|
||
private Long cancelledOrders;
|
||
private BigDecimal totalAmount;
|
||
private BigDecimal todayAmount;
|
||
private Long flashSaleOrders;
|
||
private Long normalOrders;
|
||
}
|
||
}
|