package com.kym.entity.awoara;

import com.kym.entity.awoara.Detail;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 订单信息
 */
@Data
@Accessors(chain = true)
public class OrderInfo {

    /**
     * 开机⽅式。
     * button 表⽰使⽤机器的维护按钮快速开机的订单。
     * network 表⽰通过⽹络命令推送来的订单。
     * coin 表⽰投币开机的订单。
     * card 表⽰刷卡卡机的订单。
     * 注意:后续可能会增加其它的开机⽅式。
     */
    private String open_type;
    /**
     * 关机⽅式。
     * button ⽤户按关机按钮关闭的机器。
     * network 通过⽹络命令关闭的机器。
     * no_balance 消费⾦额达到本次开机的最⼤消费⾦额(prepay_money)限制关机的。
     * idle_timeout 设备空闲超时(⻅配置项idle_timeout)关机的。
     * operation_timeout 操作超时(⻅配置项operation_timeout)关机的。
     * card 表⽰刷卡关机的订单。
     * 注意:为空表⽰还没有关机，⽤户正在使⽤。后续可能会增加其它的关机⽅式。
     */
    private String close_type;
    /**
     * 订单号，和开机命令的order_id相同，如果使⽤按钮快速开机，order_id是空字符串,
     * 并且open_type为button
     */
    private String order_id;
    /**
     * 本机订单号(不保证连续)。
     */
    private String order_id_local;
    /**
     * 会员折扣比例(0-100,100表⽰不享受折扣，95表⽰9.5折优惠)。
     */
    private int member_discount;
    /**
     * 本次开机的预付⾦额(单位分，本次开机最⼤消费⾦额限制)。
     */
    private int prepay_money;
    /**
     * 消费总额，等于各单项费⽤之和(单位分)
     */
    private int amount;
    /**
     * 应收⾦额，如果⼤于预付⾦额，则限制为预付⾦额并关机，否则等于消费总额(单位分)。
     */
    private int amount_receivable;
    /**
     * 实收⾦额等于应收⾦额乘会员折扣(单位分)。
     */
    private int amount_received;
    /**
     * 优惠⾦额等于消费总额减去实收⾦额(单位分).
     */
    private int discount_money;
    /**
     * 投币的累计⾦额(仅限刷卡订单,单位分)
     */
    private int coin_money;
    /**
     * 投币的次数仅限刷卡订单)。
     */
    private int coin_num;
    /**
     * 卡类型(仅限刷卡订单,1表⽰普通卡，2表⽰储值卡)。
     */
    private Integer card_type;
    /**
     * 卡内码，卡出⼚的时候⼚家写入的ID(仅限刷卡订单)。
     */
    private String card_id;
    /**
     * 卡串号，印刷在卡的表⾯，通过电脑上的卡管理⼯具写入卡内。(仅限刷卡订单)。
     */
    private String card_sn;
    /**
     * 卡过期时间，从1970年开始的时间戳(仅限刷储值卡的订单有效，普通卡为总是为0)。
     */
    private long card_expired;
    /**
     * 卡内余额(仅限刷储值卡的订单有效，普通卡为总是为0)
     */
    private int card_balance;
    /**
     * 订单操作剩余操作时间(单位秒)，开机后从operation_timeout开始每秒减1，减到0关机，关机原因close_type=operation_timeout
     */
    private int operation_remain_time;
    /**
     * 设备空闲关机倒计时剩余时间(单位秒)，开机后从idle_timeout开始每秒减1，⻅到0关机，
     * 关机原因close_type=idle_time(递减过程中按任意功能键，重新开始从idle_timeout递减)。
     */
    private int idle_remain_time;
    /**
     * 费⽤明细
     */
    private List<Detail> detail;


}
