package com.ylx.order.domain.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
@ApiModel("后台服务订单分页查询DTO")
public class AdminOrderQueryDTO {

    /**
     * 订单号关键字，支持模糊查询。
     */
    @ApiModelProperty("订单号，支持模糊查询")
    private String orderNo;

    /**
     * 下单开始时间，支持 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式。
     */
    @ApiModelProperty("下单开始时间，格式 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss")
    private String startTime;

    /**
     * 下单结束时间，支持 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss 格式。
     */
    @ApiModelProperty("下单结束时间，格式 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss")
    private String endTime;

    /**
     * 用户信息搜索类型。
     * phone 表示手机号，nickName 表示用户昵称，name 表示下单联系人姓名。
     */
    @ApiModelProperty("用户搜索类型：phone=手机号，nickName=用户昵称，name=下单联系人姓名；默认 phone")
    private String userSearchType;

    /**
     * 用户信息搜索关键字。
     */
    @ApiModelProperty("用户搜索关键字")
    private String userKeyword;

    /**
     * 服务分类 ID。
     */
    @ApiModelProperty("服务分类ID")
    private Integer categoryId;

    /**
     * 服务项目名称关键字，支持模糊查询。
     */
    @ApiModelProperty("项目名称，支持模糊查询")
    private String projectName;

    /**
     * 商户信息搜索类型。
     * nickName 表示商户昵称，phone 表示商户手机号。
     */
    @ApiModelProperty("商户搜索类型：nickName=商户昵称，phone=商户手机号；默认 nickName")
    private String merchantSearchType;

    /**
     * 商户信息搜索关键字。
     */
    @ApiModelProperty("商户搜索关键字")
    private String merchantKeyword;

    /**
     * 支付方式。
     * 0 表示购物卡支付，1 表示微信支付。
     */
    @ApiModelProperty("支付方式：0=购物卡支付，1=微信支付")
    private Integer paymentMethod;

    /**
     * 订单状态。
     * 0 待支付，1 待派单，2 待接单，3 待服务，4 服务中，5 已完成，6 已取消。
     */
    @ApiModelProperty("订单状态：0=待支付，1=待派单，2=待接单，3=待服务，4=服务中，5=已完成，6=已取消")
    private Integer status;

    /**
     * 是否查询异常订单。
     * 为 true 时查询关闭、拒绝、退款成功等异常状态订单。
     */
    @ApiModelProperty("异常订单：true 时查询关闭/拒绝/退款成功等异常状态")
    private Boolean abnormalOrder;

    /**
     * 订单归属，也即订单关联的商户类型。
     * 0 表示真实商户，1 表示虚拟商户。
     */
    @ApiModelProperty("订单归属/商户类型：0=真实商户，1=虚拟商户")
    private Integer merchantType;

    /**
     * 服务层解析后的下单开始时间，用于 mapper 查询。
     */
    @ApiModelProperty(hidden = true)
    private Date queryStartTime;

    /**
     * 服务层解析后的下单结束时间，用于 mapper 查询。
     */
    @ApiModelProperty(hidden = true)
    private Date queryEndTime;
}
