54 lines
883 B
Go
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
|
||
|
}
|
||
|
}
|