This commit is contained in:
Joe
2026-01-16 15:49:34 +08:00
commit 550d3e1f42
380 changed files with 62024 additions and 0 deletions
+71
View File
@@ -0,0 +1,71 @@
package commands
import (
"fmt"
"time"
"github.com/goravel/framework/contracts/console"
"github.com/goravel/framework/contracts/console/command"
"github.com/goravel/framework/facades"
"goravel/app/models"
)
type ClearLogs struct {
}
// Signature The name and signature of the console command.
func (r *ClearLogs) Signature() string {
return "app:clear-logs"
}
// Description The console command description.
func (r *ClearLogs) Description() string {
return "清理6个月前的日志记录(操作日志、登录日志、系统日志)"
}
// Extend The console command extend.
func (r *ClearLogs) Extend() command.Extend {
return command.Extend{Category: "app"}
}
// Handle Execute the console command.
func (r *ClearLogs) Handle(ctx console.Context) error {
// 计算6个月前的日期
monthsAgo := time.Now().AddDate(0, -6, 0)
ctx.Info("开始清理6个月前的日志...")
// 清理操作日志
operationLogResult, err := facades.Orm().Query().Model(&models.OperationLog{}).
Where("created_at < ?", monthsAgo).
Delete(&models.OperationLog{})
if err != nil {
ctx.Error("清理操作日志失败: " + err.Error())
return err
}
ctx.Info(fmt.Sprintf("已清理操作日志: %d 条", operationLogResult.RowsAffected))
// 清理登录日志
loginLogResult, err := facades.Orm().Query().Model(&models.LoginLog{}).
Where("created_at < ?", monthsAgo).
Delete(&models.LoginLog{})
if err != nil {
ctx.Error("清理登录日志失败: " + err.Error())
return err
}
ctx.Info(fmt.Sprintf("已清理登录日志: %d 条", loginLogResult.RowsAffected))
// 清理系统日志
systemLogResult, err := facades.Orm().Query().Model(&models.SystemLog{}).
Where("created_at < ?", monthsAgo).
Delete(&models.SystemLog{})
if err != nil {
ctx.Error("清理系统日志失败: " + err.Error())
return err
}
ctx.Info(fmt.Sprintf("已清理系统日志: %d 条", systemLogResult.RowsAffected))
ctx.Info("日志清理完成!")
return nil
}