package com.yuchen.saas.payment.api.vo;

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

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @ClassName OrderManageVO
 * @Description 订单创建接受VO
 * @Author mqs
 * @Date 2023/5/18 9:45
 * @Version 1.0
 */
@Data
public class OrderManageVO {

    /**
     * 订单来源编号：1.PC端，2.小程序端，3.公众号，4.APP
     */
    @ApiModelProperty(name = "orderSource", value = "订单来源编号：1.PC端，2.小程序端，3.公众号，4.APP")
    @NotNull(message = "订单来源编号不能为空")
    private String orderSource;
    /**
     * 应用id
     */
    @ApiModelProperty(name = "applyId", value = "应用id")
    private Long applyId;
    /**
     * 微信openId
     */
    @ApiModelProperty(name = "openId", value = "微信openId")
    private String openId;
    /**
     * 订单来源名称
     */
    @ApiModelProperty(name = "orderTitle", value = "订单来源名称")
    private String orderTitle;

    /**
     * 场地id
     */
    @ApiModelProperty(name = "siteId", value = "场地ID")
    private Long siteId;

    /**
     * 管理区ID
     */
    @ApiModelProperty(name = "manageArea", value = "管理区ID")
    private Long manageArea;
    /**
     * 订单号
     */
    @ApiModelProperty(name = "orderNo", value = "订单号")
    private String orderNo;
    /**
     * 订单分类
     */
    @ApiModelProperty(name = "orderClassify", value = "订单分类 XSDD:销售订单; FWDD:服务订单; JSDD:即时订单; TKDD:退款订单")
    @NotNull(message = "订单分类不能为空")
    private String orderClassify;
    /**
     * 订单类型 1:充电缴费; 2:停车占位; 3:临停缴费; 4:月卡充值; 5:错时充值;
     */
    @ApiModelProperty(name = "orderType", value = "订单类型 账单类型 1 临时账单 2 月卡账单 3 无牌车, 20 错时卡账单，26 充电账单， 30 占位费")
    @NotNull(message = "订单类型不能为空")
    private String orderType;
    /**
     * 应收金额(分)
     */
    @ApiModelProperty(name = "receivableAmount", value = "应收金额(分)")
    private Long receivableAmount;
    /**
     * 实收金额(分)
     */
    @ApiModelProperty(name = "actualAmount", value = "实收金额(分)")
    private Long actualAmount;
    /**
     * 优惠金额(分)
     */
    @ApiModelProperty(name = "discountsAmount", value = "优惠金额(分)")
    private Long discountsAmount;

    /**
     * 用户优惠券id
     */
    @ApiModelProperty(name = "couponCode", value = "用户优惠券id")
    private String couponCode;

    /**
     * 订单状态 0：待支付、1：支付中、2：支付成功、3：支付失败
     */
    @ApiModelProperty(name = "orderStats", value = "订单状态 0：待支付、1：支付中、2：支付成功、3：支付失败")
    private String orderStats;

    /**
     * 支付单id
     */
    @ApiModelProperty(name = "payId", value = "支付单id")
    private Long payId;
    /**
     * 支付单号
     */
    @ApiModelProperty(name = "payNo", value = "支付单号")
    private String payNo;
    /**
     * 支付时间
     */
    @ApiModelProperty(name = "payTime", value = "支付时间")
    private Date payTime;
    /**
     * 支付方式 1:微信支付; 2:钱包支付;
     */
    @ApiModelProperty(name = "payType", value = "支付方式 1:微信支付; 2:钱包支付;")
    private String payType;
    /**
     * 支付渠道编码
     */
    @ApiModelProperty(name = "payChannelCode", value = "支付渠道编码（xc_pay：厦门银行，all_in_pay：通联支付）")
    private String payChannelCode;
    /**
     * 支付账号
     */
    @ApiModelProperty(name = "payAccount", value = "支付账号")
    private String payAccount;
    /**
     * 结算类型 1:自动结算; 2:用户结算;
     */
    @ApiModelProperty(name = "settleType", value = "结算类型 1:自动结算; 2:用户结算;")
    private String settleType;
    /**
     * 流水对象ID
     */
    @ApiModelProperty(name = "streamObject", value = "流水对象ID")
    private Long streamObject;
    /**
     * 运营商ID
     */
    @ApiModelProperty(name = "operator", value = "运营商ID")
    private Long operator;


    /**
     * 订单详情ID (新增时不传)
     */
    @ApiModelProperty(name = "rates", value = "订单详情ID(新增时不传)")
    private Long propertyId;
    /**
     * 收费标准
     */
    @ApiModelProperty(name = "rates", value = "收费标准")
    private String rates;

    /**
     * 业务账单单号
     */
    @ApiModelProperty(name = "billNo", value = "业务账单单号")
    private String billNo;


    /**
     * 平台用户id
     */
    @ApiModelProperty(name = "userDetailId", value = "平台用户id")
    private Long userDetailId;

    /**
     * 钱包id
     */
    @ApiModelProperty(name = "walletId", value = "钱包id")
    private Long walletId;

    /**
     * 钱包类型（1：平台钱包，2：渠道钱包）
     */
    @ApiModelProperty(name = "walletType", value = "钱包类型（1：平台钱包，2：渠道钱包）")
    private String walletType;

    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createTime", value = "创建时间")
    private Date createTime;

    /**
     * 订单隐私保护
     */
    @ApiModelProperty(name = "privacyProtectionFlag", value = "订单隐私保护")
    private Integer privacyProtectionFlag;

    /**
     * 关闭状态（1：超时关闭，2：用户关闭，3：异常关闭）
     */
    @ApiModelProperty(name = "orderCloseStatus", value = "关闭状态（1：超时关闭，2：用户关闭，3：异常关闭）")
    private Integer orderCloseStatus;

    /**
     * 关闭订单用户id
     */
    @ApiModelProperty(name = "orderCloseUserId", value = "关闭订单用户id")
    private Long orderCloseUserId;
}
