timer.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // 定时器模块
  2. // 秒寻科技
  3. // zt 2024-10-27
  4. package timer
  5. import (
  6. "context"
  7. "fmt"
  8. "ipsomc/module/bparam/bparamapi"
  9. "ipsomc/public"
  10. "sync/atomic"
  11. "time"
  12. )
  13. var bparamApi bparamapi.BparamApi
  14. var gTimerCounter int32 = 0 //定时器触发计数器
  15. // 创建一个定时器
  16. func CreateTimer(ctx context.Context) {
  17. ticker := time.NewTicker(5 * time.Minute) //五分钟定时器
  18. defer ticker.Stop()
  19. //获得系统工作模式
  20. sysWorkMode := public.PublicSysWorkModeGet()
  21. // 使用无限循环等待Ticker的触发
  22. for {
  23. select {
  24. case <-ctx.Done():
  25. return // 收到退出信号时终止
  26. case t := <-ticker.C:
  27. if sysWorkMode == 0 {
  28. fmt.Println("定时器触发时间:", t.Format("2006-01-02 15:16:17"))
  29. }
  30. //计数器加1
  31. newVal := atomic.AddInt32(&gTimerCounter, 1)
  32. //每30分钟更新一次数据库
  33. if newVal >= 6 {
  34. atomic.StoreInt32(&gTimerCounter, 0) //计数器归零
  35. go bparamApi.UpdateBtsStatusByHeartMap(public.Gpub_mapHeart) //修改基站状态
  36. }
  37. }
  38. }
  39. }