修复 「1.2.2 用户管理-用户列表勾选单一用户会全选 」 close #216
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
@ -10,14 +11,14 @@ import (
|
||||
)
|
||||
|
||||
type Ticker struct {
|
||||
sessionRepository *repository.SessionRepository
|
||||
propertyRepository *repository.PropertyRepository
|
||||
loginLogRepository *repository.LoginLogRepository
|
||||
jobLogRepository *repository.JobLogRepository
|
||||
}
|
||||
|
||||
func NewTicker(sessionRepository *repository.SessionRepository, propertyRepository *repository.PropertyRepository, loginLogRepository *repository.LoginLogRepository, jobLogRepository *repository.JobLogRepository) *Ticker {
|
||||
return &Ticker{sessionRepository: sessionRepository, propertyRepository: propertyRepository, loginLogRepository: loginLogRepository, jobLogRepository: jobLogRepository}
|
||||
func NewTicker() *Ticker {
|
||||
return &Ticker{}
|
||||
}
|
||||
func init() {
|
||||
ticker := NewTicker()
|
||||
ticker.SetupTicker()
|
||||
}
|
||||
|
||||
func (t *Ticker) SetupTicker() {
|
||||
@ -26,17 +27,7 @@ func (t *Ticker) SetupTicker() {
|
||||
unUsedSessionTicker := time.NewTicker(time.Minute * 60)
|
||||
go func() {
|
||||
for range unUsedSessionTicker.C {
|
||||
sessions, _ := t.sessionRepository.FindByStatusIn([]string{constant.NoConnect, constant.Connecting})
|
||||
if len(sessions) > 0 {
|
||||
now := time.Now()
|
||||
for i := range sessions {
|
||||
if now.Sub(sessions[i].ConnectedTime.Time) > time.Hour*1 {
|
||||
_ = t.sessionRepository.DeleteById(sessions[i].ID)
|
||||
s := sessions[i].Username + "@" + sessions[i].IP + ":" + strconv.Itoa(sessions[i].Port)
|
||||
log.Infof("会话「%v」ID「%v」超过1小时未打开,已删除。", s, sessions[i].ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
t.deleteUnUsedSession()
|
||||
}
|
||||
}()
|
||||
|
||||
@ -44,15 +35,37 @@ func (t *Ticker) SetupTicker() {
|
||||
timeoutSessionTicker := time.NewTicker(time.Hour * 6)
|
||||
go func() {
|
||||
for range timeoutSessionTicker.C {
|
||||
deleteOutTimeSession(t)
|
||||
deleteOutTimeLoginLog(t)
|
||||
deleteOutTimeJobLog(t)
|
||||
deleteOutTimeSession()
|
||||
deleteOutTimeLoginLog()
|
||||
deleteOutTimeJobLog()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func deleteOutTimeSession(t *Ticker) {
|
||||
property, err := t.propertyRepository.FindByName("session-saved-limit")
|
||||
func (t *Ticker) deleteUnUsedSession() {
|
||||
sessions, err := repository.SessionRepository.FindByStatusIn(context.TODO(), []string{constant.NoConnect, constant.Connecting})
|
||||
if err != nil {
|
||||
log.Errorf("查询会话列表失败: %v", err.Error())
|
||||
return
|
||||
}
|
||||
if len(sessions) > 0 {
|
||||
now := time.Now()
|
||||
for i := range sessions {
|
||||
if now.Sub(sessions[i].ConnectedTime.Time) > time.Hour*1 {
|
||||
err := repository.SessionRepository.DeleteById(context.TODO(), sessions[i].ID)
|
||||
s := sessions[i].Username + "@" + sessions[i].IP + ":" + strconv.Itoa(sessions[i].Port)
|
||||
if err != nil {
|
||||
log.Errorf("会话「%v」ID「%v」超过1小时未打开,删除失败: %v", s, sessions[i].ID, err.Error())
|
||||
} else {
|
||||
log.Infof("会话「%v」ID「%v」超过1小时未打开,已删除。", s, sessions[i].ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func deleteOutTimeSession() {
|
||||
property, err := repository.PropertyRepository.FindByName(context.TODO(), "session-saved-limit")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -63,7 +76,7 @@ func deleteOutTimeSession(t *Ticker) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
sessions, err := t.sessionRepository.FindOutTimeSessions(limit)
|
||||
sessions, err := repository.SessionRepository.FindOutTimeSessions(context.TODO(), limit)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -73,15 +86,15 @@ func deleteOutTimeSession(t *Ticker) {
|
||||
for i := range sessions {
|
||||
ids = append(ids, sessions[i].ID)
|
||||
}
|
||||
err := t.sessionRepository.DeleteByIds(ids)
|
||||
err := repository.SessionRepository.DeleteByIds(context.TODO(), ids)
|
||||
if err != nil {
|
||||
log.Errorf("删除离线会话失败 %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func deleteOutTimeLoginLog(t *Ticker) {
|
||||
property, err := t.propertyRepository.FindByName("login-log-saved-limit")
|
||||
func deleteOutTimeLoginLog() {
|
||||
property, err := repository.PropertyRepository.FindByName(context.TODO(), "login-log-saved-limit")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -94,7 +107,7 @@ func deleteOutTimeLoginLog(t *Ticker) {
|
||||
return
|
||||
}
|
||||
|
||||
loginLogs, err := t.loginLogRepository.FindOutTimeLog(limit)
|
||||
loginLogs, err := repository.LoginLogRepository.FindOutTimeLog(context.TODO(), limit)
|
||||
if err != nil {
|
||||
log.Errorf("获取登录日志失败 %v", err)
|
||||
return
|
||||
@ -102,7 +115,7 @@ func deleteOutTimeLoginLog(t *Ticker) {
|
||||
|
||||
if len(loginLogs) > 0 {
|
||||
for i := range loginLogs {
|
||||
err := t.loginLogRepository.DeleteById(loginLogs[i].ID)
|
||||
err := repository.LoginLogRepository.DeleteById(context.TODO(), loginLogs[i].ID)
|
||||
if err != nil {
|
||||
log.Errorf("删除登录日志失败 %v", err)
|
||||
}
|
||||
@ -110,8 +123,8 @@ func deleteOutTimeLoginLog(t *Ticker) {
|
||||
}
|
||||
}
|
||||
|
||||
func deleteOutTimeJobLog(t *Ticker) {
|
||||
property, err := t.propertyRepository.FindByName("cron-log-saved-limit")
|
||||
func deleteOutTimeJobLog() {
|
||||
property, err := repository.PropertyRepository.FindByName(context.TODO(), "cron-log-saved-limit")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@ -123,14 +136,14 @@ func deleteOutTimeJobLog(t *Ticker) {
|
||||
return
|
||||
}
|
||||
|
||||
jobLogs, err := t.jobLogRepository.FindOutTimeLog(limit)
|
||||
jobLogs, err := repository.JobLogRepository.FindOutTimeLog(context.TODO(), limit)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if len(jobLogs) > 0 {
|
||||
for i := range jobLogs {
|
||||
err := t.jobLogRepository.DeleteById(jobLogs[i].ID)
|
||||
err := repository.JobLogRepository.DeleteById(context.TODO(), jobLogs[i].ID)
|
||||
if err != nil {
|
||||
log.Errorf("删除计划日志失败 %v", err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user