feat: 添加版本和构建时间变量 fix: 修正短信队列类型注释错误 style: 清理未使用的代码和测试文件 docs: 更新安装文档中的下载链接 chore: 迁移数据库脚本添加日志和订阅配置
44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package nodeMultiplier
|
|
|
|
import "time"
|
|
|
|
type TimePeriod struct {
|
|
StartTime string `json:"start_time"`
|
|
EndTime string `json:"end_time"`
|
|
Multiplier float32 `json:"multiplier"`
|
|
}
|
|
|
|
type Manager struct {
|
|
Periods []TimePeriod
|
|
}
|
|
|
|
func NewNodeMultiplierManager(periods []TimePeriod) *Manager {
|
|
return &Manager{
|
|
Periods: periods,
|
|
}
|
|
}
|
|
|
|
func (m *Manager) GetMultiplier(current time.Time) float32 {
|
|
for _, period := range m.Periods {
|
|
if m.isInTimePeriod(current, period.StartTime, period.EndTime) {
|
|
return period.Multiplier
|
|
}
|
|
}
|
|
return 1 // Default multiplier is 1 (no change)
|
|
}
|
|
|
|
func (m *Manager) isInTimePeriod(current time.Time, start, end string) bool {
|
|
startTime, _ := time.Parse("15:04.000", start)
|
|
endTime, _ := time.Parse("15:04.000", end)
|
|
|
|
currentTime := time.Date(0, 1, 1, current.Hour(), current.Minute(), 0, 0, time.UTC)
|
|
startTimeFormatted := time.Date(0, 1, 1, startTime.Hour(), startTime.Minute(), 0, 0, time.UTC)
|
|
endTimeFormatted := time.Date(0, 1, 1, endTime.Hour(), endTime.Minute(), 0, 0, time.UTC)
|
|
|
|
if startTimeFormatted.Before(endTimeFormatted) {
|
|
return currentTime.After(startTimeFormatted) && currentTime.Before(endTimeFormatted)
|
|
}
|
|
// Handle ranges that cross midnight
|
|
return currentTime.After(startTimeFormatted) || currentTime.Before(endTimeFormatted)
|
|
}
|