feat(ik3cloud): 初始化项目基础配置与部门模块
- 添加 .gitignore 忽略规则 - 实现应用配置加载与管理逻辑 - 添加默认配置文件 app.ini - 配置 Gitea CI/CD 工作流用于构建和部署 - 实现金蝶云客户端初始化功能 - 添加 RPC 插件支持 Consul 注册中心 - 实现部门数据获取及树形结构处理逻辑 - 添加通用工具函数库 - 初始化 Go 模块依赖管理 - 创建 Dockerfile 用于服务容器化部署
This commit is contained in:
90
app/config/app.go
Normal file
90
app/config/app.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gopkg.in/ini.v1"
|
||||
)
|
||||
|
||||
var Config = &App{}
|
||||
|
||||
type App struct {
|
||||
iniLoader *ini.File
|
||||
initConfig *IniConfig
|
||||
Debug bool `ini:"debug"`
|
||||
Log Log `ini:"log"`
|
||||
Server Server `ini:"server"`
|
||||
Ik3cloud Ik3cloud `ini:"ik3cloud"`
|
||||
Page Page `ini:"page"`
|
||||
}
|
||||
type IniConfig struct {
|
||||
ConfigPath string
|
||||
ConfigName string
|
||||
RunModelName string
|
||||
RunModel string
|
||||
RunModelErrAllow bool // 允许不使用拓展配置文件
|
||||
}
|
||||
|
||||
// InitConfig @TITLE 初始化配置
|
||||
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)
|
||||
}
|
||||
}
|
||||
// 运行配置
|
||||
load.Append(filepath.Join(config.ConfigPath, "app.run.ini"))
|
||||
// 映射配置
|
||||
if err := load.MapTo(Config); err != nil {
|
||||
log.Fatal("配置文件映射错误,err:", err)
|
||||
return
|
||||
}
|
||||
Config.iniLoader = load
|
||||
Config.initConfig = config
|
||||
}
|
||||
|
||||
// SetConfig @Title 写入配置
|
||||
func (a *App) SetConfig(section, name, value string) error {
|
||||
runConfig := filepath.Join(Config.initConfig.ConfigPath, "app.run.ini")
|
||||
load, err := ini.LooseLoad(runConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
load.Section(section).Key(name).SetValue(value)
|
||||
load.SaveTo(runConfig)
|
||||
Config.iniLoader.Reload()
|
||||
Config.iniLoader.MapTo(Config)
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetRunModel @Title 获取RunModel
|
||||
func (a *App) GetRunModel() string {
|
||||
return a.initConfig.RunModel
|
||||
}
|
||||
Reference in New Issue
Block a user