12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package cron
- import (
- "Cold_GoodsOrder/Nats/NatsServer"
- "Cold_GoodsOrder/models/Function"
- "github.com/beego/beego/v2/adapter/orm"
- beego "github.com/beego/beego/v2/server/web"
- "github.com/robfig/cron/v3"
- "time"
- )
- func Cron_WarningRate() {
- // 创建一个定时任务对象
- c := cron.New(cron.WithSeconds())
- // 给对象增加定时任务
- // @daily 每日运行一次
- corn, _ := beego.AppConfig.String("corn")
- c.AddFunc(corn, CronUpdateOrderState)
- // 启动定时任务
- c.Start()
- defer c.Stop()
- // 查询语句,阻塞,让main函数不退出,保持程序运行
- select {}
- }
- func CronUpdateOrderState() {
- var err error
- o := orm.NewOrm()
- defer func() {
- if err != nil {
- o.Rollback()
- } else {
- o.Commit()
- }
- }()
- var orders []Function.Order
- _, err = o.Raw("SELECT * FROM `order` WHERE t__state = ? OR t__state = ?", 1, 2).QueryRows(&orders)
- for _, v := range orders {
- d, _ := NatsServer.ReadDeviceByT_sn(v.T_sn)
- if len(d.T_sn) != 0 {
- // 监控状态 0 未监控 1 监控
- if v.T_State == 1 && d.T_monitor == 1 {
- v.T_State = 2 // 更新状态为在途
- v.T_start_Ut = time.Now()
- // 更新订单状态到数据库
- _, err = o.Update(&v, "t__state", "t_start__ut")
- Function.Redis_Order_Set(v)
- } else if v.T_State == 2 && !v.T_start_Ut.IsZero() && d.T_monitor == 0 {
- v.T_State = 3 // 更新状态为已完成
- v.T_end_Ut = time.Now()
- // 更新订单状态到数据库
- _, err = o.Update(&v, "t__state", "t_end__ut")
- Function.Redis_Order_Set(v)
- }
- }
- }
- }
|