init
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user