package com.bohuikeji.frame.module.admin.component;

import com.bohuikeji.frame.module.admin.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * 配置静态化变量存放
 * 【注意】使用该类要注意初始化顺序，尤其是静态类直接取值可能为null，springBean取值要保证该类在其之前初始化
 * 【建议】如无法保证初始化顺序，推荐使用工具类:com.bohuikeji.frame.module.admin.utils.SpringUtil.getProperty([String])获取配置
 * @author 10552
 */
@Slf4j
@Order(1)
@Component
public class StaticComponent {
    /**
     * 项目路径静态变量
     */
    public static String ctx;
    @Value("${server.servlet.context-path}")
    public void setCtx(String ctx) {
        StaticComponent.ctx = "/".equals(ctx)?"":ctx;
    }

    /**
     * 项目名称
     */
    public static String applicationName;
    @Value("${spring.application.name}")
    public void setApplicationName(String applicationName) {
        if (StringUtils.isNotBlank(applicationName)){
            StaticComponent.applicationName = applicationName;
            return;
        }
        log.error("配置文件错误，请指定配置项[spring.application.name]的值");
    }
    /**
     * 设置配置环境文件
     */
    public static String EVN;
    @Value("${spring.profiles.active}")
    public void setEvn(String evn){
        StaticComponent.EVN=evn;
    }

    /**
     * 消息队列环境前缀
     */
    public static String mqPix;
    @Value("${tools.queue-pix}")
    public void setMqPix(String mqPix) {
        StaticComponent.mqPix = mqPix;
    }

    /**
     * 项目端口
     */
    public static String port;
    @Value("${server.port}")
    public void setPort(String port) {StaticComponent.port = port;}

    /**
     * 百度地图的ak
     */
    public static String BD_WEB_KEY;
    @Value("${tools.map.baidu-web-key}")
    public void setBaiduKey(String key){
        StaticComponent.BD_WEB_KEY = key;
    }

    /**
     * 高德地图的key
     */
    public static String GD_WEB_KEY;
    @Value("${tools.map.gaode-web-key}")
    public void setGaodeKey(String key){
        StaticComponent.GD_WEB_KEY = key;
    }

    /**
     * 支付宝支付回调key
     */
    public static String ALIPAY_NOTIFY_URL;
    @Value("${tools.pay.alipay-notify_url}")
    public void setAlipay(String key){
        StaticComponent.ALIPAY_NOTIFY_URL = key;
    }

    /**
     * 微信支付回调key
     */
    public static String WXJSAPIPAY_NOTIFY_URL;
    @Value("${tools.wxpay.wxjsapiapy-notify_url}")
    public void setWxpay(String key){
        StaticComponent.WXJSAPIPAY_NOTIFY_URL = key;
    }

    /**
     * 百度小程序支付回调key
     */
    public static String BAIDUPAY_NOTIFY_URL;
    @Value("${tools.baidupay.baidupay-notify_url}")
    public void setBaidupay(String key){ StaticComponent.BAIDUPAY_NOTIFY_URL = key; }

    /**
     * 百度小程序退款回调地址key
     */
    public static String BAIDUREFUND_NOTIFY_URL;
    @Value("${tools.baidupay.baidurefund-notify_url}")
    public void setBaidurefund(String key){ StaticComponent.BAIDUREFUND_NOTIFY_URL = key; }

    /**
     * 抖音小程序支付回调key
     */
    /*public static String BYTEPAY_NOTIFY_URL;
    @Value("${tools.bytepay.bytepay-notify_url}")
    public void setBytepay(String key){ StaticComponent.BYTEPAY_NOTIFY_URL = key; }*/

    /**
     * 对象存储服务地址地址
     */
    public static String OOS_WRITE_URL;
    @Value("${tools.oos.write}")
    public void setOosUrl(String url){
        StaticComponent.OOS_WRITE_URL=url;
    }

    /**
     * 支付宝配送员绑定回调地址
     */
    public static String ALIPAY_BINDING_URL;
    @Value("${tools.alipay.binding-url}")
    public void setAlipayBindingUrl(String url){
        StaticComponent.ALIPAY_BINDING_URL=url;
    }

    /**
     * 保险投保接口
     */
    public static String BX_API_TB;
    @Value("${bx.api-tb}")
    public void setBxApiTb(String url){
        StaticComponent.BX_API_TB=url;
    }

    /**
     * 保险查询接口地址
     */
    public static String BX_API_CX;
    @Value("${bx.api-cx}")
    public void setBxApiCx(String url){
        StaticComponent.BX_API_CX=url;
    }

    /**
     * 环境域名
     */
    public static String TOOLS_EVN_URL;
    @Value("${tools.evn-url}")
    public void setToolsEvnUrl(String url){
        StaticComponent.TOOLS_EVN_URL=url;
    }

}

