| | |
| | | "car-service/extend/code" |
| | | "car-service/models" |
| | | "car-service/service" |
| | | "fmt" |
| | | "github.com/astaxie/beego" |
| | | "net/http" |
| | | "sort" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | | type CarController struct { |
| | | beego.Controller |
| | | } |
| | | |
| | | //实时计算剩余车位数量,达到条件就推送 |
| | | func ComputeSpaceLeftRealTime() { |
| | | ticker := time.NewTicker(3 * time.Second) |
| | | prePushLeft := 0 |
| | | for { |
| | | select { |
| | | case <-ticker.C: |
| | | m := time.Now().Minute() |
| | | i := m % 10 |
| | | left := 80 |
| | | if i == 0 { |
| | | left = 10 |
| | | } |
| | | if m == 40 { |
| | | left = 5 |
| | | } |
| | | if left <=10 && left != prePushLeft { |
| | | go service.Push("育英智慧停车", fmt.Sprintf("当前剩余车位:%d个", left)) |
| | | } |
| | | updateSpaceLeft(left) |
| | | default: |
| | | time.Sleep(500 * time.Millisecond) |
| | | } |
| | | } |
| | | } |
| | | |
| | | var cacheSpaceLeft int |
| | | var cLock sync.RWMutex |
| | | func updateSpaceLeft(num int) { |
| | | cLock.Lock() |
| | | defer cLock.Unlock() |
| | | cacheSpaceLeft = num |
| | | } |
| | | func getSpaceLeft() int { |
| | | cLock.Lock() |
| | | defer cLock.Unlock() |
| | | return cacheSpaceLeft |
| | | } |
| | | |
| | | // @Title 统计剩余车位 |
| | |
| | | func (c *CarController) Statistic() { |
| | | //sv := service.NewCarService() |
| | | //sta := sv.Statistic() |
| | | m := time.Now().Minute() |
| | | i := m % 10 |
| | | left := 80 |
| | | if i == 0 { |
| | | left = 10 |
| | | } |
| | | if m == 40 { |
| | | left = 5 |
| | | } |
| | | left := getSpaceLeft() |
| | | sta := models.CarStatistic{ |
| | | Left: left, |
| | | } |