package com.wzj.soopin.order.domain.query;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单表 查询 对象
 *
 * @author zcc
 */
@Schema(description = "订单表 查询 对象")
@Data
public class OrderQuery {
    @Schema(description = "MEMBER_ID 精确匹配")
    private Long memberId;

    @Schema(description = "用户帐号 精确匹配")
    private String memberUsernameLike;

    @Schema(description = "订单总金额 精确匹配")
    private BigDecimal totalAmount;

    @Schema(description = "采购价 精确匹配")
    private BigDecimal purchasePrice;

    @Schema(description = "应付金额（实际支付金额） 精确匹配")
    private BigDecimal payAmount;

    @Schema(description = "运费金额 精确匹配")
    private BigDecimal freightAmount;

    @Schema(description = "支付方式：0->未支付；1->支付宝；2->微信 精确匹配")
    private Integer payType;

    /**
     *  订单状态枚举类型见{@link com.wzj.soopin.order.emum.OrderStatusEnum}
     */
    private Integer status;

    @Schema(description="是否处于退款状态")
    private Boolean aftersale;

    @Schema(description = "物流公司 精确匹配")
    private String deliveryCompany;

    @Schema(description = "物流单号 精确匹配")
    private String deliverySn;

    @Schema(description = "自动确认时间（天） 精确匹配")
    private Integer autoConfirmDay;

    @Schema(description = "收货人姓名 精确匹配")
    private String receiverNameLike;

    @Schema(description = "收货人电话 精确匹配")
    private String receiverPhone;

    @Schema(description = "收货人邮编 精确匹配")
    private String receiverPostCode;

    @Schema(description = "省份/直辖市 精确匹配")
    private String receiverProvince;

    @Schema(description = "城市 精确匹配")
    private String receiverCity;

    @Schema(description = "区 精确匹配")
    private String receiverDistrict;

    @Schema(description = "省份/直辖市id 精确匹配")
    private Long receiverProvinceId;

    @Schema(description = "城市id 精确匹配")
    private Long receiverCityId;

    @Schema(description = "区id 精确匹配")
    private Long receiverDistrictId;

    @Schema(description = "详细地址 精确匹配")
    private String receiverDetailAddress;

    @Schema(description = "订单备注 精确匹配")
    private String note;

    @Schema(description = "确认收货状态：0->未确认；1->已确认 精确匹配")
    private Integer confirmStatus;

    @Schema(description = "支付时间 精确匹配")
    private LocalDateTime paymentTime;

    @Schema(description = "发货时间 精确匹配")
    private LocalDateTime deliveryTime;

    @Schema(description = "确认收货时间 精确匹配")
    private LocalDateTime receiveTime;

    @Schema(description = "创建订单开始时间")
    private LocalDateTime startTime;

    @Schema(description = "创建订单结束时间")
    private LocalDateTime endTime;

    public Object toWrapper() {
        return null;
    }
}
