765 lines
35 KiB
Go
765 lines
35 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
cpRelationBroadcastMQConsumerGroup = "cp-relation-broadcast"
|
|
cpRelationBroadcastMQTopic = "RC_DEFAULT_APP_ORDINARY"
|
|
cpRelationBroadcastMQTag = "cp_relation_broadcast"
|
|
)
|
|
|
|
// Config 是按运行层和业务模块分段后的应用配置。
|
|
type Config struct {
|
|
HTTP HTTPConfig
|
|
Store StoreConfig
|
|
Java JavaConfig
|
|
Worker WorkerConfig
|
|
Invite InviteConfig
|
|
RechargeReward RechargeRewardConfig
|
|
FirstRechargeReward FirstRechargeRewardConfig
|
|
TaskCenter TaskCenterConfig
|
|
WeekStar WeekStarConfig
|
|
RoomTurnoverReward RoomTurnoverRewardConfig
|
|
VoiceRoomRedPacket VoiceRoomRedPacketConfig
|
|
VoiceRoomRocket VoiceRoomRocketConfig
|
|
CPRelationBroadcast CPRelationBroadcastConfig
|
|
TencentIM TencentIMConfig
|
|
Baishun BaishunConfig
|
|
Lingxian LingxianConfig
|
|
Hotgame HotgameConfig
|
|
GameOpen GameOpenConfig
|
|
LuckyGift LuckyGiftConfig
|
|
BinanceRecharge BinanceRechargeConfig
|
|
}
|
|
|
|
// HTTPConfig 保存 HTTP 服务运行配置。
|
|
type HTTPConfig struct {
|
|
ListenAddr string
|
|
Timeout time.Duration
|
|
ShutdownTimeout time.Duration
|
|
InternalCallbackSecret string
|
|
}
|
|
|
|
// StoreConfig 保存 MySQL 和 Redis 连接配置。
|
|
type StoreConfig struct {
|
|
MySQLDSN string
|
|
RedisAddr string
|
|
RedisPassword string
|
|
RedisDB int
|
|
}
|
|
|
|
// JavaConfig 保存各类 Java 下游服务地址。
|
|
type JavaConfig struct {
|
|
AuthBaseURL string
|
|
ConsoleBaseURL string
|
|
DeviceBaseURL string
|
|
AppBaseURL string
|
|
BridgeBaseURL string
|
|
ExternalBaseURL string
|
|
OtherBaseURL string
|
|
OrderBaseURL string
|
|
WalletBaseURL string
|
|
}
|
|
|
|
// WorkerConfig 保存事件消费类 worker 的运行配置。
|
|
type WorkerConfig struct {
|
|
RegisterReward RegisterRewardWorkerConfig
|
|
}
|
|
|
|
// RegisterRewardWorkerConfig 保存注册奖励消费配置。
|
|
type RegisterRewardWorkerConfig struct {
|
|
StreamKey string
|
|
ConsumerGroup string
|
|
ConsumerName string
|
|
BatchSize int64
|
|
Block time.Duration
|
|
MinIdle time.Duration
|
|
}
|
|
|
|
// InviteConfig 保存邀请活动相关配置。
|
|
type InviteConfig struct {
|
|
PublicBaseURL string
|
|
PublicH5Path string
|
|
}
|
|
|
|
// RechargeRewardConfig 保存充值奖励活动配置。
|
|
type RechargeRewardConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
StorageTimezone string
|
|
StartDate string
|
|
CoinSellerGoldPerUSD int64
|
|
}
|
|
|
|
// FirstRechargeRewardConfig 保存首冲奖励模块配置。
|
|
type FirstRechargeRewardConfig struct {
|
|
DefaultSysOrigin string
|
|
MQ FirstRechargeRewardMQConfig
|
|
}
|
|
|
|
// FirstRechargeRewardMQConfig 保存首冲奖励订阅通用充值成功 MQ 的消费配置。
|
|
type FirstRechargeRewardMQConfig struct {
|
|
Enabled bool
|
|
Endpoint string
|
|
Namespace string
|
|
AccessKey string
|
|
AccessSecret string
|
|
SecurityToken string
|
|
ConsumerGroup string
|
|
Topic string
|
|
Tag string
|
|
}
|
|
|
|
// TaskCenterConfig 保存任务中心模块配置。
|
|
type TaskCenterConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
InternalEventTTL time.Duration
|
|
MQ TaskCenterMQConfig
|
|
Archive TaskCenterArchiveConfig
|
|
}
|
|
|
|
// TaskCenterMQConfig 保存任务中心事件 MQ 消费配置。
|
|
type TaskCenterMQConfig struct {
|
|
Enabled bool
|
|
Endpoint string
|
|
Namespace string
|
|
AccessKey string
|
|
AccessSecret string
|
|
SecurityToken string
|
|
ConsumerGroup string
|
|
Topic string
|
|
Tag string
|
|
}
|
|
|
|
// TaskCenterArchiveConfig 保存任务中心原始事件 COS 归档配置。
|
|
type TaskCenterArchiveConfig struct {
|
|
Enabled bool
|
|
Bucket string
|
|
Region string
|
|
SecretID string
|
|
SecretKey string
|
|
Prefix string
|
|
BatchSize int
|
|
FlushSeconds int
|
|
Workers int
|
|
}
|
|
|
|
// WeekStarConfig 保存周榜模块配置。
|
|
type WeekStarConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
RetryStreamKey string
|
|
RocketMQ WeekStarRocketMQConfig
|
|
}
|
|
|
|
// WeekStarRocketMQConfig 保存周榜 MQ 消费配置。
|
|
type WeekStarRocketMQConfig struct {
|
|
Enabled bool
|
|
Endpoint string
|
|
Namespace string
|
|
AccessKey string
|
|
AccessSecret string
|
|
SecurityToken string
|
|
ConsumerGroup string
|
|
Topic string
|
|
Tag string
|
|
}
|
|
|
|
// RoomTurnoverRewardConfig 保存房间流水奖励模块配置。
|
|
type RoomTurnoverRewardConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
CycleDuration time.Duration
|
|
}
|
|
|
|
// VoiceRoomRedPacketConfig 保存语音房红包 Go 侧运行配置。
|
|
type VoiceRoomRedPacketConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
PresenceTTLSeconds int
|
|
RefundScanIntervalSeconds int
|
|
RefundBatchSize int
|
|
NotifyStreamKey string
|
|
ExpireZSetKey string
|
|
}
|
|
|
|
// VoiceRoomRocketConfig 保存语音房火箭 Go 侧运行配置。
|
|
type VoiceRoomRocketConfig struct {
|
|
DefaultSysOrigin string
|
|
Timezone string
|
|
RewardRetryStreamKey string
|
|
InRoomRewardDueZSetKey string
|
|
RoomLockTTLSeconds int
|
|
BroadcastStreamKey string
|
|
BroadcastStreamMaxLen int64
|
|
InRoomRewardScanIntervalSeconds int
|
|
InRoomRewardBatchSize int
|
|
InRoomRewardUserLimit int
|
|
RewardGrantScanIntervalSeconds int
|
|
RewardGrantBatchSize int
|
|
MQ VoiceRoomRocketMQConfig
|
|
}
|
|
|
|
// VoiceRoomRocketMQConfig 保存语音房火箭送礼 MQ 消费配置。
|
|
type VoiceRoomRocketMQConfig struct {
|
|
Enabled bool
|
|
Endpoint string
|
|
Namespace string
|
|
AccessKey string
|
|
AccessSecret string
|
|
SecurityToken string
|
|
ConsumerGroup string
|
|
Topic string
|
|
Tag string
|
|
}
|
|
|
|
// CPRelationBroadcastConfig 保存 CP/兄弟/姐妹关系区域飘屏配置。
|
|
type CPRelationBroadcastConfig struct {
|
|
DefaultSysOrigin string
|
|
MQ CPRelationBroadcastMQConfig
|
|
}
|
|
|
|
// CPRelationBroadcastMQConfig 保存 CP 关系成功 MQ 消费配置。
|
|
type CPRelationBroadcastMQConfig struct {
|
|
Enabled bool
|
|
Endpoint string
|
|
Namespace string
|
|
AccessKey string
|
|
AccessSecret string
|
|
SecurityToken string
|
|
ConsumerGroup string
|
|
Topic string
|
|
Tag string
|
|
}
|
|
|
|
// TencentIMConfig 保存腾讯 IM REST API 配置。
|
|
type TencentIMConfig struct {
|
|
AppID int64
|
|
Key string
|
|
Identifier string
|
|
BaseEndpoint string
|
|
UserSigExpireSeconds int64
|
|
RequestTimeoutSeconds int
|
|
}
|
|
|
|
// BaishunConfig 保存百顺模块配置。
|
|
type BaishunConfig struct {
|
|
PlatformBaseURL string
|
|
GameListURL string
|
|
LuckyGiftURL string
|
|
AppID int64
|
|
AppName string
|
|
AppChannel string
|
|
AppKey string
|
|
GSP int
|
|
LaunchCodeTTLSeconds int
|
|
SSTokenTTLSeconds int
|
|
}
|
|
|
|
// LingxianConfig 保存灵仙模块配置。
|
|
type LingxianConfig struct {
|
|
GameListURL string
|
|
AppKey string
|
|
}
|
|
|
|
// HotgameConfig 保存热游模块的环境兜底配置。
|
|
type HotgameConfig struct {
|
|
AppKey string
|
|
CallbackBaseURL string
|
|
}
|
|
|
|
// GameOpenConfig 保存统一三方游戏回调配置。
|
|
type GameOpenConfig struct {
|
|
PublicBaseURL string
|
|
AppKey string
|
|
TestUserID int64
|
|
TestAccount string
|
|
TestPassword string
|
|
}
|
|
|
|
// LuckyGiftConfig 保存幸运礼物模块配置。
|
|
type LuckyGiftConfig struct {
|
|
Enabled bool
|
|
Timeout time.Duration
|
|
RewardStreamKey string
|
|
RewardStreamMaxLen int64
|
|
Providers []LuckyGiftProviderConfig
|
|
}
|
|
|
|
// BinanceRechargeConfig 保存币安自动充值验证的运行配置。
|
|
type BinanceRechargeConfig struct {
|
|
BaseURL string
|
|
}
|
|
|
|
type LuckyGiftProviderConfig struct {
|
|
StandardID int64 `json:"standardId"`
|
|
URL string `json:"url"`
|
|
AppID string `json:"appId"`
|
|
AppChannel string `json:"appChannel"`
|
|
AppKey string `json:"appKey"`
|
|
}
|
|
|
|
func Load() Config {
|
|
javaAppBaseURL := getEnvAny([]string{"CHATAPP_JAVA_APP_BASE_URL", "INVITE_JAVA_APP_BASE_URL"}, "http://127.0.0.1:2400")
|
|
consoleBaseURL := getEnvAny([]string{"CHATAPP_JAVA_CONSOLE_BASE_URL", "JAVA_CONSOLE_BASE_URL"}, "http://127.0.0.1:2700/console")
|
|
weekStarRocketMQEndpoint := getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_ENDPOINT", "WEEK_STAR_ROCKETMQ_ENDPOINT"}, "")
|
|
weekStarRocketMQAccessKey := getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_ACCESS_KEY", "WEEK_STAR_ROCKETMQ_ACCESS_KEY"}, "")
|
|
weekStarRocketMQAccessSecret := getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_ACCESS_SECRET", "WEEK_STAR_ROCKETMQ_ACCESS_SECRET"}, "")
|
|
weekStarRocketMQEnabledDefault := strings.TrimSpace(weekStarRocketMQEndpoint) != "" &&
|
|
strings.TrimSpace(weekStarRocketMQAccessKey) != "" &&
|
|
strings.TrimSpace(weekStarRocketMQAccessSecret) != ""
|
|
taskCenterMQEndpoint := getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_ENDPOINT", "TASK_CENTER_EVENT_MQ_ENDPOINT", "LIKEI_ROCKETMQ_ENDPOINT"}, "")
|
|
taskCenterMQAccessKey := getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_ACCESS_KEY", "TASK_CENTER_EVENT_MQ_ACCESS_KEY", "LIKEI_ROCKETMQ_ACCESS_KEY"}, "")
|
|
taskCenterMQAccessSecret := getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_ACCESS_SECRET", "TASK_CENTER_EVENT_MQ_SECRET_KEY", "LIKEI_ROCKETMQ_SECRET_KEY"}, "")
|
|
firstRechargeRewardMQEndpoint := getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_ENDPOINT", "FIRST_RECHARGE_REWARD_MQ_ENDPOINT", "CHATAPP_RECHARGE_SUCCESS_MQ_ENDPOINT", "RECHARGE_SUCCESS_MQ_ENDPOINT", "LIKEI_ROCKETMQ_ENDPOINT"}, "")
|
|
firstRechargeRewardMQAccessKey := getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_ACCESS_KEY", "FIRST_RECHARGE_REWARD_MQ_ACCESS_KEY", "CHATAPP_RECHARGE_SUCCESS_MQ_ACCESS_KEY", "RECHARGE_SUCCESS_MQ_ACCESS_KEY", "LIKEI_ROCKETMQ_ACCESS_KEY"}, "")
|
|
firstRechargeRewardMQAccessSecret := getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_ACCESS_SECRET", "FIRST_RECHARGE_REWARD_MQ_SECRET_KEY", "CHATAPP_RECHARGE_SUCCESS_MQ_ACCESS_SECRET", "RECHARGE_SUCCESS_MQ_SECRET_KEY", "LIKEI_ROCKETMQ_SECRET_KEY"}, "")
|
|
voiceRoomRocketMQEndpoint := getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_ENDPOINT", "LIKEI_ROCKETMQ_ENDPOINT"}, "")
|
|
voiceRoomRocketMQAccessKey := getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_ACCESS_KEY", "LIKEI_ROCKETMQ_ACCESS_KEY"}, "")
|
|
voiceRoomRocketMQAccessSecret := getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_ACCESS_SECRET", "LIKEI_ROCKETMQ_SECRET_KEY"}, "")
|
|
cpRelationBroadcastMQEndpoint := getEnvAny([]string{"LIKEI_ROCKETMQ_ENDPOINT", "CHATAPP_TASK_CENTER_MQ_ENDPOINT", "TASK_CENTER_EVENT_MQ_ENDPOINT"}, "")
|
|
cpRelationBroadcastMQAccessKey := getEnvAny([]string{"LIKEI_ROCKETMQ_ACCESS_KEY", "CHATAPP_TASK_CENTER_MQ_ACCESS_KEY", "TASK_CENTER_EVENT_MQ_ACCESS_KEY"}, "")
|
|
cpRelationBroadcastMQAccessSecret := getEnvAny([]string{"LIKEI_ROCKETMQ_SECRET_KEY", "CHATAPP_TASK_CENTER_MQ_ACCESS_SECRET", "TASK_CENTER_EVENT_MQ_SECRET_KEY"}, "")
|
|
cpRelationBroadcastMQEnabled := strings.TrimSpace(cpRelationBroadcastMQEndpoint) != "" &&
|
|
strings.TrimSpace(cpRelationBroadcastMQAccessKey) != "" &&
|
|
strings.TrimSpace(cpRelationBroadcastMQAccessSecret) != ""
|
|
|
|
return Config{
|
|
HTTP: HTTPConfig{
|
|
ListenAddr: getEnvAny([]string{"CHATAPP_HTTP_LISTEN_ADDR", "INVITE_HTTP_ADDR"}, ":2900"),
|
|
Timeout: time.Duration(getEnvIntAny([]string{"CHATAPP_HTTP_TIMEOUT_SECONDS", "INVITE_HTTP_TIMEOUT_SECONDS"}, 8)) * time.Second,
|
|
ShutdownTimeout: time.Duration(getEnvIntAny([]string{"CHATAPP_HTTP_SHUTDOWN_TIMEOUT_SECONDS", "INVITE_HTTP_SHUTDOWN_TIMEOUT_SECONDS"}, 30)) * time.Second,
|
|
InternalCallbackSecret: getEnvAny([]string{"CHATAPP_HTTP_INTERNAL_CALLBACK_SECRET", "GAME_INTERNAL_CALLBACK_SECRET"}, ""),
|
|
},
|
|
Store: StoreConfig{
|
|
MySQLDSN: getEnvAny([]string{"CHATAPP_STORE_MYSQL_DSN", "INVITE_MYSQL_DSN"}, "root:root@tcp(127.0.0.1:3306)/chatapp3?charset=utf8mb4&parseTime=True&loc=Local"),
|
|
RedisAddr: getEnvAny([]string{"CHATAPP_STORE_REDIS_ADDR", "INVITE_REDIS_ADDR"}, "127.0.0.1:6379"),
|
|
RedisPassword: getEnvAny([]string{"CHATAPP_STORE_REDIS_PASSWORD", "INVITE_REDIS_PASSWORD"}, ""),
|
|
RedisDB: getEnvIntAny([]string{"CHATAPP_STORE_REDIS_DB", "INVITE_REDIS_DB"}, 0),
|
|
},
|
|
Java: JavaConfig{
|
|
AuthBaseURL: getEnvAny([]string{"CHATAPP_JAVA_AUTH_BASE_URL", "INVITE_JAVA_AUTH_BASE_URL"}, "http://127.0.0.1:2100"),
|
|
ConsoleBaseURL: consoleBaseURL,
|
|
DeviceBaseURL: getEnvAny([]string{"CHATAPP_JAVA_DEVICE_BASE_URL", "INVITE_JAVA_DEVICE_BASE_URL"}, "http://127.0.0.1:2400"),
|
|
AppBaseURL: javaAppBaseURL,
|
|
BridgeBaseURL: getEnvAny([]string{"CHATAPP_JAVA_BRIDGE_BASE_URL", "INVITE_JAVA_BRIDGE_BASE_URL"}, consoleBaseURL),
|
|
ExternalBaseURL: getEnvAny([]string{"CHATAPP_JAVA_EXTERNAL_BASE_URL", "INVITE_JAVA_EXTERNAL_BASE_URL"}, "http://127.0.0.1:3000"),
|
|
OtherBaseURL: getEnvAny([]string{"CHATAPP_JAVA_OTHER_BASE_URL", "GAME_JAVA_OTHER_BASE_URL", "INVITE_JAVA_APP_BASE_URL"}, javaAppBaseURL),
|
|
OrderBaseURL: getEnvAny([]string{"CHATAPP_JAVA_ORDER_BASE_URL", "GAME_JAVA_ORDER_BASE_URL", "LIKEI_GATEWAY_ROUTE_ORDER_URI"}, "http://127.0.0.1:2600"),
|
|
WalletBaseURL: getEnvAny([]string{"CHATAPP_JAVA_WALLET_BASE_URL", "GAME_JAVA_WALLET_BASE_URL"}, "http://127.0.0.1:2300"),
|
|
},
|
|
Worker: WorkerConfig{
|
|
RegisterReward: RegisterRewardWorkerConfig{
|
|
StreamKey: getEnvAny([]string{"CHATAPP_REGISTER_REWARD_STREAM_KEY", "REGISTER_REWARD_STREAM_KEY"}, "activity:register:reward"),
|
|
ConsumerGroup: getEnvAny([]string{"CHATAPP_REGISTER_REWARD_CONSUMER_GROUP", "REGISTER_REWARD_CONSUMER_GROUP"}, "register-reward"),
|
|
ConsumerName: getEnvAny([]string{"CHATAPP_REGISTER_REWARD_CONSUMER_NAME", "REGISTER_REWARD_CONSUMER_NAME"}, defaultConsumerName("register-reward")),
|
|
BatchSize: int64(getEnvIntAny([]string{"CHATAPP_REGISTER_REWARD_BATCH_SIZE", "REGISTER_REWARD_BATCH_SIZE"}, 10)),
|
|
Block: time.Duration(getEnvIntAny([]string{"CHATAPP_REGISTER_REWARD_BLOCK_MILLIS", "REGISTER_REWARD_BLOCK_MILLIS"}, 5000)) * time.Millisecond,
|
|
MinIdle: time.Duration(getEnvIntAny([]string{"CHATAPP_REGISTER_REWARD_MIN_IDLE_MILLIS", "REGISTER_REWARD_MIN_IDLE_MILLIS"}, 60000)) * time.Millisecond,
|
|
},
|
|
},
|
|
Invite: InviteConfig{
|
|
PublicBaseURL: getEnvAny([]string{"CHATAPP_INVITE_PUBLIC_BASE_URL", "INVITE_PUBLIC_BASE_URL"}, "http://localhost:2900"),
|
|
PublicH5Path: getEnvAny([]string{"CHATAPP_INVITE_PUBLIC_H5_PATH", "INVITE_PUBLIC_H5_PATH"}, "/h5/app-invite/landing.html"),
|
|
},
|
|
RechargeReward: RechargeRewardConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
Timezone: getEnvAny(
|
|
[]string{"CHATAPP_RECHARGE_REWARD_TIMEZONE", "RECHARGE_REWARD_TIMEZONE", "CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"},
|
|
"Asia/Riyadh",
|
|
),
|
|
StorageTimezone: getEnvAny(
|
|
[]string{"CHATAPP_RECHARGE_REWARD_STORAGE_TIMEZONE", "RECHARGE_REWARD_STORAGE_TIMEZONE"},
|
|
"Asia/Shanghai",
|
|
),
|
|
StartDate: getEnvAny(
|
|
[]string{"CHATAPP_RECHARGE_REWARD_START_DATE", "RECHARGE_REWARD_START_DATE"},
|
|
"2026-05-21",
|
|
),
|
|
CoinSellerGoldPerUSD: int64(getEnvIntAny(
|
|
[]string{"CHATAPP_RECHARGE_REWARD_COIN_SELLER_GOLD_PER_USD", "RECHARGE_REWARD_COIN_SELLER_GOLD_PER_USD"},
|
|
100000,
|
|
)),
|
|
},
|
|
FirstRechargeReward: FirstRechargeRewardConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_FIRST_RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "FIRST_RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "CHATAPP_RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "RECHARGE_REWARD_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
MQ: FirstRechargeRewardMQConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_ENABLED", "FIRST_RECHARGE_REWARD_MQ_ENABLED", "CHATAPP_RECHARGE_SUCCESS_MQ_ENABLED", "RECHARGE_SUCCESS_MQ_ENABLED"}, false),
|
|
Endpoint: firstRechargeRewardMQEndpoint,
|
|
Namespace: getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_NAMESPACE", "FIRST_RECHARGE_REWARD_MQ_NAMESPACE", "CHATAPP_RECHARGE_SUCCESS_MQ_NAMESPACE", "RECHARGE_SUCCESS_MQ_NAMESPACE"}, ""),
|
|
AccessKey: firstRechargeRewardMQAccessKey,
|
|
AccessSecret: firstRechargeRewardMQAccessSecret,
|
|
SecurityToken: getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_SECURITY_TOKEN", "FIRST_RECHARGE_REWARD_MQ_SECURITY_TOKEN", "CHATAPP_RECHARGE_SUCCESS_MQ_SECURITY_TOKEN", "RECHARGE_SUCCESS_MQ_SECURITY_TOKEN"}, ""),
|
|
ConsumerGroup: getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_CONSUMER_GROUP", "FIRST_RECHARGE_REWARD_MQ_CONSUMER_GROUP"}, "first-recharge-reward"),
|
|
Topic: getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_TOPIC", "FIRST_RECHARGE_REWARD_MQ_TOPIC", "CHATAPP_RECHARGE_SUCCESS_MQ_TOPIC", "RECHARGE_SUCCESS_MQ_TOPIC"}, "RC_DEFAULT_APP_ORDINARY"),
|
|
Tag: getEnvAny([]string{"CHATAPP_FIRST_RECHARGE_REWARD_MQ_TAG", "FIRST_RECHARGE_REWARD_MQ_TAG", "CHATAPP_RECHARGE_SUCCESS_MQ_TAG", "RECHARGE_SUCCESS_MQ_TAG"}, "recharge_success_v1"),
|
|
},
|
|
},
|
|
TaskCenter: TaskCenterConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_TASK_CENTER_DEFAULT_SYS_ORIGIN", "TASK_CENTER_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
Timezone: getEnvAny(
|
|
[]string{"CHATAPP_TASK_CENTER_TIMEZONE", "TASK_CENTER_TIMEZONE", "CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"},
|
|
"Asia/Riyadh",
|
|
),
|
|
InternalEventTTL: time.Duration(getEnvIntAny(
|
|
[]string{"CHATAPP_TASK_CENTER_EVENT_TTL_HOURS", "TASK_CENTER_EVENT_TTL_HOURS"},
|
|
72,
|
|
)) * time.Hour,
|
|
MQ: TaskCenterMQConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_TASK_CENTER_MQ_ENABLED", "TASK_CENTER_EVENT_MQ_ENABLED"}, false),
|
|
Endpoint: taskCenterMQEndpoint,
|
|
Namespace: getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_NAMESPACE", "TASK_CENTER_EVENT_MQ_NAMESPACE"}, ""),
|
|
AccessKey: taskCenterMQAccessKey,
|
|
AccessSecret: taskCenterMQAccessSecret,
|
|
SecurityToken: getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_SECURITY_TOKEN", "TASK_CENTER_EVENT_MQ_SECURITY_TOKEN"}, ""),
|
|
ConsumerGroup: getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_CONSUMER_GROUP", "TASK_CENTER_EVENT_MQ_CONSUMER_GROUP"}, "task-center-progress"),
|
|
Topic: getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_TOPIC", "TASK_CENTER_EVENT_MQ_TOPIC"}, "RC_DEFAULT_APP_ORDINARY"),
|
|
Tag: getEnvAny([]string{"CHATAPP_TASK_CENTER_MQ_TAG", "TASK_CENTER_EVENT_MQ_TAG"}, "task_center_event"),
|
|
},
|
|
Archive: TaskCenterArchiveConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_ENABLED", "TASK_CENTER_ARCHIVE_ENABLED"}, false),
|
|
Bucket: getEnvAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_COS_BUCKET", "TASK_CENTER_ARCHIVE_COS_BUCKET", "LIKEI_TENCENT_COS_BUCKET"}, ""),
|
|
Region: getEnvAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_COS_REGION", "TASK_CENTER_ARCHIVE_COS_REGION", "LIKEI_TENCENT_COS_REGION"}, ""),
|
|
SecretID: getEnvAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_COS_SECRET_ID", "TASK_CENTER_ARCHIVE_COS_SECRET_ID", "LIKEI_TENCENT_COS_SECRET_ID"}, ""),
|
|
SecretKey: getEnvAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_COS_SECRET_KEY", "TASK_CENTER_ARCHIVE_COS_SECRET_KEY", "LIKEI_TENCENT_COS_SECRET_KEY"}, ""),
|
|
Prefix: getEnvAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_COS_PREFIX", "TASK_CENTER_ARCHIVE_COS_PREFIX"}, "task-center-events/v1"),
|
|
BatchSize: getEnvIntAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_BATCH_SIZE", "TASK_CENTER_ARCHIVE_BATCH_SIZE"}, 500),
|
|
FlushSeconds: getEnvIntAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_FLUSH_SECONDS", "TASK_CENTER_ARCHIVE_FLUSH_SECONDS"}, 60),
|
|
Workers: getEnvIntAny([]string{"CHATAPP_TASK_CENTER_ARCHIVE_WORKERS", "TASK_CENTER_ARCHIVE_WORKERS"}, 2),
|
|
},
|
|
},
|
|
WeekStar: WeekStarConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny([]string{"CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"}, "LIKEI")),
|
|
Timezone: getEnvAny([]string{"CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"}, "Asia/Riyadh"),
|
|
RetryStreamKey: getEnvAny([]string{"CHATAPP_WEEK_STAR_RETRY_STREAM_KEY", "WEEK_STAR_RETRY_STREAM_KEY"}, "week-star:reward-retry"),
|
|
RocketMQ: WeekStarRocketMQConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_ENABLED", "WEEK_STAR_ROCKETMQ_ENABLED"}, weekStarRocketMQEnabledDefault),
|
|
Endpoint: weekStarRocketMQEndpoint,
|
|
Namespace: getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_NAMESPACE", "WEEK_STAR_ROCKETMQ_NAMESPACE"}, ""),
|
|
AccessKey: weekStarRocketMQAccessKey,
|
|
AccessSecret: weekStarRocketMQAccessSecret,
|
|
SecurityToken: getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_SECURITY_TOKEN", "WEEK_STAR_ROCKETMQ_SECURITY_TOKEN"}, ""),
|
|
ConsumerGroup: getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_CONSUMER_GROUP", "WEEK_STAR_ROCKETMQ_CONSUMER_GROUP"}, "week-star-activity"),
|
|
Topic: getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_TOPIC", "WEEK_STAR_ROCKETMQ_TOPIC"}, "RC_DEFAULT_APP_ORDINARY"),
|
|
Tag: getEnvAny([]string{"CHATAPP_WEEK_STAR_ROCKETMQ_TAG", "WEEK_STAR_ROCKETMQ_TAG"}, "give_gift_v3"),
|
|
},
|
|
},
|
|
RoomTurnoverReward: RoomTurnoverRewardConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_ROOM_TURNOVER_REWARD_DEFAULT_SYS_ORIGIN", "ROOM_TURNOVER_REWARD_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
Timezone: getEnvAny(
|
|
[]string{"CHATAPP_ROOM_TURNOVER_REWARD_TIMEZONE", "ROOM_TURNOVER_REWARD_TIMEZONE", "CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"},
|
|
"Asia/Riyadh",
|
|
),
|
|
CycleDuration: time.Duration(getEnvIntAny(
|
|
[]string{"CHATAPP_ROOM_TURNOVER_REWARD_CYCLE_SECONDS", "ROOM_TURNOVER_REWARD_CYCLE_SECONDS"},
|
|
10,
|
|
)) * time.Second,
|
|
},
|
|
VoiceRoomRedPacket: VoiceRoomRedPacketConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_DEFAULT_SYS_ORIGIN", "VOICE_ROOM_RED_PACKET_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
Timezone: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_TIMEZONE", "VOICE_ROOM_RED_PACKET_TIMEZONE", "CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"},
|
|
"Asia/Riyadh",
|
|
),
|
|
PresenceTTLSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_PRESENCE_TTL_SECONDS", "VOICE_ROOM_RED_PACKET_PRESENCE_TTL_SECONDS"},
|
|
60,
|
|
),
|
|
RefundScanIntervalSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_REFUND_SCAN_INTERVAL_SECONDS", "VOICE_ROOM_RED_PACKET_REFUND_SCAN_INTERVAL_SECONDS"},
|
|
10,
|
|
),
|
|
RefundBatchSize: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_REFUND_BATCH_SIZE", "VOICE_ROOM_RED_PACKET_REFUND_BATCH_SIZE"},
|
|
100,
|
|
),
|
|
NotifyStreamKey: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_NOTIFY_STREAM_KEY", "VOICE_ROOM_RED_PACKET_NOTIFY_STREAM_KEY"},
|
|
"voice_room:red_packet:notify",
|
|
),
|
|
ExpireZSetKey: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_RED_PACKET_EXPIRE_ZSET_KEY", "VOICE_ROOM_RED_PACKET_EXPIRE_ZSET_KEY"},
|
|
"voice_room:red_packet:expire_zset",
|
|
),
|
|
},
|
|
VoiceRoomRocket: VoiceRoomRocketConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_DEFAULT_SYS_ORIGIN", "VOICE_ROOM_ROCKET_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
Timezone: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_TIMEZONE", "VOICE_ROOM_ROCKET_TIMEZONE", "CHATAPP_WEEK_STAR_TIMEZONE", "WEEK_STAR_TIMEZONE"},
|
|
"Asia/Riyadh",
|
|
),
|
|
RewardRetryStreamKey: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_REWARD_RETRY_STREAM_KEY", "VOICE_ROOM_ROCKET_REWARD_RETRY_STREAM_KEY"},
|
|
"voice_room:rocket:reward_retry",
|
|
),
|
|
InRoomRewardDueZSetKey: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_IN_ROOM_DUE_ZSET_KEY", "VOICE_ROOM_ROCKET_IN_ROOM_DUE_ZSET_KEY"},
|
|
"voice_room:rocket:in_room_due",
|
|
),
|
|
RoomLockTTLSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_ROOM_LOCK_TTL_SECONDS", "VOICE_ROOM_ROCKET_ROOM_LOCK_TTL_SECONDS"},
|
|
10,
|
|
),
|
|
BroadcastStreamKey: getEnvAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_BROADCAST_STREAM_KEY", "VOICE_ROOM_ROCKET_BROADCAST_STREAM_KEY"},
|
|
"voice_room:rocket:broadcast",
|
|
),
|
|
BroadcastStreamMaxLen: int64(getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_BROADCAST_STREAM_MAX_LEN", "VOICE_ROOM_ROCKET_BROADCAST_STREAM_MAX_LEN"},
|
|
10000,
|
|
)),
|
|
InRoomRewardScanIntervalSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_IN_ROOM_SCAN_INTERVAL_SECONDS", "VOICE_ROOM_ROCKET_IN_ROOM_SCAN_INTERVAL_SECONDS"},
|
|
1,
|
|
),
|
|
InRoomRewardBatchSize: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_IN_ROOM_BATCH_SIZE", "VOICE_ROOM_ROCKET_IN_ROOM_BATCH_SIZE"},
|
|
100,
|
|
),
|
|
InRoomRewardUserLimit: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_IN_ROOM_USER_LIMIT", "VOICE_ROOM_ROCKET_IN_ROOM_USER_LIMIT"},
|
|
3,
|
|
),
|
|
RewardGrantScanIntervalSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_REWARD_GRANT_SCAN_INTERVAL_SECONDS", "VOICE_ROOM_ROCKET_REWARD_GRANT_SCAN_INTERVAL_SECONDS"},
|
|
1,
|
|
),
|
|
RewardGrantBatchSize: getEnvIntAny(
|
|
[]string{"CHATAPP_VOICE_ROOM_ROCKET_REWARD_GRANT_BATCH_SIZE", "VOICE_ROOM_ROCKET_REWARD_GRANT_BATCH_SIZE"},
|
|
100,
|
|
),
|
|
MQ: VoiceRoomRocketMQConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_ENABLED", "VOICE_ROOM_ROCKET_MQ_ENABLED"}, false),
|
|
Endpoint: voiceRoomRocketMQEndpoint,
|
|
Namespace: getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_NAMESPACE", "VOICE_ROOM_ROCKET_MQ_NAMESPACE"}, ""),
|
|
AccessKey: voiceRoomRocketMQAccessKey,
|
|
AccessSecret: voiceRoomRocketMQAccessSecret,
|
|
SecurityToken: getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_SECURITY_TOKEN", "VOICE_ROOM_ROCKET_MQ_SECURITY_TOKEN"}, ""),
|
|
ConsumerGroup: getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_CONSUMER_GROUP", "VOICE_ROOM_ROCKET_MQ_CONSUMER_GROUP"}, "voice-room-rocket"),
|
|
Topic: getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_TOPIC", "VOICE_ROOM_ROCKET_MQ_TOPIC"}, "RC_DEFAULT_APP_ORDINARY"),
|
|
Tag: getEnvAny([]string{"CHATAPP_VOICE_ROOM_ROCKET_MQ_TAG", "VOICE_ROOM_ROCKET_MQ_TAG"}, "give_gift_v3"),
|
|
},
|
|
},
|
|
CPRelationBroadcast: CPRelationBroadcastConfig{
|
|
DefaultSysOrigin: strings.ToUpper(getEnvAny(
|
|
[]string{"CHATAPP_CP_RELATION_BROADCAST_DEFAULT_SYS_ORIGIN", "CP_RELATION_BROADCAST_DEFAULT_SYS_ORIGIN", "CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "WEEK_STAR_DEFAULT_SYS_ORIGIN"},
|
|
"LIKEI",
|
|
)),
|
|
MQ: CPRelationBroadcastMQConfig{
|
|
Enabled: cpRelationBroadcastMQEnabled,
|
|
Endpoint: cpRelationBroadcastMQEndpoint,
|
|
Namespace: "",
|
|
AccessKey: cpRelationBroadcastMQAccessKey,
|
|
AccessSecret: cpRelationBroadcastMQAccessSecret,
|
|
SecurityToken: "",
|
|
ConsumerGroup: cpRelationBroadcastMQConsumerGroup,
|
|
Topic: cpRelationBroadcastMQTopic,
|
|
Tag: cpRelationBroadcastMQTag,
|
|
},
|
|
},
|
|
TencentIM: TencentIMConfig{
|
|
AppID: getEnvInt64Any(
|
|
[]string{"CHATAPP_TENCENT_IM_APP_ID", "TENCENT_IM_APP_ID", "LIKEI_IM_APP_ID"},
|
|
0,
|
|
),
|
|
Key: getEnvAny(
|
|
[]string{"CHATAPP_TENCENT_IM_KEY", "TENCENT_IM_KEY", "LIKEI_IM_KEY"},
|
|
"",
|
|
),
|
|
Identifier: getEnvAny(
|
|
[]string{"CHATAPP_TENCENT_IM_IDENTIFIER", "TENCENT_IM_IDENTIFIER", "LIKEI_IM_IDENTIFIER"},
|
|
"administrator",
|
|
),
|
|
BaseEndpoint: getEnvAny(
|
|
[]string{"CHATAPP_TENCENT_IM_BASE_ENDPOINT", "TENCENT_IM_BASE_ENDPOINT", "LIKEI_IM_BASE_ENDPOINT"},
|
|
"https://console.tim.qq.com",
|
|
),
|
|
UserSigExpireSeconds: getEnvInt64Any(
|
|
[]string{"CHATAPP_TENCENT_IM_USERSIG_EXPIRE_SECONDS", "TENCENT_IM_USERSIG_EXPIRE_SECONDS"},
|
|
7200000,
|
|
),
|
|
RequestTimeoutSeconds: getEnvIntAny(
|
|
[]string{"CHATAPP_TENCENT_IM_REQUEST_TIMEOUT_SECONDS", "TENCENT_IM_REQUEST_TIMEOUT_SECONDS"},
|
|
8,
|
|
),
|
|
},
|
|
Baishun: BaishunConfig{
|
|
PlatformBaseURL: getEnvAny([]string{"CHATAPP_BAISHUN_PLATFORM_BASE_URL", "BAISHUN_PLATFORM_BASE_URL"}, ""),
|
|
GameListURL: getEnvAny([]string{"CHATAPP_BAISHUN_GAME_LIST_URL", "BAISHUN_GAME_LIST_URL"}, ""),
|
|
LuckyGiftURL: getEnvAny([]string{"CHATAPP_BAISHUN_LUCKY_GIFT_URL", "BAISHUN_LUCKY_GIFT_URL"}, ""),
|
|
AppID: getEnvInt64Any([]string{"CHATAPP_BAISHUN_APP_ID", "BAISHUN_APP_ID"}, 0),
|
|
AppName: getEnvAny([]string{"CHATAPP_BAISHUN_APP_NAME", "BAISHUN_APP_NAME"}, ""),
|
|
AppChannel: getEnvAny([]string{"CHATAPP_BAISHUN_APP_CHANNEL", "BAISHUN_APP_CHANNEL"}, ""),
|
|
AppKey: getEnvAny([]string{"CHATAPP_BAISHUN_APP_KEY", "BAISHUN_APP_KEY"}, ""),
|
|
GSP: getEnvIntAny([]string{"CHATAPP_BAISHUN_GSP", "BAISHUN_GSP"}, 101),
|
|
LaunchCodeTTLSeconds: getEnvIntAny([]string{"CHATAPP_BAISHUN_LAUNCH_CODE_TTL_SECONDS", "BAISHUN_LAUNCH_CODE_TTL_SECONDS"}, 300),
|
|
SSTokenTTLSeconds: getEnvIntAny([]string{"CHATAPP_BAISHUN_SS_TOKEN_TTL_SECONDS", "BAISHUN_SS_TOKEN_TTL_SECONDS"}, 86400),
|
|
},
|
|
Lingxian: LingxianConfig{
|
|
GameListURL: getEnvAny([]string{"CHATAPP_LINGXIAN_GAME_LIST_URL", "LINGXIAN_GAME_LIST_URL"}, "https://sg-test.leadercc.com/yumichat_games/test_game_list.json"),
|
|
AppKey: getEnvAny([]string{"CHATAPP_LINGXIAN_APP_KEY", "LINGXIAN_APP_KEY", "GAME_HKYS_SIGN_KEY", "LIKEI_GAME_HKYS_SIGN_KEY"}, ""),
|
|
},
|
|
Hotgame: HotgameConfig{
|
|
AppKey: getEnvAny([]string{"CHATAPP_HOTGAME_APP_KEY", "HOTGAME_APP_KEY", "CHATAPP_REYOU_APP_KEY", "REYOU_APP_KEY"}, ""),
|
|
CallbackBaseURL: getEnvAny([]string{"CHATAPP_HOTGAME_CALLBACK_BASE_URL", "HOTGAME_CALLBACK_BASE_URL", "CHATAPP_REYOU_CALLBACK_BASE_URL", "REYOU_CALLBACK_BASE_URL"}, ""),
|
|
},
|
|
GameOpen: GameOpenConfig{
|
|
PublicBaseURL: getEnvAny([]string{"CHATAPP_GAME_OPEN_PUBLIC_BASE_URL", "GAME_OPEN_PUBLIC_BASE_URL"}, ""),
|
|
AppKey: getEnvAny([]string{"CHATAPP_GAME_OPEN_APP_KEY", "GAME_OPEN_APP_KEY"}, "game-open-test-key"),
|
|
TestUserID: getEnvInt64Any([]string{"CHATAPP_GAME_OPEN_TEST_USER_ID", "GAME_OPEN_TEST_USER_ID"}, 1234567),
|
|
TestAccount: getEnvAny([]string{"CHATAPP_GAME_OPEN_TEST_ACCOUNT", "GAME_OPEN_TEST_ACCOUNT"}, "1234567"),
|
|
TestPassword: getEnvAny([]string{"CHATAPP_GAME_OPEN_TEST_PASSWORD", "GAME_OPEN_TEST_PASSWORD"}, "1234567"),
|
|
},
|
|
LuckyGift: LuckyGiftConfig{
|
|
Enabled: getEnvBoolAny([]string{"CHATAPP_LUCKY_GIFT_ENABLED", "LUCKY_GIFT_ENABLED", "LUCKY_GIFT_GO_ENABLED"}, false),
|
|
Timeout: time.Duration(getEnvIntAny([]string{"CHATAPP_LUCKY_GIFT_TIMEOUT_MILLIS", "LUCKY_GIFT_TIMEOUT_MILLIS", "LUCKY_GIFT_GO_TIMEOUT_MILLIS"}, 8000)) * time.Millisecond,
|
|
RewardStreamKey: getEnvAny([]string{"CHATAPP_LUCKY_GIFT_REWARD_STREAM_KEY", "LUCKY_GIFT_REWARD_STREAM_KEY"}, "lucky-gift:reward"),
|
|
RewardStreamMaxLen: int64(getEnvIntAny([]string{"CHATAPP_LUCKY_GIFT_REWARD_STREAM_MAX_LEN", "LUCKY_GIFT_REWARD_STREAM_MAX_LEN"}, 100000)),
|
|
Providers: loadLuckyGiftConfigs(),
|
|
},
|
|
BinanceRecharge: BinanceRechargeConfig{
|
|
BaseURL: getEnvAny([]string{"CHATAPP_BINANCE_RECHARGE_BASE_URL", "BINANCE_RECHARGE_BASE_URL"}, "https://api.binance.com"),
|
|
},
|
|
}
|
|
}
|
|
|
|
func getEnvAny(keys []string, fallback string) string {
|
|
for _, key := range keys {
|
|
if value := os.Getenv(strings.TrimSpace(key)); value != "" {
|
|
return value
|
|
}
|
|
}
|
|
return fallback
|
|
}
|
|
|
|
func getEnvIntAny(keys []string, fallback int) int {
|
|
value := getEnvAny(keys, "")
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
parsed, err := strconv.Atoi(value)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return parsed
|
|
}
|
|
|
|
func getEnvInt64Any(keys []string, fallback int64) int64 {
|
|
value := getEnvAny(keys, "")
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
parsed, err := strconv.ParseInt(value, 10, 64)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return parsed
|
|
}
|
|
|
|
func getEnvBoolAny(keys []string, fallback bool) bool {
|
|
value := getEnvAny(keys, "")
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
parsed, err := strconv.ParseBool(value)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return parsed
|
|
}
|
|
|
|
func defaultConsumerName(prefix string) string {
|
|
host, err := os.Hostname()
|
|
if err != nil {
|
|
return prefix
|
|
}
|
|
host = strings.TrimSpace(host)
|
|
if host == "" {
|
|
return prefix
|
|
}
|
|
return prefix + "-" + host
|
|
}
|
|
|
|
func loadLuckyGiftConfigs() []LuckyGiftProviderConfig {
|
|
raw := strings.TrimSpace(getEnvAny([]string{"CHATAPP_LUCKY_GIFT_CONFIGS_JSON", "LUCKY_GIFT_CONFIGS_JSON", "LUCKY_GIFT_CONFIGS"}, ""))
|
|
sharedBaishunAppID := strings.TrimSpace(getEnvAny([]string{"CHATAPP_BAISHUN_APP_ID", "BAISHUN_APP_ID"}, ""))
|
|
sharedBaishunAppChannel := strings.TrimSpace(getEnvAny([]string{"CHATAPP_BAISHUN_APP_CHANNEL", "BAISHUN_APP_CHANNEL"}, ""))
|
|
sharedBaishunAppKey := strings.TrimSpace(getEnvAny([]string{"CHATAPP_BAISHUN_APP_KEY", "BAISHUN_APP_KEY"}, ""))
|
|
if raw != "" {
|
|
var list []LuckyGiftProviderConfig
|
|
if err := json.Unmarshal([]byte(raw), &list); err == nil {
|
|
return normalizeLuckyGiftConfigs(list, sharedBaishunAppID, sharedBaishunAppChannel, sharedBaishunAppKey)
|
|
}
|
|
var single LuckyGiftProviderConfig
|
|
if err := json.Unmarshal([]byte(raw), &single); err == nil {
|
|
return normalizeLuckyGiftConfigs([]LuckyGiftProviderConfig{single}, sharedBaishunAppID, sharedBaishunAppChannel, sharedBaishunAppKey)
|
|
}
|
|
}
|
|
|
|
single := LuckyGiftProviderConfig{
|
|
StandardID: getEnvInt64Any([]string{"CHATAPP_LUCKY_GIFT_STANDARD_ID", "LUCKY_GIFT_STANDARD_ID"}, 0),
|
|
URL: getEnvAny([]string{"CHATAPP_LUCKY_GIFT_URL", "LUCKY_GIFT_URL", "LUCKY_GIFT_API_DEFAULT_URL"}, ""),
|
|
AppID: getEnvAny([]string{"CHATAPP_LUCKY_GIFT_APP_ID", "LUCKY_GIFT_APP_ID", "LUCKY_GIFT_API_DEFAULT_APP_ID"}, sharedBaishunAppID),
|
|
AppChannel: getEnvAny([]string{"CHATAPP_LUCKY_GIFT_APP_CHANNEL", "LUCKY_GIFT_APP_CHANNEL", "LUCKY_GIFT_API_DEFAULT_APP_CHANNEL"}, sharedBaishunAppChannel),
|
|
AppKey: getEnvAny([]string{"CHATAPP_LUCKY_GIFT_APP_KEY", "LUCKY_GIFT_APP_KEY", "LUCKY_GIFT_API_DEFAULT_APP_KEY"}, sharedBaishunAppKey),
|
|
}
|
|
return normalizeLuckyGiftConfigs([]LuckyGiftProviderConfig{single}, sharedBaishunAppID, sharedBaishunAppChannel, sharedBaishunAppKey)
|
|
}
|
|
|
|
func normalizeLuckyGiftConfigs(
|
|
list []LuckyGiftProviderConfig,
|
|
sharedBaishunAppID string,
|
|
sharedBaishunAppChannel string,
|
|
sharedBaishunAppKey string,
|
|
) []LuckyGiftProviderConfig {
|
|
result := make([]LuckyGiftProviderConfig, 0, len(list))
|
|
sharedBaishunAppID = strings.TrimSpace(sharedBaishunAppID)
|
|
sharedBaishunAppChannel = strings.TrimSpace(sharedBaishunAppChannel)
|
|
sharedBaishunAppKey = strings.TrimSpace(sharedBaishunAppKey)
|
|
for _, item := range list {
|
|
item.URL = strings.TrimSpace(item.URL)
|
|
item.AppID = strings.TrimSpace(item.AppID)
|
|
item.AppChannel = strings.TrimSpace(item.AppChannel)
|
|
item.AppKey = strings.TrimSpace(item.AppKey)
|
|
if item.AppID == "" && sharedBaishunAppID != "" {
|
|
item.AppID = sharedBaishunAppID
|
|
}
|
|
if item.AppChannel == "" && sharedBaishunAppChannel != "" {
|
|
item.AppChannel = sharedBaishunAppChannel
|
|
}
|
|
if item.AppKey == "" && sharedBaishunAppKey != "" {
|
|
item.AppKey = sharedBaishunAppKey
|
|
}
|
|
if item.URL == "" || item.AppID == "" || item.AppChannel == "" || item.AppKey == "" {
|
|
continue
|
|
}
|
|
result = append(result, item)
|
|
}
|
|
return result
|
|
}
|