初始化项目文件

This commit is contained in:
2025-07-11 16:54:11 +08:00
parent 6bffd582a0
commit 39fedaac16
213 changed files with 16944 additions and 0 deletions

40
api_iris/crontab/init.go Normal file
View File

@ -0,0 +1,40 @@
package crontab
import (
"github.com/robfig/cron/v3"
"github.com/sirupsen/logrus"
"main/database"
"main/model"
)
var MyCron *cron.Cron
func InitAllCron() {
MyCron = cron.New(cron.WithSeconds())
MyCron.Start()
db := database.GetInstance().GetMysqlDb()
var runningCron []model.RunningCrontab
if err := db.Where("deleted_at is null").Delete(&runningCron).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
}
func UpdateCronDb(id int, name string, status bool) {
db := database.GetInstance().GetMysqlDb()
var runningCron model.RunningCrontab
if status {
if err := db.Create(&model.RunningCrontab{
Name: name,
CronId: id,
}).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
} else {
if err := db.Delete(&runningCron, "cron_id = ?", id).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
}
}

View File

@ -0,0 +1,70 @@
package crontab
import (
"fmt"
"github.com/sirupsen/logrus"
"main/config"
"main/database"
"main/model"
"main/service/admin"
"main/utils"
"os"
"path"
"strings"
"time"
)
// CornSaveNginxLog 定时任务处理nginx日志
func CornSaveNginxLog() {
cPath, _ := os.Getwd()
logPath := path.Join(cPath, config.Config.Logs.Nginx)
fileList, _ := os.ReadDir(logPath)
db := database.GetInstance().GetMysqlDb()
var logDealList []model.LogFileDealLog
var resLogList []model.Logs
if err := db.Find(&logDealList).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
for _, file := range fileList {
if strings.Contains(file.Name(), "access-") {
date := strings.Split(strings.Split(file.Name(), "access-")[1], ".")[0]
if getDateDealBool(date, logDealList) || date == time.Now().Format("2006-01-02") {
continue
}
logrus.Infoln(date, "nginx日志开始处理")
if err := db.Where("time like ?", fmt.Sprintf("%s%%", date)).Delete(&resLogList).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
logList, _ := utils.FileRead(path.Join(logPath, file.Name()), true)
for _, v := range logList {
c := make(chan model.Logs)
go admin.FormatLog(v, date, c)
resLogItem := <-c
if err := db.Create(&resLogItem).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
}
if err := db.Create(&model.LogFileDealLog{
Date: date,
Success: true,
}).Error; err != nil {
logrus.Errorln("sql执行失败", err)
return
}
logrus.Infoln(date, "nginx日志处理完成")
}
}
}
// 获取当前日期是否已处理
func getDateDealBool(date string, dealLog []model.LogFileDealLog) bool {
for _, v := range dealLog {
if v.Date == date && v.Success {
return true
}
}
return false
}

View File

@ -0,0 +1,5 @@
package crontab
type sysLogDateType struct {
Datetime string `json:"datetime"`
}