12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package jobs
- import (
- sysModel "cold-delivery/app/admin/model"
- "cold-delivery/common/global"
- "cold-delivery/db"
- "fmt"
- "github.com/gin-gonic/gin"
- log "gogs.baozhida.cn/zoie/OAuth-core/logger"
- "time"
- )
- // 需要将定义的struct 添加到字典中;
- // 字典 key 可以配置到 自动任务 调用目标 中;
- func InitJob() {
- jobList = map[string]JobsExec{
- //"ExamplesOne": ExamplesOne{},
- "CountIceRaftRecordFreezeDuration": CountIceRaftRecordFreezeDuration{},
- // ...
- }
- }
- // 新添加的job 必须按照以下格式定义,并实现Exec函数
- type ExamplesOne struct {
- }
- func (t ExamplesOne) Exec(arg interface{}) error {
- str := time.Now().Format(timeFormat) + " [INFO] JobCore ExamplesOne exec success"
- // TODO: 这里需要注意 Examples 传入参数是 string 所以 arg.(string);请根据对应的类型进行转化;
- switch arg.(type) {
- case string:
- if arg.(string) != "" {
- fmt.Println("string", arg.(string))
- fmt.Println(str, arg.(string))
- } else {
- fmt.Println("arg is nil")
- fmt.Println(str, "arg is nil")
- }
- break
- }
- return nil
- }
- // 统计冰排冷冻时长
- type CountIceRaftRecordFreezeDuration struct {
- }
- // 统计冰排冷冻时长
- func (t CountIceRaftRecordFreezeDuration) Exec(arg interface{}) error {
- iceRaftRecordList := make([]sysModel.IceRaftRecord, 0)
- // GetOrm 获取orm连接
- orm, _ := db.GetOrm(&gin.Context{})
- err := orm.Where("status = ? or status = ? ", sysModel.IceRaftRecordStatusFreezing, sysModel.IceRaftRecordStatusWaitUse).
- Find(&iceRaftRecordList).Error
- if err != nil {
- log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- for _, record := range iceRaftRecordList {
- inTime := record.InStorageTime.Local()
- //if inTime.Add(time.Hour * time.Duration(record.FreezeClaim)).After(time.Now()) {
- if inTime.Add(time.Duration(float64(time.Hour) * record.FreezeClaim[0])).After(time.Now()) {
- // 未达到冷冻时长 不修改状态 只修改时间
- record.FreezeDuration = int(time.Now().Sub(inTime).Minutes())
- } else {
- record.FreezeDuration = int(time.Now().Sub(inTime).Minutes())
- record.Status = sysModel.IceRaftRecordStatusWaitUse
- }
- if err := orm.Save(&record).Error; err != nil {
- log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- }
- return nil
- }
|