Browse Source

定时清理用户登录日志

hsun 1 year ago
parent
commit
79caba436a
3 changed files with 43 additions and 0 deletions
  1. 11 0
      models/sys_user_login_record.go
  2. 4 0
      services/task.go
  3. 28 0
      services/user_login.go

+ 11 - 0
models/sys_user_login_record.go

@@ -0,0 +1,11 @@
+package models
+
+import "github.com/beego/beego/v2/client/orm"
+
+// ClearSysUserLoginRecord 清理用户登录日志
+func ClearSysUserLoginRecord(date string) (err error) {
+	o := orm.NewOrmUsingDB("eta")
+	sql := `DELETE FROM sys_user_login_record WHERE create_time <= ?`
+	_, err = o.Raw(sql, date).Exec()
+	return
+}

+ 4 - 0
services/task.go

@@ -78,6 +78,10 @@ func releaseTask() {
 	// 每天清理两周前的报告保存日志
 	clearReportSaveLog := task.NewTask("clearReportSaveLog", "0 15 23 * * *", ClearReportSaveLog)
 	task.AddTask("定时清理报告保存日志", clearReportSaveLog)
+
+	// 每天清理两个月前的用户登录日志
+	clearSysUserLoginLog := task.NewTask("clearSysUserLoginLog", "0 18 23 * * *", ClearUserLoginLog)
+	task.AddTask("定时清理用户登录日志", clearSysUserLoginLog)
 }
 
 func RefreshData(cont context.Context) (err error) {

+ 28 - 0
services/user_login.go

@@ -0,0 +1,28 @@
+package services
+
+import (
+	"context"
+	"eta/eta_task/models"
+	"eta/eta_task/services/alarm_msg"
+	"eta/eta_task/utils"
+	"fmt"
+	"time"
+)
+
+// ClearUserLoginLog 每天清理两个月前的用户登录日志
+func ClearUserLoginLog(cont context.Context) (err error) {
+	defer func() {
+		if err != nil {
+			tips := fmt.Sprintf("用户登录日志清理, ClearUserLoginLog error: %s", err.Error())
+			fmt.Println(tips)
+			go alarm_msg.SendAlarmMsg(tips, 2)
+		}
+	}()
+
+	preTime := time.Now().Local().AddDate(0, -2, 0).Format(utils.FormatDateTime)
+	e := models.ClearSysUserLoginRecord(preTime)
+	if e != nil {
+		err = fmt.Errorf("ClearSysUserLoginRecord: %s", e.Error())
+	}
+	return
+}