package com.zanxiang.game.module.base.pojo.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.logging.log4j.util.Strings;

import java.util.Objects;

/**
 * 支付渠道枚举
 *
 * @author xufeng
 * @date 2022/6/9 10:41
 */
@Getter
@AllArgsConstructor
public enum PayWayEnum {

    /**
     * 支付宝
     */
    ALI_PAY(1, "ALI_PAY", "支付宝"),

    /**
     * 微信
     */
    WX_PAY(2, "WX_PAY", "微信"),

    /**
     * 米大师
     */
    MI_PAY(3, "MI_PAY", "米大师");

    /**
     * 支付渠道id
     */
    private final Integer payWayId;

    /**
     * 支付渠道key
     */
    private final String payWayKey;

    /**
     * 支付渠道名称
     */
    private final String payWayName;

    /**
     * 根据支付类型id获取名称
     *
     * @param payWayId : 支付类型
     * @return : 支付类型枚举
     */
    public static String getNameByPayWayId(Long payWayId) {
        if (payWayId == null) {
            return Strings.EMPTY;
        }
        PayWayEnum payWayEnum = PayWayEnum.getByPayWayId(payWayId.intValue());
        //获取支付名称
        return payWayEnum == null ? Strings.EMPTY : payWayEnum.getPayWayName();
    }

    /**
     * 根据支付类型id获取名称
     *
     * @param payWayId : 支付类型
     * @return : 支付类型枚举
     */
    public static String getKeyByPayWayId(Integer payWayId) {
        if (payWayId == null) {
            return Strings.EMPTY;
        }
        PayWayEnum payWayEnum = PayWayEnum.getByPayWayId(payWayId);
        //获取支付名称
        return payWayEnum == null ? Strings.EMPTY : payWayEnum.getPayWayKey();
    }

    /**
     * 根据支付类型id获取名称
     *
     * @param payWayId : 支付类型
     * @return : 支付类型枚举
     */
    public static PayWayEnum getByPayWayId(Integer payWayId) {
        if (payWayId == null) {
            return null;
        }
        for (PayWayEnum payWayEnum : PayWayEnum.values()) {
            if (Objects.equals(payWayId, payWayEnum.getPayWayId())) {
                return payWayEnum;
            }
        }
        return null;
    }
}
