package com.starry.admin.modules.order.module.vo;

import com.starry.common.domain.BasePageEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 订单查询对象
 *
 * @author admin
 * @since 2024-03-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "订单查询参数", description = "查询订单信息的条件参数")
public class PlayOrderInfoQueryVo extends BasePageEntity {

    /**
     * uuid
     */
    @ApiModelProperty(value = "订单ID", example = "1", notes = "特定订单的ID")
    private String id;

    /**
     * 订单编号
     */
    @ApiModelProperty(value = "订单编号", example = "ORDER20240320001", notes = "订单的编号，支持模糊查询")
    private String orderNo;

    /**
     * 统一关键字（订单号或店员昵称）
     */
    @ApiModelProperty(value = "关键词", example = "ORDER20240320001", notes = "支持订单号或店员昵称模糊查询")
    private String keyword;

    /**
     * 订单状态【0:1:2:3:4】 0：已下单（待接单） 1：已接单（待开始） 2：已开始（服务中） 3：已完成 4：已取消
     */
    @ApiModelProperty(value = "订单状态", example = "0", notes = "0：已下单（待接单）;1：已接单（待开始）;2：已开始（服务中）;3：已完成;4：已取消")
    private String orderStatus;

    /**
     * 订单类型【-1:退款订单;0:充值订单；1:提现订单；2:普通订单】
     */
    @ApiModelProperty(value = "订单类型", example = "2", notes = "-1:退款订单;0:充值订单;1:提现订单;2:普通订单")
    private String orderType;

    /**
     * 下单类型（-1:其他类型;0:指定单;1:随机单;2:打赏单）
     */
    @ApiModelProperty(value = "下单类型", example = "0", notes = "-1:其他类型;0:指定单;1:随机单;2:打赏单")
    private String placeType;

    /**
     * 是否是首单【0：不是，1：是】
     */
    @ApiModelProperty(value = "是否首单", example = "1", notes = "0：不是，1：是")
    private String firstOrder;

    /**
     * 随机单要求-店员性别（0:未知;1:男;2:女）
     */
    @ApiModelProperty(value = "店员性别", example = "2", notes = "0:未知;1:男;2:女")
    private String sex;

    /**
     * 是否使用优惠券[0:未使用,1:已使用]
     */
    @ApiModelProperty(value = "是否使用优惠券", example = "1", notes = "0:未使用,1:已使用")
    private String useCoupon;

    /**
     * 是否是客服录入订单[0:不是,1:是]
     */
    @ApiModelProperty(value = "是否客服录入", example = "0", notes = "0:不是,1:是")
    private String backendEntry;

    /**
     * 支付方式，0：余额支付,1:微信支付,2:支付宝支付
     */
    @ApiModelProperty(value = "支付方式", example = "0", notes = "0：余额支付,1:微信支付,2:支付宝支付")
    private String payMethod;

    /**
     * 微信号码
     */
    @ApiModelProperty(value = "微信号码", example = "wx123456", notes = "顾客的微信号码")
    private String weiChatCode;

    /**
     * 下单人
     */
    @ApiModelProperty(value = "下单人ID", example = "1", notes = "下单顾客的ID")
    private String purchaserBy;

    /**
     * 下单时间
     */
    @ApiModelProperty(value = "下单时间范围", example = "['2024-01-01 00:00:00','2024-12-31 23:59:59']", notes = "下单时间范围，包含开始和结束时间")
    private List<String> purchaserTime;

    /**
     * 接单人
     */
    @ApiModelProperty(value = "接单人ID", example = "1", notes = "接单店员的ID")
    private String acceptBy;

    /**
     * 接单时间
     */
    @ApiModelProperty(value = "接单时间范围", example = "['2024-01-01 00:00:00','2024-12-31 23:59:59']", notes = "接单时间范围，包含开始和结束时间")
    private List<String> acceptTime;

    /**
     * 开始订单时间（开始服务时间）
     */
    @ApiModelProperty(value = "开始服务时间范围", example = "['2024-01-01 00:00:00','2024-12-31 23:59:59']", notes = "订单开始服务时间范围，包含开始和结束时间")
    private List<String> startOrderTime;

    /**
     * 完成订单时间（开始服务时间）
     */
    @ApiModelProperty(value = "完成服务时间范围", example = "['2024-01-01 00:00:00','2024-12-31 23:59:59']", notes = "订单完成服务时间范围，包含开始和结束时间")
    private List<String> endOrderTime;

    /**
     * 分组ID
     */
    @ApiModelProperty(value = "分组ID", example = "1", notes = "订单所属分组的ID")
    private String groupId;

    @ApiModelProperty(value = "店员昵称", example = "小明", notes = "接单店员的昵称，支持模糊查询")
    private String clerkNickName;

}
