feat: times 包新增 SystemNewDay 和 OffsetTimeNewDay 事件
This commit is contained in:
parent
24f54a1536
commit
2a0c5b84a8
|
@ -0,0 +1,53 @@
|
||||||
|
package times
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/kercylan98/minotaur/utils/offset"
|
||||||
|
"github.com/kercylan98/minotaur/utils/timer"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
SystemNewDayEventHandle func()
|
||||||
|
OffsetTimeNewDayEventHandle func()
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
systemNewDayEventHandles = make(map[string][]SystemNewDayEventHandle)
|
||||||
|
offsetTimeNewDayEventHandles = make(map[string][]OffsetTimeNewDayEventHandle)
|
||||||
|
)
|
||||||
|
|
||||||
|
// RegSystemNewDayEvent 注册系统新的一天事件
|
||||||
|
// - 建议全局注册一个事件后再另行拓展
|
||||||
|
// - 将特定 name 的定时任务注册到 ticker 中,在系统时间到达每天的 00:00:00 时触发,如果 trigger 为 true,则立即触发一次
|
||||||
|
func RegSystemNewDayEvent(ticker *timer.Ticker, name string, trigger bool, handle SystemNewDayEventHandle) {
|
||||||
|
ticker.Loop(name, GetNextDayInterval(time.Now()), Day, timer.Forever, OnSystemNewDayEvent, name)
|
||||||
|
systemNewDayEventHandles[name] = append(systemNewDayEventHandles[name], handle)
|
||||||
|
if trigger {
|
||||||
|
OnSystemNewDayEvent(name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnSystemNewDayEvent 系统新的一天事件
|
||||||
|
func OnSystemNewDayEvent(name string) {
|
||||||
|
for _, handle := range systemNewDayEventHandles[name] {
|
||||||
|
handle()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegOffsetTimeNewDayEvent 注册偏移时间新的一天事件
|
||||||
|
// - 建议全局注册一个事件后再另行拓展
|
||||||
|
// - 与 RegSystemNewDayEvent 类似,但是触发时间为 offset 时间到达每天的 00:00:00
|
||||||
|
func RegOffsetTimeNewDayEvent(ticker *timer.Ticker, name string, offset *offset.Time, trigger bool, handle OffsetTimeNewDayEventHandle) {
|
||||||
|
ticker.Loop(name, GetNextDayInterval(offset.Now()), Day, timer.Forever, OnOffsetTimeNewDayEvent, name)
|
||||||
|
offsetTimeNewDayEventHandles[name] = append(offsetTimeNewDayEventHandles[name], handle)
|
||||||
|
if trigger {
|
||||||
|
OnOffsetTimeNewDayEvent(name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnOffsetTimeNewDayEvent 偏移时间新的一天事件
|
||||||
|
func OnOffsetTimeNewDayEvent(name string) {
|
||||||
|
for _, handle := range offsetTimeNewDayEventHandles[name] {
|
||||||
|
handle()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue