103 lines
2.9 KiB
Go
103 lines
2.9 KiB
Go
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"message-nest/pkg/table"
|
|
"message-nest/pkg/util"
|
|
)
|
|
|
|
type SendTasksLogs struct {
|
|
ID int `gorm:"primary_key" json:"id" `
|
|
TaskID string `json:"task_id" gorm:"type:varchar(36) comment '任务id';default:'';index:task_id"`
|
|
Log string `json:"log" gorm:"type:text comment '日志';"`
|
|
Status int `json:"status" gorm:"type:int comment '状态';default:0;"`
|
|
|
|
CreatedOn util.Time `json:"created_on" gorm:"type:timestamp comment '创建时间';default:current_timestamp;"`
|
|
ModifiedOn util.Time `json:"modified_on" gorm:"type:timestamp comment '更新时间';default:current_timestamp on update current_timestamp;"`
|
|
}
|
|
|
|
// Add 添加日志记录
|
|
func (log *SendTasksLogs) Add() error {
|
|
if err := db.Create(&log).Error; err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 日志列表的结果
|
|
type LogsResult struct {
|
|
ID int `json:"id"`
|
|
TaskID string `json:"task_id"`
|
|
Log string `json:"log"`
|
|
CreatedOn util.Time `json:"created_on"`
|
|
ModifiedOn util.Time `json:"modified_on"`
|
|
TaskName string `json:"task_name"`
|
|
Status int `json:"status"`
|
|
}
|
|
|
|
// GetSendLogs 获取所有日志记录
|
|
func GetSendLogs(pageNum int, pageSize int, name string, taskId string, maps interface{}) ([]LogsResult, error) {
|
|
var logs []LogsResult
|
|
logt := table.LogsTableName
|
|
taskt := table.TasksTableName
|
|
|
|
query := db.
|
|
Table(logt).
|
|
Select(fmt.Sprintf("%s.*, %s.name as task_name", logt, taskt)).
|
|
Joins(fmt.Sprintf("LEFT JOIN %s ON %s.task_id = %s.id", taskt, logt, taskt))
|
|
|
|
if name != "" {
|
|
query = query.Where(fmt.Sprintf("%s.name like ?", taskt), fmt.Sprintf("%%%s%%", name))
|
|
}
|
|
if taskId != "" {
|
|
query = query.Where(fmt.Sprintf("%s.task_id = ?", logt), taskId)
|
|
}
|
|
query = query.Order("created_on DESC")
|
|
if pageSize > 0 || pageNum > 0 {
|
|
query = query.Offset(pageNum).Limit(pageSize)
|
|
}
|
|
query.Scan(&logs)
|
|
|
|
return logs, nil
|
|
}
|
|
|
|
// GetSendLogsTotal 获取所有日志总数
|
|
func GetSendLogsTotal(name string, taskId string, maps interface{}) (int, error) {
|
|
var total int
|
|
logt := table.LogsTableName
|
|
taskt := table.TasksTableName
|
|
query := db.
|
|
Table(logt).
|
|
Joins(fmt.Sprintf("LEFT JOIN %s ON %s.task_id = %s.id", taskt, logt, taskt))
|
|
if name != "" {
|
|
query = query.Where(fmt.Sprintf("%s.name like ?", taskt), fmt.Sprintf("%%%s%%", name))
|
|
}
|
|
if taskId != "" {
|
|
query = query.Where(fmt.Sprintf("%s.task_id = ?", logt), taskId)
|
|
}
|
|
query.Count(&total)
|
|
return total, nil
|
|
}
|
|
|
|
// GetSendLogsTotal 获取所有日志总数
|
|
func DeleteOutDateLogs(keepNum int) (int, error) {
|
|
var affectedRows int
|
|
logt := table.LogsTableName
|
|
sql := fmt.Sprintf(`DELETE FROM %s
|
|
WHERE id NOT IN (
|
|
SELECT id FROM (
|
|
SELECT id
|
|
FROM %s
|
|
ORDER BY created_on DESC
|
|
LIMIT %d
|
|
) tmp
|
|
);`, logt, logt, keepNum)
|
|
|
|
result := db.Exec(sql)
|
|
if result.Error != nil {
|
|
return affectedRows, result.Error
|
|
}
|
|
affectedRows = int(result.RowsAffected)
|
|
return affectedRows, nil
|
|
}
|