package com.jsowell.thirdparty.lianlian.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单信息
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class OrderInfo {
    /**
     * 对接平台ID  Y
     * 组织机构代码
     */
    @JSONField(name = "OperatorID")
    private String operatorID;

    /**
     * 设备所属运营商ID  Y
     * 设备所属运营商组织机构代码
     */
    @JSONField(name = "EquipmentOwnerID")
    private String equipmentOwnerID;

    /**
     * 充电站ID  Y
     * 对接平台自定义的唯一编码
     */
    @JSONField(name = "StationID")
    private String stationID;

    /**
     * 设备编码  Y
     * 设备唯一编码，对同一对接平台，保证唯一
     */
    @JSONField(name = "EquipmentID")
    private String equipmentID;

    /**
     * 充电设备接口编码  Y
     * 充电设备接口编码，同一对接平台内唯一
     */
    @JSONField(name = "ConnectorID")
    private String connectorID;

    /**
     * 充电订单号  Y
     * 对接平台系统订单编号
     */
    @JSONField(name = "StartChargeSeq")
    private String startChargeSeq;

    /**
     * 用户发起充电类型  Y
     * 1:本平台注册用户
     * 2:卡用户
     * 3：互联互通用户
     * 10:其他
     */
    @JSONField(name = "UserChargeType")
    private Integer userChargeType;

    /**
     * 用户手机号  N
     * 若用户发起充电类型为 APP，用户手机号必填
     */
    @JSONField(name = "MobileNumber")
    private String mobileNumber;

    /**
     * 本次充电消费总金额(单位：元,保留小数点后2位)  Y
     */
    @JSONField(name = "Money")
    private BigDecimal money;

    /**
     * 本次充电电费总金额(单位：元,保留小数点后2位)  Y
     */
    @JSONField(name = "ElectMoney")
    private BigDecimal electMoney;

    /**
     * 本次充电服务费金额(单位：元,保留小数点后2位)  Y
     */
    @JSONField(name = "ServiceMoney")
    private BigDecimal serviceMoney;

    /**
     * 本次充电电量  Y
     * 单位kWh，精度0.01,保留小数点后2位
     */
    @JSONField(name = "Elect")
    private BigDecimal elect;

    /**
     * 本次充电开始时间  Y
     * 格式“yyyy-MM-dd HH:mm:ss”
     */
    @JSONField(name = "StartTime")
    private String startTime;

    /**
     * 本次充电结束时间  Y
     * 格式“yyyy-MM-dd HH:mm:ss”
     */
    @JSONField(name = "EndTime")
    private String endTime;

    /**
     * 支付金额  Y
     */
    @JSONField(name = "PaymentAmount")
    private BigDecimal paymentAmount;

    /**
     * 支付时间  N
     */
    @JSONField(name = "PayTime")
    private String payTime;

    /**
     * 支付方式  Y
     * 1：支付宝
     * 2：微信支付
     * 3：交通卡
     * 4：预充卡
     * 5：银联
     * 6：其他自定义
     */
    @JSONField(name = "PayChannel")
    private Integer payChannel;

    /**
     * 优惠信息描述  N
     * 描述支付的相关优惠信息，如优惠券，折扣等
     */
    @JSONField(name = "DiscountInfo")
    private String discountInfo;

    /**
     * 充电结束原因  Y
     * 0:用户手动停止充电
     * 1:客户归属地运营商平台停止充电
     * 2:BMS停止充电
     * 3:充电机设备故障
     * 4:连接器断开
     * 5-99自定义
     */
    @JSONField(name = "StopReason")
    private Integer stopReason;

    /**
     * 时段数N,范围：0～32  N
     */
    @JSONField(name = "SumPeriod")
    private Integer sumPeriod;

    /**
     * 充电明细信息  Y
     */
    @JSONField(name = "ChargeDetails")
    private List<ChargeDetail> chargeDetails;
}
