package com.tourism.webadmin.back.dto;

import com.tourism.common.core.object.MyOrderParam;
import com.tourism.common.core.validator.UpdateGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 外卖订单管理Dto对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "DeliveryOrderDto对象")
@Data
public class DeliveryOrderWebDto {

    /**
     * 主键。
     */
    @Schema(description = "主键。", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long id;

    /**
     * 配送时间。
     */
    @Schema(description = "配送时间。")
    private Date deliveryTime;

    /**
     * 配送地址。
     */
    @Schema(description = "配送地址。")
    private String deliveryAddress;

    /**
     * 收货电话。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "收货电话。可支持等于操作符的列表数据过滤。")
    private String deliveryPhone;

    /**
     * 备注。
     */
    @Schema(description = "备注。")
    private String deliveryRemark;

    /**
     * 餐具数量。
     */
    @Schema(description = "餐具数量。")
    private Integer tableware;

    /**
     * 订单号。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "订单号。可支持等于操作符的列表数据过滤。")
    private String orderNo;

    /**
     * 下单时间。
     */
    @Schema(description = "下单时间。")
    private Date orderTime;

    /**
     * 支付方式。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "支付方式。可支持等于操作符的列表数据过滤。")
    private Integer payType;

    /**
     * 订单金额。
     */
    @Schema(description = "订单金额。")
    private BigDecimal orderAmount;

    /**
     * 实付金额。
     */
    @Schema(description = "实付金额。")
    private BigDecimal payAmount;

    /**
     * 订单状态。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "订单状态。可支持等于操作符的列表数据过滤。")
    private Integer orderStatus;

    /**
     * 用户id。
     */
    @Schema(description = "用户id。")
    private Long customerId;

    /**
     * 退款状态。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "退款状态。可支持等于操作符的列表数据过滤。")
    private Integer refundStatus;

    /**
     * 打包费。
     */
    @Schema(description = "打包费。")
    private BigDecimal packCharge;

    /**
     * 配送费。
     */
    @Schema(description = "配送费。")
    private BigDecimal deliveryFee;


    /**
     * 分页号码，从1开始计数。
     */
    @Schema(description = "分页号码。")
    private Integer pageNum;

    /**
     * 每页大小。
     */
    @Schema(description = "每页大小。")
    private Integer pageSize;

    /**
     * 排序。
     */
    @Schema(description = "排序。")
    private MyOrderParam orderParamList;

}
