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

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * 商城订单支付方式编码（持久化至 {@code mall_order.pay_type}）。
 *
 * @author jeesharp
 * @since 2026-05-08
 */
@Getter
@AllArgsConstructor
public enum MallPayTypeEnum {

    /** 微信小程序支付 */
    WECHAT_JSAPI("wechat_mini", "微信小程序"),

    /** 支付成功落库主渠道（与财务侧 WECHAT 对齐） */
    WECHAT("WECHAT", "微信支付"),

    ALIPAY("ALIPAY", "支付宝"),

    BALANCE("BALANCE", "余额"),

    COINS("COINS", "金币"),

    NONE("NONE", "未支付/其他");

    private final String code;

    private final String desc;

    /**
     * 根据库表编码解析中文展示名；支持逗号分隔组合支付。
     */
    public static String getDescByCode(String code) {
        if (StrUtil.isBlank(code)) {
            return "";
        }
        String trimmed = code.trim();
        if (trimmed.contains(",")) {
            return Arrays.stream(trimmed.split(","))
                    .map(String::trim)
                    .filter(StrUtil::isNotBlank)
                    .map(MallPayTypeEnum::getDescByCode)
                    .collect(Collectors.joining("、"));
        }
        for (MallPayTypeEnum e : values()) {
            if (e.code.equalsIgnoreCase(trimmed)) {
                return e.desc;
            }
        }
        if ("WECHAT_JSAPI".equalsIgnoreCase(trimmed) || "WECHAT_MINI".equalsIgnoreCase(trimmed)) {
            return WECHAT_JSAPI.desc;
        }
        return trimmed;
    }
}
