package utils

import (
	"fmt"
	beeLogger "github.com/beego/bee/v2/logger"
	"github.com/beego/beego/v2/server/web"
	"github.com/rdlucklib/rdluck_tools/cache"
)

var (
	RunMode        string //运行模式
	MYSQL_URL      string //数据库连接
	MYSQL_URL_DATA string
	MYSQL_URL_EDB  string

	REDIS_CACHE string       //缓存地址
	Rc          *cache.Cache //redis缓存
	Re          error        //redis错误
)

// 基础配置
var (
	// SystemType 系统类型; hz:弘则;trial:试用平台;custom:客户
	SystemType string
	// APPNAME 项目中文名称
	APPNAME string
	// EmailSendToUsers 邮件提醒人员
	EmailSendToUsers string
	// AlarmMsgUrl 报警服务地址
	AlarmMsgUrl string
)

// 公共api内部服务调用
var (
	// EDB_LIB_URL 公共指标库
	EDB_LIB_URL         string
	APP_EDB_LIB_NAME_EN string
	EDB_LIB_Md5_KEY     string
)

func init() {
	tmpRunMode, err := web.AppConfig.String("run_mode")
	if err != nil {
		panic("配置文件读取run_mode错误 " + err.Error())
	}
	RunMode = tmpRunMode
	if RunMode == "" {
		localIp, err := GetLocalIP()
		if localIp == "10.0.0.123" {
			RunMode = "debug"
		} else {
			RunMode = "release"
		}
		configPath := `/home/code/config/eta_chart_lib/conf/app.conf`
		err = web.LoadAppConfig("ini", configPath)
		if err != nil {
			fmt.Println("web.LoadAppConfig Err:" + err.Error())
		}
	}
	config, err := web.AppConfig.GetSection(RunMode)
	if err != nil {
		panic("配置文件读取错误 " + err.Error())
	}
	beeLogger.Log.Info(RunMode + " 模式")
	MYSQL_URL = config["mysql_url"]

	MYSQL_URL_DATA = config["mysql_url_data"]
	MYSQL_URL_EDB = config["mysql_url_edb"]

	REDIS_CACHE = config["beego_cache"]
	if len(REDIS_CACHE) <= 0 {
		panic("redis链接参数没有配置")
	}

	Rc, Re = cache.NewCache(REDIS_CACHE) //初始化缓存
	if Re != nil {
		fmt.Println(Re)
		panic(Re)
	}

	// 系统类型
	systemType, err := web.AppConfig.String("system_type")
	if err != nil {
		panic(any("配置文件读取system_type错误 " + err.Error()))
	}
	SystemType = systemType

	// 项目中文名称
	appNameCn, err := web.AppConfig.String("app_name_cn")
	if err != nil {
		panic(any("配置文件读取app_name_cn错误 " + err.Error()))
	}
	APPNAME = appNameCn

	// 邮件提醒人员
	EmailSendToUsers = config["email_send_to_users"]

	// 报警服务地址
	AlarmMsgUrl = config["alarm_msg_url"]

	// 公共api内部服务调用
	{
		// 公共指标库相关
		EDB_LIB_URL = config["edb_lib_url"]
		APP_EDB_LIB_NAME_EN = config["app_edb_lib_name_en"]
		EDB_LIB_Md5_KEY = config["edb_lib_md5_key"]
	}

}

//http://8.136.199.33:8608/swagger/
//http://8.136.199.33:8608/v1