Files
service/app/config/app.go
kanade 9968887665 feat(ik3cloud): 初始化项目基础配置与部门模块
- 添加 .gitignore 忽略规则
- 实现应用配置加载与管理逻辑
- 添加默认配置文件 app.ini
- 配置 Gitea CI/CD 工作流用于构建和部署
- 实现金蝶云客户端初始化功能
- 添加 RPC 插件支持 Consul 注册中心
- 实现部门数据获取及树形结构处理逻辑
- 添加通用工具函数库
- 初始化 Go 模块依赖管理
- 创建 Dockerfile 用于服务容器化部署
2025-11-19 14:05:23 +08:00

91 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}