package com.jeesharp.business.modules.trade.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 统一交易订单主状态，与 {@code biz_trade_order.status} 存储值一致。
 * <p>M2 最小闭环：0～5；M5 商城履约扩展：6～7（发货/收货双写，与垂直单 {@code MallOrderStatusEnum} 对齐）。</p>
 *
 * @author jeesharp
 * @since 2026-05-08
 */
@Getter
@AllArgsConstructor
public enum TradeOrderStatusEnum {

    /** 待支付 */
    PENDING_PAY(0, "待支付"),
    /** 已支付（待发货/待履约） */
    PAID(1, "已支付"),
    /** 已取消 */
    CANCELLED(2, "已取消"),
    /** 已关闭（预约核销等终态，小程序展示为已完成） */
    CLOSED(3, "已关闭"),
    /** 退款中 */
    REFUNDING(4, "退款中"),
    /** 已退款 */
    REFUNDED(5, "已退款"),
    /** 履约中（商城快递已发货等） */
    FULFILLING(6, "履约中"),
    /** 已完成（商城确认收货/自提核销等） */
    FULFILLED(7, "已完成");

    private final Integer value;
    private final String desc;

    public static TradeOrderStatusEnum fromValue(Integer value) {
        if (value == null) {
            return null;
        }
        for (TradeOrderStatusEnum e : values()) {
            if (e.value.equals(value)) {
                return e;
            }
        }
        return null;
    }

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