samba/server/other/monitor/registration.go
2025-06-04 09:51:39 +08:00

54 lines
883 B
Go

package monitor
import (
"fmt"
"github.com/golang-module/carbon/v2"
"samba/pkg/log"
"samba/pkg/task"
"samba/pkg/xtime"
"samba/util/model"
"time"
)
type RegMonitor struct {
*Ding
last carbon.Carbon
lastCount int64
}
func (r *RegMonitor) Init(t *task.Task) {
t.Ticker(10 * time.Minute)
}
func (r *RegMonitor) Name() string {
return "注册异常检测"
}
func (r *RegMonitor) Do(*task.Task) {
count, err := model.NewUserInfoOp().Count()
if err != nil {
log.Error(err.Error())
return
}
if count > r.lastCount {
// 人数增加
r.lastCount = count
r.last = xtime.Now()
return
}
// 人数不变
dur := r.last.DiffInDuration(xtime.Now())
if dur < 15*time.Minute {
return
}
err = r.Ding.SendMessageText(fmt.Sprintf("注册异常!%.2f分钟内没有新注册用户", dur.Minutes()))
if err != nil {
log.Error(err.Error())
return
}
}