65 lines
2.4 KiB
Go
65 lines
2.4 KiB
Go
package config
|
||
|
||
import (
|
||
"flag"
|
||
"log"
|
||
"os"
|
||
"strconv"
|
||
)
|
||
|
||
type DatabaseConfig struct {
|
||
Host, Password, DBName, SSLMode, TimeZone string
|
||
Port int
|
||
User string
|
||
}
|
||
|
||
type ServiceURLs struct {
|
||
UserService string
|
||
}
|
||
|
||
type WorkerConfig struct {
|
||
ResetHour, ResetMinute int
|
||
RevenueBatchSize int
|
||
RevenueMaxRetries int
|
||
}
|
||
|
||
var (
|
||
DBConfig = &DatabaseConfig{}
|
||
ServiceURLsConfig = &ServiceURLs{UserService: "tri://localhost:20000"}
|
||
WorkerConfigData = &WorkerConfig{
|
||
ResetHour: 5, ResetMinute: 0,
|
||
RevenueBatchSize: 100, RevenueMaxRetries: 3,
|
||
}
|
||
)
|
||
|
||
func getEnv(key, fallback string) string {
|
||
if v := os.Getenv(key); v != "" { return v }
|
||
return fallback
|
||
}
|
||
|
||
func getEnvInt(key string, fallback int) int {
|
||
if v := os.Getenv(key); v != "" {
|
||
if n, err := strconv.Atoi(v); err == nil { return n }
|
||
}
|
||
return fallback
|
||
}
|
||
|
||
func InitConfig() {
|
||
flag.StringVar(&DBConfig.Host, "db-host", getEnv("DB_HOST", "localhost"), "数据库主机")
|
||
flag.IntVar(&DBConfig.Port, "db-port", getEnvInt("DB_PORT", 5432), "数据库端口")
|
||
flag.StringVar(&DBConfig.User, "db-user", getEnv("DB_USER", "postgres"), "数据库用户名")
|
||
flag.StringVar(&DBConfig.Password, "db-password", getEnv("DB_PASSWORD", ""), "数据库密码")
|
||
flag.StringVar(&DBConfig.DBName, "db-name", getEnv("DB_NAME", "topfans"), "数据库名称")
|
||
flag.StringVar(&DBConfig.SSLMode, "db-sslmode", "disable", "数据库 SSL 模式")
|
||
flag.StringVar(&ServiceURLsConfig.UserService, "user-service-url", getEnv("USER_SERVICE_URL", "tri://localhost:20000"), "User Service RPC 地址")
|
||
flag.IntVar(&WorkerConfigData.ResetHour, "reset-hour", getEnvInt("RESET_HOUR", 5), "每日重置小时(Asia/Shanghai)")
|
||
flag.IntVar(&WorkerConfigData.ResetMinute, "reset-minute", getEnvInt("RESET_MINUTE", 0), "每日重置分钟")
|
||
flag.IntVar(&WorkerConfigData.RevenueBatchSize, "revenue-batch-size", getEnvInt("REVENUE_BATCH_SIZE", 100), "收益自动发放批次大小")
|
||
flag.IntVar(&WorkerConfigData.RevenueMaxRetries, "revenue-max-retries", getEnvInt("REVENUE_MAX_RETRIES", 3), "收益自动发放最大重试次数")
|
||
flag.Parse()
|
||
log.Println("taskService 配置初始化完成")
|
||
log.Printf(" 数据库: %s:%d/%s", DBConfig.Host, DBConfig.Port, DBConfig.DBName)
|
||
log.Printf(" User Service: %s", ServiceURLsConfig.UserService)
|
||
log.Printf(" 重置时间: %02d:%02d Asia/Shanghai", WorkerConfigData.ResetHour, WorkerConfigData.ResetMinute)
|
||
}
|