feat(ik3cloud): 初始化项目基础配置与部门模块

- 添加 .gitignore 忽略规则
- 实现应用配置加载与管理逻辑
- 添加默认配置文件 app.ini
- 配置 Gitea CI/CD 工作流用于构建和部署
- 实现金蝶云客户端初始化功能
- 添加 RPC 插件支持 Consul 注册中心
- 实现部门数据获取及树形结构处理逻辑
- 添加通用工具函数库
- 初始化 Go 模块依赖管理
- 创建 Dockerfile 用于服务容器化部署
This commit is contained in:
2025-11-19 14:05:23 +08:00
commit 9968887665
23 changed files with 2016 additions and 0 deletions

90
app/config/app.go Normal file
View 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
}