Ai
1 Star 0 Fork 0

江苏艾雨文承养老机器人有限公司/aywc_judge_notice

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
check.go 2.39 KB
一键复制 编辑 原始数据 按行查看 历史
dtal 提交于 2021-06-02 13:40 +08:00 . init
package main
import (
"context"
"database/sql"
"fmt"
"gitee.com/aywc_1/aywc_judge/src/appinit"
"gitee.com/aywc_1/aywc_judge/src/configuration"
"gitee.com/aywc_1/aywc_judge/src/models"
"github.com/jmoiron/sqlx"
"github.com/robfig/cron/v3"
log "github.com/sirupsen/logrus"
"os"
)
var MyCron *cron.Cron
var uploadPath = ""
var processPath = ""
var configFilePath = ""
const DeviceWarmProcessSql = "select id,upload_file_name,create_time from device_warm where status=0 and TIMESTAMPDIFF(SECOND,create_time,now())>? limit 100 "
func initCron() error {
expired_check := configuration.GetYamlValue([]string{"config", "business", "expired_picture_process", "cron"}, 0, "0/5 * * * * *").(string)
MyCron = cron.New(cron.WithSeconds()) //支持秒级定时器
_, err := MyCron.AddFunc(expired_check, DeleteExpirePicture)
if err != nil {
log.Error(err)
return err
}
return nil
}
var islock = false
func DeleteExpirePicture() {
fmt.Println(islock)
if islock {
log.Info("locked.return.......")
return
}
tx, err := appinit.GetDB().BeginTxx(context.Background(), nil)
if err != nil {
log.Error("事务失败:", err)
return
}
islock = true //加锁
defer clearTx(tx) //清理事务
expired_picture := configuration.GetYamlValue([]string{"config", "business", "expired_picture_process", "expired"}, 0, 86400).(int)
uploadPath := configuration.GetYamlValue([]string{"upload_path"}, 0, "/upload").(string)
rows, err := tx.Queryx(DeviceWarmProcessSql, expired_picture)
if err != nil {
tx.Rollback()
return
}
defer rows.Close()
tms := []models.DeviceWarmModel{}
_ = sqlx.StructScan(rows, &tms)
for _, tm := range tms {
sourcePath := uploadPath + "/" + tm.Id + "_" + tm.UploadFileName
_, err = tx.Exec("delete from device_warm where id=? ", tm.Id)
if err != nil {
tx.Rollback()
}
err := os.Remove(sourcePath)
if err != nil {
log.Errorf("Failed to remove file,err:%s\n", err.Error())
continue
}
}
}
func clearTx(tx *sqlx.Tx) {
err := tx.Commit()
if err != nil && err != sql.ErrTxDone {
log.Println("tx error:", err)
}
islock = false
}
func main() {
configuration.InitLog("check")
log.Info("Starting check cron application...")
c := make(chan error)
go func() {
err := appinit.DBInit()
if err != nil {
c <- err
}
}()
go func() {
err := initCron()
if err != nil {
c <- err
}
MyCron.Start() //开启定时任务
}()
err := <-c
log.Fatal(err)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/aywc_1/aywc_judge_notice.git
git@gitee.com:aywc_1/aywc_judge_notice.git
aywc_1
aywc_judge_notice
aywc_judge_notice
1f3ab306c158

搜索帮助