package com.jeequan.jeepay.core.model;

import cn.hutool.core.collection.CollUtil;
import com.jeequan.jeepay.core.constants.CS;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/***
 * 收银台配置
 *
 * @author terrfly
 * @date 2023/3/20 13:40
 */
@Data
public class CashierConfig {

    /**
     * 便捷收银台LOGO及底部显示配置
     **/
    public static final String SELF_CASHIER_SITEINFO_TYPE_DEFAULT = "DEFAULT";  // 默认
    public static final String SELF_CASHIER_SITEINFO_TYPE_NONE = "NONE";    // 为空
    public static final String SELF_CASHIER_SITEINFO_TYPE_CUSTOM = "CUSTOM";    // 自定义


    /**
     * 状态
     **/
    private Byte state;

    /**
     * logo显示类型
     **/
    private String siteInfoType;

    /**
     * 微信H5支持的支付方式，并排序
     **/
    private List<String> wxH5PaywayList;

    /**
     * 支付宝wap 支持的支付方式，并排序
     **/
    private List<String> aliwapPaywayList;


    /**
     * 处理查询到的全部产品： allWaycode 商户所有开通的支付产品
     **/
    public void processWacodesWithWxH5AndALiwap(Set<String> allWaycode) {

        // 包含任意一个配置项目 则支持wxH5 支付产品， 否则将关闭。
        if (!CollUtil.intersectionDistinct(allWaycode, this.getWxH5PaywayList()).isEmpty()) {

            allWaycode.add(CS.PAY_WAY_CODE.WX_H5);

        } else {

            allWaycode.remove(CS.PAY_WAY_CODE.WX_H5);

        }


        // 包含任意一个配置项目 则支持 aliWay 支付产品， 否则将关闭。
        if (!CollUtil.intersectionDistinct(allWaycode, this.getAliwapPaywayList()).isEmpty()) {

            allWaycode.add(CS.PAY_WAY_CODE.ALI_WAP);

        } else {

            allWaycode.remove(CS.PAY_WAY_CODE.ALI_WAP);

        }

    }


    /**
     * 获取到 商户可用的产品列表：  根据： wxH5PaywayList 排序
     **/
    public List<String> getWxH5PaywayListWithIntersectionDistinct(Set<String> allWaycode) {

        if (allWaycode == null || allWaycode.isEmpty()) {
            return new ArrayList<>();
        }

        if (this.wxH5PaywayList == null || this.wxH5PaywayList.isEmpty()) {
            return new ArrayList<>();
        }

        List<String> result = new ArrayList<>();
        for (String s : this.wxH5PaywayList) {
            if (allWaycode.contains(s)) {
                result.add(s);
            }
        }

        return result;
    }

    /**
     * 获取到 商户可用的产品列表：  根据： aliwapPaywayList 排序
     **/
    public List<String> getAliWapPaywayListWithIntersectionDistinct(Set<String> allWaycode) {

        if (allWaycode == null || allWaycode.isEmpty()) {
            return new ArrayList<>();
        }

        if (this.aliwapPaywayList == null || this.aliwapPaywayList.isEmpty()) {
            return new ArrayList<>();
        }

        List<String> result = new ArrayList<>();
        for (String s : this.aliwapPaywayList) {
            if (allWaycode.contains(s)) {
                result.add(s);
            }
        }

        return result;
    }

}
