From dbc843d0b37f786fb816131bcc7ebca86dbe72e9 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期四, 06 八月 2020 09:58:46 +0800
Subject: [PATCH] add crossRecord

---
 controllers/car.go |   76 +++++++++++++++++++++++++++++++++++---
 1 files changed, 70 insertions(+), 6 deletions(-)

diff --git a/controllers/car.go b/controllers/car.go
index ab1a353..2329ce3 100644
--- a/controllers/car.go
+++ b/controllers/car.go
@@ -4,13 +4,64 @@
 	"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
+	sv := service.NewCarService()
+	initCacheM := false
+	for {
+		select {
+			case <-ticker.C:
+				hikSta, flag := sv.Statistic()
+				if flag {
+					left := hikSta.Left
+					if !initCacheM {
+						models.SetSpaceNo(hikSta.TotalPermPlace)
+						initCacheM = true
+					}
+					if left <=5 && left != prePushLeft {
+						go func() {
+							message := fmt.Sprintf("%s 鍓╀綑杞︿綅锛�%d涓�", time.Now().Format("2006-01-02 15:04:05"), left)
+							b, e := service.Push("鑲茶嫳鏅烘収鍋滆溅", message)
+
+							prePushLeft = left
+
+							fmt.Println("b:", b,"e:",e, "message:", message)
+						}()
+					}
+					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 缁熻鍓╀綑杞︿綅
@@ -20,9 +71,11 @@
 // @router /statistic [get]
 func (c *CarController) Statistic() {
 	//sv := service.NewCarService()
-	//sta := sv.Statistic()
+	//hikStc := sv.Statistic()
+	//left := hikStc.Left
+	left := getSpaceLeft()
 	sta := models.CarStatistic{
-		Left: 80,
+		Left: left,
 	}
 	resp := code.Code{
 		Success: true,
@@ -48,8 +101,9 @@
 // @Failure 403 {string} json ""
 // @router /spaceNo [get]
 func (c *CarController) SpaceNo() {
+	userId := c.GetString("userId")
 	sv := service.NewCarService()
-	spaceNos := sv.FindSpaceNo()
+	spaceNos := sv.FindSpaceNo(userId)
 	sort.Sort(spaceNos)
 	resp := code.Code{
 		Success: true,
@@ -60,11 +114,21 @@
 	c.ServeJSON()
 }
 
+
 func (c *CarController) BindCarSpace() {
+
+	c.ServeJSON()
+}
+
+// @router /crossRecord [get]
+func (c *CarController) CrossRecord() {
 	sv := service.NewCarService()
-
-	if sv.BindCarSpace() {
-
+	records := sv.CrossRecords()
+	resp := code.Code{
+		Success: true,
+		Status:  http.StatusOK,
+		Data:    records,
 	}
+	c.Data["json"] = resp
 	c.ServeJSON()
 }
\ No newline at end of file

--
Gitblit v1.8.0