package com.wzj.soopin.transaction.enums.easypay;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.dromara.common.core.exception.ServiceException;

import java.util.Arrays;


/**
 * 分账单状态，（处理中、成功、失败、已退款）
 * 0 -> 交易成功
 * 1 -> 交易部分成功
 * X -> 交易失败
 * 9 -> 支付中，具体状态未知
 * A -> 已撤销
 * C -> 已关闭
 * R -> 已退款
 * E -> 已冲正
 *
 *
 *
 *
 * 已撤销
 */
@Getter
@AllArgsConstructor
public enum SepaStatus {

    SUCCESS("0", "成功"),
    PARTIALLY_SUCCESS("1", "交易部分成功"),
    FAIL("X", "失败"),
    PENDING("9", "处理中"),
    A("A", "已撤销"),
    C("C", "已关闭"),
    R("R", "已退款"),
    E("E", "已冲正");


    /**
     * 状态code
     */
    private final String value;

    /**
     * 状态描述
     */
    private final String info;

    public static SepaStatus getByValue(String value) {
        return Arrays.stream(SepaStatus.values())
            .filter(e -> StrUtil.equals(e.getValue(), value))
            .findFirst()
            .orElseThrow(() -> new ServiceException("分账状态不存在"));

    }
}
