|
|
|
|
package config
|
|
|
|
|
|
|
|
|
|
import "github.com/pkg/errors"
|
|
|
|
|
|
|
|
|
|
type (
|
|
|
|
|
Elite struct {
|
|
|
|
|
LiveDict map[int32]int64 // 直播间序号对应ID
|
|
|
|
|
DefaultId int64 // 默认单位ID
|
|
|
|
|
Items []EliteItem
|
|
|
|
|
}
|
|
|
|
|
// EliteItem 精英单位
|
|
|
|
|
EliteItem struct {
|
|
|
|
|
Id int64 // 单位ID
|
|
|
|
|
Sort int32 // 排序号
|
|
|
|
|
PriceDay int64 // 每天价格(弹币)
|
|
|
|
|
PriceForever int64 // 永久价格
|
|
|
|
|
}
|
|
|
|
|
Title struct {
|
|
|
|
|
LiveDict map[int32]int64 // 直播间序号对应ID
|
|
|
|
|
Items []TitleItem
|
|
|
|
|
}
|
|
|
|
|
// TitleItem 称号
|
|
|
|
|
TitleItem struct {
|
|
|
|
|
Id int64 // 称号ID
|
|
|
|
|
Name string // 称号名
|
|
|
|
|
Type string // 称号类型
|
|
|
|
|
RankType int32 // 作用的排行榜类型
|
|
|
|
|
PriceDay int64 // 每天价格(弹币)
|
|
|
|
|
PriceForever int64 // 永久价格(弹币)
|
|
|
|
|
}
|
|
|
|
|
GiftPack struct {
|
|
|
|
|
PackType string // 礼包类型
|
|
|
|
|
PackName string // 礼包名称
|
|
|
|
|
// Condition 领取条件
|
|
|
|
|
Condition struct {
|
|
|
|
|
UserLimit int32 // 单人可领取数量
|
|
|
|
|
UserResetType string // 用户礼包重置类型: 不重置(unset)|每天(daily)|每周(weekly)|每月(monthly)
|
|
|
|
|
StartTime string // 可领取时间(开始) 两个时间相等则不限期领取
|
|
|
|
|
EndTime string // 可领取时间(结束)
|
|
|
|
|
}
|
|
|
|
|
// Content 礼包内容
|
|
|
|
|
Content struct {
|
|
|
|
|
Coin int64 // 积分数
|
|
|
|
|
Coins []int64 // 积分数(多次领取,每次不同)
|
|
|
|
|
|
|
|
|
|
// Title 奖励称号列表
|
|
|
|
|
Title []struct {
|
|
|
|
|
Id int64 // 称号ID
|
|
|
|
|
Duration int64 // 持续时长,单位: 秒 -1无限
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// RankSubmit 排行榜结算配置
|
|
|
|
|
RankSubmit struct {
|
|
|
|
|
TitleId int64 // 称号奖励
|
|
|
|
|
Best []float64 // 弹币奖励(前n) 单位: 元
|
|
|
|
|
Consolation float64 // 安慰奖(后max-n) 单位: 元
|
|
|
|
|
}
|
|
|
|
|
GameConfig struct {
|
|
|
|
|
UserRetriever struct {
|
|
|
|
|
Enabled bool // 是否开启
|
|
|
|
|
UpdateDuration int64 // 用户信息更新最短间隔 单位 h
|
|
|
|
|
NobilityPlatforms []string // 需要获取贵族的平台
|
|
|
|
|
Cron struct {
|
|
|
|
|
PlatformUser string
|
|
|
|
|
Nobility string
|
|
|
|
|
}
|
|
|
|
|
Bilibili struct {
|
|
|
|
|
RoomId int64 // 直播房间号
|
|
|
|
|
Mid int64 // 主播UID 不输入就通过API获取
|
|
|
|
|
RoomShortInfoApi string // 房间简短信息API
|
|
|
|
|
TopListApi string
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Rank struct {
|
|
|
|
|
Enabled bool // 是否开启
|
|
|
|
|
Cron struct {
|
|
|
|
|
Update string // 更新榜单
|
|
|
|
|
Persistence string // 持久化
|
|
|
|
|
}
|
|
|
|
|
Submit map[int32]RankSubmit // 排行榜结算
|
|
|
|
|
}
|
|
|
|
|
GiftCollector struct {
|
|
|
|
|
Enabled bool // 是否开启
|
|
|
|
|
Platforms []string // 需搜集的平台
|
|
|
|
|
Cron struct {
|
|
|
|
|
CollectGift string
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 弹币
|
|
|
|
|
Coin struct {
|
|
|
|
|
// CheckIn 签到
|
|
|
|
|
CheckIn struct {
|
|
|
|
|
Points []int64 // 签到积分 次数分数
|
|
|
|
|
Critical float32 // 暴击率(百分比)
|
|
|
|
|
CriticalRadio []float32 // 暴击倍数
|
|
|
|
|
}
|
|
|
|
|
RMBToCoin float64 // RMB到弹币的转换
|
|
|
|
|
GiftToRMB map[string]float64 // 平台礼物到RMB的转换
|
|
|
|
|
FreeToCoin map[string]float64 // 平台免费礼物到弹币的转换
|
|
|
|
|
}
|
|
|
|
|
// 段位
|
|
|
|
|
Grade struct {
|
|
|
|
|
BravePointCost []int64 // 骁勇分抵扣规则,对于grade等级
|
|
|
|
|
MaxBravePoint int64 // 最大骁勇分
|
|
|
|
|
WinScoreThreshold float32 // 获胜升段分数阈值
|
|
|
|
|
MinUserCount int // 最小段位计算用户量
|
|
|
|
|
}
|
|
|
|
|
// 精英单位
|
|
|
|
|
Elite Elite
|
|
|
|
|
// 称号
|
|
|
|
|
Title Title
|
|
|
|
|
// GiftPack 礼包配置
|
|
|
|
|
GiftPackMap []GiftPack
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (c *Title) FindTitleCfg(id int64) (*TitleItem, error) {
|
|
|
|
|
for _, item := range c.Items {
|
|
|
|
|
if id == item.Id {
|
|
|
|
|
return &item, nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil, errors.New("未找到ID对应的称号配置")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *Title) FindTitleCfgByLive(sort int32) (*TitleItem, error) {
|
|
|
|
|
if id, ok := c.LiveDict[sort]; ok {
|
|
|
|
|
return c.FindTitleCfg(id)
|
|
|
|
|
}
|
|
|
|
|
return nil, errors.New("未找到sort对应的称号配置")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *Elite) FindEliteCfg(id int64) (*EliteItem, error) {
|
|
|
|
|
for _, item := range c.Items {
|
|
|
|
|
if id == item.Id {
|
|
|
|
|
return &item, nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil, errors.New("未找到ID对应的精英单位配置")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *Elite) FindEliteCfgByLive(sort int32) (*EliteItem, error) {
|
|
|
|
|
if id, ok := c.LiveDict[sort]; ok {
|
|
|
|
|
return c.FindEliteCfg(id)
|
|
|
|
|
}
|
|
|
|
|
return nil, errors.New("未找到sort对应的精英单位配置")
|
|
|
|
|
}
|