package com.jeequan.jeepay.core.model.context;

import com.jeequan.jeepay.core.entity.IsvInfo;
import com.jeequan.jeepay.core.model.oauth2.Oauth2Params;
import com.jeequan.jeepay.core.model.params.IsvParams;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/*
 * Isv支付参数信息 放置到内存， 避免多次查询操作
 *
 * @author terrfly
 * 
 * @date 2021/6/8 17:28
 */
@Data
public class IsvConfigContext {

    /** isv信息缓存 */
    private String isvNo;
    private IsvInfo isvInfo;

    /** 服务商 支付配置信息缓存 */
    private Map<Object, IsvParams> isvParamsMap = new HashMap<>();

    /** 服务商 oauth2参数信息缓存  ( ISV默认的 oauth2参数,   k-v : wxpay - 对象 )
     *
     * 20230110： 添加特殊定义， 当包含其他oauth2渠道时,  key： DIYLIST_V12312_LIST_20220101_wxpay
     * */
    private Map<String, Oauth2Params> oauth2ParamsMap = new HashMap<>();

    /** 服务商选择的oauth2条目,  <接口代码, 选择条目>  */
    private Map<String, String> oauth2SelectedInfoId = new HashMap<>();

    /** 获取isv配置信息 **/
    public IsvParams getIsvParams(Object ifCodeOrAltId){
        return isvParamsMap.get(ifCodeOrAltId);
    }

    /** 获取isv配置信息 **/
    public <T> T getIsvParams(String ifCode, Class<? extends IsvParams> cls){
        return (T)isvParamsMap.get(ifCode);
    }

    /** 获取isv oatuh2配置信息 **/
    public Oauth2Params getOauth2ParamsByIfCode(String ifCode){
        return oauth2ParamsMap.get(ifCode);
    }

    /** 获取isv oatuh2配置信息 **/
    public <T> T getOauth2ParamsByIfCode(String ifCode, Class<? extends Oauth2Params> cls){
        return (T)oauth2ParamsMap.get(ifCode);
    }

    /** 放置 其他oauth2参数  **/
    public void putOauth2ParamsMapByDiyList(String infoId, String ifCode, Oauth2Params oauth2Params){
        oauth2ParamsMap.put("DIYLIST_"+infoId+ "_" + ifCode, oauth2Params);
    }

    /** get 其他oauth2参数  **/
    public Oauth2Params queryOauth2ParamsMapByDiyList(String infoId, String ifCode){
        return oauth2ParamsMap.get("DIYLIST_"+infoId+ "_" + ifCode);
    }


}
