package com.cf.imes.module.system.enums.pay;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 产品支付渠道编码
 *
 * @author Gqr
 * @since 2024/7/5 9:25
 */
@Getter
@AllArgsConstructor
public enum PayProductChannelCodeEnum {
    /**
     * 账户余额
     */
    BALANCE_ONLY(0),

    /**
     * 赠送金
     */
    GIFT_ONLY(1),

    /**
     * 支付宝
     */
    ALIPAY_PC(2),
    /**
     * 微信
     */
    WECHAT_NATIVE(3),

    /**
     * 现金+赠送金
     */
    BALANCE_AND_GIFT(4),

    /**
     * 现金+支付宝
     */
    BALANCE_AND_ALIPAY(5),

    /**
     * 现金+微信
     */
    BALANCE_AND_WECHAT(6),

    /**
     * 赠送金+支付宝
     */
    GIFT_AND_ALIPAY(7),

    /**
     * 赠送金+微信
     */
    GIFT_AND_WECHAT(8),

    /**
     * 现金+赠送金+支付宝
     */
    BALANCE_AND_GIFT_AND_ALIPAY(9),

    /**
     * 现金+赠送金+微信
     */
    BALANCE_AND_GIFT_AND_WECHAT(10);

    private final Integer code;

    public static PayProductChannelCodeEnum fromType(Integer type) {
        for (PayProductChannelCodeEnum value : values()) {
            if (value.getCode().equals(type)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 产品购买渠道是否包含支付宝支付方式
     *
     * @param code
     * @return
     */
    public static boolean isAliPay(Integer code) {
        return code.equals(ALIPAY_PC.code) || code.equals(BALANCE_AND_ALIPAY.code) || code.equals(GIFT_AND_ALIPAY.code) || code.equals(BALANCE_AND_GIFT_AND_ALIPAY.code);
    }
}
