daShangDao_psiWebApp/verifyTool/internal/config/config.go
97694731 44ba8a631c
Some checks failed
CI / build (20.x) (push) Waiting to run
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / deploy-preview (push) Blocked by required conditions
CI / security (push) Waiting to run
CI / build (18.x) (push) Has been cancelled
1
2026-06-15 18:09:39 +08:00

66 lines
1.5 KiB
Go

package config
import (
"os"
"sync"
"gopkg.in/yaml.v3"
)
// Config 配置结构
type Config struct {
Port string `yaml:"port"` // 端口号
TimerInterval int `yaml:"timer_interval"` // 定时任务间隔
APIRateLimit int `yaml:"api_rate_limit"` // API请求限制
CallbackURL string `yaml:"callback_url"` // 回调地址
NewPrice float64 `yaml:"new_price"` // 新价格
PlaceholderDownPrice float64 `yaml:"placeholder_down_price"` // 占位降价
MinShippingFee float64 `yaml:"min_shipping_fee"` // 最低运费
MinPrice float64 `yaml:"min_price"` // 最低书价
}
// Load 加载配置文件
func Load(path string) (*Config, error) {
data, err := os.ReadFile(path)
if err != nil {
return nil, err
}
var cfg Config
if err := yaml.Unmarshal(data, &cfg); err != nil {
return nil, err
}
return &cfg, nil
}
// Save 保存配置文件
func Save(path string, cfg *Config) error {
data, err := yaml.Marshal(cfg)
if err != nil {
return err
}
return os.WriteFile(path, data, 0644)
}
// GlobalConfig 全局配置
var (
_globalConfig *Config
_globalMu sync.RWMutex
)
// SetGlobal 设置全局配置
func SetGlobal(cfg *Config) {
_globalMu.Lock()
defer _globalMu.Unlock()
_globalConfig = cfg
}
// GetGlobal 获取全局配置
func GetGlobal() *Config {
_globalMu.RLock()
defer _globalMu.RUnlock()
return _globalConfig
}