// 定时器模块
// 秒寻科技
// zt 2024-10-27

package timer

import (
	"context"
	"fmt"
	"ipsomc/module/bparam/bparamapi"
	"ipsomc/public"
	"sync/atomic"
	"time"
)

var bparamApi bparamapi.BparamApi
var gTimerCounter int32 = 0 //定时器触发计数器

// 创建一个定时器
func CreateTimer(ctx context.Context) {
	ticker := time.NewTicker(5 * time.Minute)
	defer ticker.Stop()

	//获得系统工作模式
	sysWorkMode := public.PublicGetSysWorkMode()

	// 使用无限循环等待Ticker的触发
	for {
		select {
		case <-ctx.Done():
			return // 收到退出信号时终止
		case t := <-ticker.C:
			if sysWorkMode == 0 {
				fmt.Println("定时器触发时间:", t.Format("2006-01-02 15:16:17"))
			}

			newVal := atomic.AddInt32(&gTimerCounter, 1)

			//每15分钟维护一次心跳map(删除心跳map中的数据)
			if newVal%3 == 0 {
				public.PublicDeleteAllItem()
			}

			//每两小时更新一次数据库
			if newVal >= 24 {
				atomic.StoreInt32(&gTimerCounter, 0)
				go bparamApi.UpdateBtsStatus(public.Gpub_mapHeart) //修改基站状态
			}
		}
	}
}
