From 8a0cb38a396e18a9f220bd5144212baca18f49d1 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 22 六月 2020 15:43:07 +0800
Subject: [PATCH] push space left by uni-push

---
 controllers/car.go |   51 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 42 insertions(+), 9 deletions(-)

diff --git a/controllers/car.go b/controllers/car.go
index 9dd4fd4..11ce19b 100644
--- a/controllers/car.go
+++ b/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,
 	}

--
Gitblit v1.8.0