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 } }