package com.ylx.order.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
@ApiModel("后台服务订单分页VO")
public class AdminOrderPageVO {

    /**
     * 订单主键 ID。
     */
    @ApiModelProperty("订单ID")
    private Long id;

    /**
     * 订单编号。
     */
    @ApiModelProperty("订单号")
    private String orderNo;

    /**
     * 用户下单时间。
     */
    @ApiModelProperty("下单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderTime;

    /**
     * 订单关联的服务项目名称。
     */
    @ApiModelProperty("服务项目名称")
    private String projectName;

    /**
     * 服务项目时长，单位为分钟。
     */
    @ApiModelProperty("服务时长，单位：分钟")
    private Integer projectDuration;

    /**
     * 用户预约的服务开始时间。
     */
    @ApiModelProperty("预约时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime appointmentStartTime;

    /**
     * 服务项目单价。
     */
    @ApiModelProperty("单价")
    private BigDecimal unitPrice;

    /**
     * 服务项目数量。
     */
    @ApiModelProperty("数量")
    private Integer quantity;

    /**
     * 计费单位编码。
     */
    @ApiModelProperty("计费单位编码")
    private Integer unitType;

    /**
     * 计费单位名称。
     */
    @ApiModelProperty("计费单位名称")
    private String unitName;

    /**
     * 订单金额。
     * 待支付订单表示应付金额，已支付订单表示实付金额。
     */
    @ApiModelProperty("订单金额：未付款为应付，已付款为实付")
    private BigDecimal orderAmount;

    /**
     * 订单金额类型名称。
     * 可取值为应付或实付。
     */
    @ApiModelProperty("金额类型：应付/实付")
    private String amountTypeName;

    /**
     * 出行费用。
     */
    @ApiModelProperty("出行费用")
    private BigDecimal trafficFee;

    /**
     * 支付方式编码。
     */
    @ApiModelProperty("支付方式编码")
    private Integer paymentMethod;

    /**
     * 支付方式名称。
     * 待付款订单显示为 --。
     */
    @ApiModelProperty("支付方式名称；待付款显示 --")
    private String paymentMethodName;

    /**
     * 下单用户注册昵称。
     */
    @ApiModelProperty("下单用户昵称")
    private String userNickName;

    /**
     * 订单内保存的下单联系人姓名。
     */
    @ApiModelProperty("下单联系人姓名")
    private String contactPersonName;

    /**
     * 订单内保存的下单联系人手机号。
     */
    @ApiModelProperty("下单联系人手机号")
    private String contactPhoneNumber;

    /**
     * 脱敏后的下单联系人手机号。
     */
    @ApiModelProperty("下单联系人手机号脱敏")
    private String contactPhoneMasked;

    /**
     * 订单内保存的联系地址。
     */
    @ApiModelProperty("联系地址")
    private String contactAddressInfo;

    /**
     * 订单状态编码。
     */
    @ApiModelProperty("订单状态")
    private Integer status;

    /**
     * 订单状态名称。
     */
    @ApiModelProperty("订单状态名称")
    private String statusName;

    /**
     * 履约状态编码。
     */
    @ApiModelProperty("履约状态")
    private Integer execStatus;

    /**
     * 履约状态名称。
     */
    @ApiModelProperty("履约状态名称")
    private String execStatusName;

    /**
     * 服务商户昵称。
     */
    @ApiModelProperty("服务商户昵称")
    private String merchantNickName;

    /**
     * 服务商户注册手机号。
     */
    @ApiModelProperty("服务商户手机号")
    private String merchantPhone;

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

    /**
     * 服务分类名称。
     */
    @ApiModelProperty("服务分类名称")
    private String categoryName;

    /**
     * 商户纬度
     */
    private BigDecimal merchantLatitude;

    /**
     * 商户经度
     */
    private BigDecimal merchantLongitude;

    /**
     * 用户性别(0女1男)
     */
    private Integer sex;

    /**
     * 服务时间
     */
    private LocalDateTime startTime;
}
