|
|
package config
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"gopkg.in/ini.v1"
|
|
|
"log"
|
|
|
"os"
|
|
|
"path/filepath"
|
|
|
)
|
|
|
|
|
|
var Config = &App{}
|
|
|
|
|
|
const ConfigProd = "prod"
|
|
|
|
|
|
type App struct {
|
|
|
Page Page `ini:"page"`
|
|
|
Redis Redis `ini:"redis"`
|
|
|
Mysql Mysql `ini:"mysql"`
|
|
|
Server Server `ini:"server"`
|
|
|
RunModel string `ini:"runModel"`
|
|
|
Debug bool `ini:"debug"`
|
|
|
Upload Upload `ini:"upload"`
|
|
|
Wxapp Wxapp `ini:"wxapp"`
|
|
|
Wxopen Wxopen `ini:"wxopen"`
|
|
|
Che300 Che300 `ini:"che300"`
|
|
|
Alipay Alipay `ini:"alipay"`
|
|
|
Wxpay Wxpay `ini:"wxpay"`
|
|
|
Jpush Jpush `ini:"jpush"`
|
|
|
AliSms AliSms `ini:"aliSms"`
|
|
|
Setting Setting `ini:"setting"`
|
|
|
AliOcr AliOcr `ini:"aliOcr"`
|
|
|
TencentEss TencentEss `ini:"tencentEss"`
|
|
|
AppleLogin AppleLogin `ini:"appleLogin"`
|
|
|
OpenSearch OpenSearch `ini:"openSearch"`
|
|
|
}
|
|
|
type IniConfig struct {
|
|
|
ConfigPath string
|
|
|
ConfigName string
|
|
|
RunModelName string
|
|
|
RunModel string
|
|
|
RunModelErrAllow bool // 允许不使用拓展配置文件
|
|
|
}
|
|
|
|
|
|
func InitConfig(config *IniConfig) {
|
|
|
if config.ConfigName == "" {
|
|
|
config.ConfigName = "app.ini"
|
|
|
}
|
|
|
// 读取配置文件
|
|
|
load, err := ini.Load(filepath.Join(config.ConfigPath, config.ConfigName))
|
|
|
if err != nil {
|
|
|
log.Fatal("配置文件读取错误,err:", err)
|
|
|
return
|
|
|
}
|
|
|
// 环境配置
|
|
|
if config.RunModel == "" {
|
|
|
config.RunModel = os.Getenv("RunModel")
|
|
|
if config.RunModel == "" {
|
|
|
config.RunModel = load.Section("").Key("defaultModel").String()
|
|
|
if config.RunModel == "" {
|
|
|
config.RunModel = "test"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if config.RunModelName == "" {
|
|
|
config.RunModelName = fmt.Sprintf("app.%s.ini", config.RunModel)
|
|
|
}
|
|
|
if err := load.Append(filepath.Join(config.ConfigPath, config.RunModelName)); err != nil {
|
|
|
if config.RunModelErrAllow {
|
|
|
log.Println("环境配置文件读取错误,err:", err)
|
|
|
} else {
|
|
|
log.Fatal("环境配置文件读取错误,err:", err)
|
|
|
}
|
|
|
}
|
|
|
// 映射配置
|
|
|
if err := load.MapTo(Config); err != nil {
|
|
|
log.Fatal("配置文件映射错误,err:", err)
|
|
|
return
|
|
|
}
|
|
|
if Config.RunModel == "" {
|
|
|
Config.RunModel = config.RunModel
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// IsProd @Title 判断是否正式环境
|
|
|
func IsProd() bool {
|
|
|
return Config.RunModel == ConfigProd
|
|
|
}
|