Files
excel-api/config/config.go
2026-06-26 14:31:24 +08:00

94 lines
2.9 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 负责加载和管理应用程序配置
// 从 config.yaml 文件中读取配置,并提供全局访问接口
package config
import (
"os"
"gopkg.in/yaml.v2"
)
// Config 应用程序全局配置结构体
type Config struct {
Server ServerConfig `yaml:"server"` // 服务器配置
Database DatabaseConfig `yaml:"database"` // 数据库配置
Storage StorageConfig `yaml:"storage"` // 文件存储配置
}
// ServerConfig 服务器配置
type ServerConfig struct {
Port int `yaml:"port"` // API服务监听端口
WsPort int `yaml:"ws_port"` // WebSocket服务监听端口
}
// DatabaseConfig 数据库连接配置
type DatabaseConfig struct {
Host string `yaml:"host"` // 数据库主机地址
Port int `yaml:"port"` // 数据库端口
Username string `yaml:"username"` // 数据库用户名
Password string `yaml:"password"` // 数据库密码
DBName string `yaml:"dbname"` // 数据库名称
Charset string `yaml:"charset"` // 字符集
}
// StorageConfig 文件存储配置
type StorageConfig struct {
Type string `yaml:"type"` // 存储类型local/qiniu/tencent/aliyun
Local LocalConfig `yaml:"local"` // 本地存储配置
Qiniu CloudConfig `yaml:"qiniu"` // 七牛云配置
Tencent CloudConfig `yaml:"tencent"` // 腾讯云配置
Aliyun CloudConfig `yaml:"aliyun"` // 阿里云配置
}
// LocalConfig 本地存储配置
type LocalConfig struct {
Path string `yaml:"path"` // 本地文件存储目录
}
// CloudConfig 云存储通用配置
type CloudConfig struct {
AccessKey string `yaml:"access_key"` // 访问密钥ID
SecretKey string `yaml:"secret_key"` // 访问密钥Secret
Bucket string `yaml:"bucket"` // 存储桶名称
Domain string `yaml:"domain"` // 域名(七牛云)
Region string `yaml:"region"` // 区域(腾讯云)
SecretID string `yaml:"secret_id"` // SecretID腾讯云
AccessKeyID string `yaml:"access_key_id"` // AccessKeyID阿里云
AccessKeySecret string `yaml:"access_key_secret"` // AccessKeySecret阿里云
Endpoint string `yaml:"endpoint"` // Endpoint阿里云
}
// App 全局配置实例
var App *Config
// Init 从 config.yaml 文件加载配置到全局变量 App
// 如果文件不存在或读取失败,返回错误
func Init() error {
App = &Config{}
data, err := os.ReadFile("config.yaml")
if err != nil {
return err
}
err = yaml.Unmarshal(data, App)
if err != nil {
return err
}
// 设置默认值
if App.Server.Port == 0 {
App.Server.Port = 16702
}
if App.Server.WsPort == 0 {
App.Server.WsPort = 16703
}
if App.Database.Charset == "" {
App.Database.Charset = "utf8mb4"
}
if App.Storage.Type == "" {
App.Storage.Type = "local"
}
if App.Storage.Local.Path == "" {
App.Storage.Local.Path = "./uploads"
}
return nil
}