package com.openhis.web.externalintegration.enums;

/**
 * 【BPC】交易类型
 *
 * @author Thanking
 * @date 2025-10-16
 */
public enum BpcTranType {

    /**
     * 被扫消费
     */
    C("C", "被扫消费"),
    /**
     * 退货
     */
    R("R", "退货"),
    /**
     * 数字人民币主扫下单
     */
    E("E", "数字人民币主扫下单"),
    /**
     * 主扫下单（微信/支付宝/云闪付）
     */
    F("F", "主扫下单"),
    /**
     * 关闭订单（部分收单行不支持）
     */
    S("S", "关闭订单"),
    /**
     * 消费撤销（部分收单行不支持）
     */
    D("D", "消费撤销"),
    /**
     * 定金支付（微信、支付宝，部分收单行不支持）
     */
    A("A", "定金支付"),
    /**
     * 退定（微信、支付宝，部分收单行不支持）
     */
    V("V", "退定"),
    /**
     * 定金确认（微信、支付宝，部分收单行不支持）
     */
    B("B", "定金确认"),
    /**
     * 定金确认撤销（微信、支付宝，部分收单行不支持）
     */
    W("W", "定金确认撤销"),
    /**
     * 表示订单支付结果查询、定金支付结果查询
     */
    G("G", "支付结果查询"),
    /**
     * 表示消费撤销订单查询、定金确认撤销结果查询
     */
    Z("Z", "撤销结果查询"),
    /**
     * 表示退货结果查询、退定结果查询、定金确认结果查询
     */
    J("J", "退款结果查询");

    private final String value;
    private final String description;

    BpcTranType(String value, String description) {
        this.value = value;
        this.description = description;
    }

    public String getValue() {
        return value;
    }

    public String getDescription() {
        return description;
    }

    public static BpcTranType getByValue(String value) {
        if (value == null || "".equals(value.trim())) {
            return null;
        }
        for (BpcTranType val : values()) {
            if (val.getValue().equals(value)) {
                return val;
            }
        }
        return null;
    }
}
