package com.jeesharp.business.modules.pay.paysubmerchantapplyment.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 商户注销 · 注销提现申请单状态（微信 cancel_state）。
 *
 * @author jeesharp
 * @since 2026-06-15
 */
@Getter
@AllArgsConstructor
public enum PaySubMerchantCancelStateEnum {

    /** 已受理 */
    ACCEPTED("ACCEPTED", "已受理"),

    /** 审核中 */
    REVIEWING("REVIEWING", "审核中"),

    /** 审批驳回 */
    REJECTED("REJECTED", "审批驳回"),

    /** 待商户确认 */
    WAITING_MERCHANT_CONFIRM("WAITING_MERCHANT_CONFIRM", "待商户确认"),

    /** 已注销 */
    CANCELED("CANCELED", "已注销"),

    /** 注销完成 */
    FINISH("FINISH", "注销完成");

    private final String value;
    private final String desc;

    public static PaySubMerchantCancelStateEnum fromValue(String value) {
        if (value == null) {
            return null;
        }
        for (PaySubMerchantCancelStateEnum e : values()) {
            if (e.getValue().equals(value)) {
                return e;
            }
        }
        return null;
    }

    public static String getDescByValue(String value) {
        PaySubMerchantCancelStateEnum e = fromValue(value);
        return e != null ? e.getDesc() : value != null ? value : "";
    }

    /**
     * 是否为终态（不可再同步推进，可重新发起新单）。
     */
    public static boolean isTerminal(String value) {
        return REJECTED.getValue().equals(value) || FINISH.getValue().equals(value);
    }

    /**
     * 是否为进行中状态（禁止重复提交新注销单）。
     */
    public static boolean isInProgress(String value) {
        if (value == null || isTerminal(value)) {
            return false;
        }
        return true;
    }
}
