liuxiaolong
2020-06-22 8a0cb38a396e18a9f220bd5144212baca18f49d1
controllers/car.go
@@ -4,14 +4,55 @@
   "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 统计剩余车位
@@ -22,15 +63,7 @@
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,
   }