You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.2 KiB

8 months ago
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
}