config.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package config
  2. import (
  3. "github.com/caarlos0/env/v9"
  4. "github.com/joho/godotenv" // 新增依赖
  5. )
  6. type Config struct {
  7. // 数据库配置
  8. DBHost string `env:"DB_HOST" envDefault:"localhost"`
  9. DBPort int `env:"DB_PORT" envDefault:"3306"`
  10. DBUser string `env:"DB_USER" envDefault:"root"`
  11. DBPassword string `env:"DB_PASSWORD" envDefault:"password"`
  12. DBName string `env:"DB_NAME" envDefault:"tasks"`
  13. DBMaxIdle int `env:"DB_MAX_IDLE" envDefault:"10"`
  14. DBMaxOpen int `env:"DB_MAX_OPEN" envDefault:"100"`
  15. DBMaxLifetime int `env:"DB_MAX_LIFETIME" envDefault:"30"`
  16. //服务器配置
  17. Concurrency int `env:"CONCURRENCY" envDefault:"20"`
  18. Interval string `env:"INTERVAL" envDefault:"10m"`
  19. MaxTaskBatch int `env:"MAX_TASK_BATCH" envDefault:"1000"`
  20. MaxTaskAge string `env:"MAX_TASK_AGE" envDefault:"24h"` // 支持time.ParseDuration格式
  21. // Redis配置
  22. RedisHost string `env:"REDIS_HOST" envDefault:"localhost"`
  23. RedisPort int `env:"REDIS_PORT" envDefault:"6379"`
  24. RedisPassword string `env:"REDIS_PASSWORD" envDefault:""`
  25. RedisDB int `env:"REDIS_DB" envDefault:"0"`
  26. IsSkipSSLVerify bool `env:"IS_SKIP_SSL_VERIFY" envDefault:"false"`
  27. //MongoDB配置
  28. MongoURI string `env:"MONGO_URI" envDefault:"mongodb://localhost:27017"`
  29. //日志配置
  30. LogLevel string `env:"LOG_LEVEL" envDefault:"info"`
  31. //业务配置
  32. HgApiUrl string `env:"HG_API_URL" envDefault:"https://partner.huoli.com"`
  33. ProxyUrl string `env:"PORXY_URL" envDefault:"127.0.0.1:1080"`
  34. PushUrl string `env:"POLICY_PUSH_URL" envDefault:"http://direct.ysjipiao.com:8686"`
  35. }
  36. func LoadConfig() (*Config, error) {
  37. // 加载.env文件
  38. _ = godotenv.Load() // 自动从项目根目录加载.env
  39. cfg := &Config{}
  40. if err := env.Parse(cfg); err != nil {
  41. return nil, err
  42. }
  43. return cfg, nil
  44. }