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"` // 最低书价 QueryIndex int `yaml:"query_index"` // 想排第几位 } // 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 }