daShangDao_kfz_goods_pricing/internal/config/config.go
97694732@qq.com e26d7a027e first commit
2026-06-11 16:06:08 +08:00

67 lines
1.6 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"` // 最低书价
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
}