package com.happy.Until.Enum;

import com.happy.Until.Func;

/**
 * 订单支付九种状态：
 *     1待支付,2已支付,3待入住,4已入住,5已消费,6支付超时,7已取消,8已退单,9已退款，10退款中,11状态异常
 */
public enum PayEnum {

    待支付(1,"待支付"),已支付(2,"已支付"),待入住(3,"待入住"),
    已入住(4,"已入住"),已消费(5,"已消费"),支付超时(6,"支付超时"),
    已取消(7,"已取消"),已退单(8,"已退单"),已退款(9,"已退款"),
    退款中(10,"退款中"),    状态异常(11,"状态异常");

    private int num;
    private String payStatus;

    PayEnum(int num, String payStatus) {
        this.num = num;
        this.payStatus = payStatus;
    }

    /**
     * 遍历枚举类
     * @param num
     * @return
     */
    public static String getKeyBykey(int num) {
        try {
            for (PayEnum type : PayEnum.values()) {
                if (Func.parseInt(type.getNum()) == num) {
                    return Func.parseStr(type.getNum());
                }
            }
        } catch (Exception e) {
            return Func.parseStr(状态异常.getNum());
        }
        return Func.parseStr(状态异常.getNum());
    }

    /**
     * 遍历枚举类
     * @param num
     * @return
     */
    public static String getValueBykey(int num) {
        try {
            for (PayEnum type : PayEnum.values()) {
                if (Func.parseInt(type.getNum()) == num) {
                    return type.getPayStatus();
                }
            }
        } catch (Exception e) {
            return 状态异常.getPayStatus();
        }
        return 状态异常.getPayStatus();
    }

    /**
     * 遍历枚举类
     * @param value
     * @return
     */
    public static int getKeyByValue(String value) {
        try {
            if (Func.checkNull(value))
                return 状态异常.getNum();

            for (PayEnum type : PayEnum.values()) {
                if (value.equals(Func.parseStr(type.getPayStatus()))) {
                    return type.getNum();
                }
            }
        } catch (Exception e) {
            return 状态异常.getNum();
        }
        return 状态异常.getNum();
    }


    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(String payStatus) {
        this.payStatus = payStatus;
    }
}
