From 0b01e7cb78f7e64e52b6faf30f1e7e2b71acf784 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 31 十月 2019 17:37:30 +0800
Subject: [PATCH] fix: camera Pan-Tilt control

---
 /dev/null                |   32 ----------------
 config/test.yaml         |    1 
 controllers/cameraPTZ.go |   71 +++++++++++++++++++++++++++++++++++
 extend/sys/system.go     |    2 
 extend/config/config.go  |    3 +
 router/router.go         |    4 +-
 6 files changed, 77 insertions(+), 36 deletions(-)

diff --git a/config/test.yaml b/config/test.yaml
index 9365366..655231c 100644
--- a/config/test.yaml
+++ b/config/test.yaml
@@ -34,6 +34,7 @@
   -
     value: 100
     color: '#5d0000'
+  ptzSpeed: 50
 database:
   driver: sqlite
   name: sqlite3
diff --git a/controllers/cameraPTZ.go b/controllers/cameraPTZ.go
new file mode 100644
index 0000000..2cb0af2
--- /dev/null
+++ b/controllers/cameraPTZ.go
@@ -0,0 +1,71 @@
+package controllers
+
+import (
+	"basic.com/dbapi.git"
+	"basic.com/gb28181api.git"
+
+	"webserver/extend/code"
+	"webserver/extend/config"
+	"webserver/extend/util"
+
+	"github.com/gin-gonic/gin"
+)
+
+type PanTiltZoomController struct {
+}
+
+type PTZInstruct struct {
+	CameraId   string `json:"cameraId"`   //鎽勫儚鏈篿d
+	CameraType int    `json:"cameraType"` //鎽勫儚鏈虹被鍨�
+	PTZType    string `json:"ptzType"`    //鎺у埗绫诲瀷 left right top ... stop
+}
+
+// @Summary 浜戝彴
+// @Description 鎽勫儚鏈轰簯鍙版帶鍒�
+// @Security ApiKeyAuth
+// @Produce json
+// @Tags camera
+// @Param ptzBody body controllers.PTZInstruct true "鎺у埗绫诲瀷锛歶p,down,left,right,zoomin,zoomout,stop"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
+// @Router /data/api-v/camera/ptzControl [post]
+func (ptz PanTiltZoomController) Move(c *gin.Context) {
+	var param PTZInstruct
+	if err := c.BindJSON(&param); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+		return
+	}
+
+	ptzSpeed := config.Server.PTZSpeed
+	if ptzSpeed == 0 {
+		ptzSpeed = 50
+	}
+
+	if param.CameraType == 1 {
+		var api dbapi.SysSetApi
+		r, gb28182Config := api.Gb28181ConfigShow()
+
+		if r {
+			conf, ok := gb28182Config.(map[string]interface{})
+			if ok {
+				gb28181api.Init(conf["ServerIp"].(string), int(conf["ServerPort"].(float64)))
+			} else {
+				util.ResponseFormat(c, code.ComError, "鍥芥爣閰嶇疆璇诲彇澶辫触")
+				return
+			}
+
+		} else {
+			util.ResponseFormat(c, code.ComError, "鍥芥爣鎺ュ彛鏌ヨ澶辫触")
+			return
+		}
+
+		var gbApi gb28181api.Gb28181Api
+		if r := gbApi.SetCameraPtz(param.CameraId, param.PTZType, ptzSpeed); r {
+			util.ResponseFormat(c, code.Success, "")
+		} else {
+			util.ResponseFormat(c, code.Success, "鍥芥爣鎺ュ彛鎿嶄綔澶辫触")
+		}
+	} else {
+		util.ResponseFormat(c, code.Success, "涓嶆敮鎸佺殑鎽勫儚鏈虹被鍨�")
+	}
+}
diff --git a/controllers/panTilt.go b/controllers/panTilt.go
deleted file mode 100644
index 5dd318c..0000000
--- a/controllers/panTilt.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package controllers
-
-import (
-	"webserver/extend/code"
-	"webserver/extend/util"
-
-	"github.com/gin-gonic/gin"
-)
-
-type PanTiltController struct {
-}
-
-type PTInstruct struct {
-	ChannelId string `json:"channelId"` //鏈嶅姟鍣╥d
-	PTZType   string `json:"ptzType"`   //杞鍛ㄦ湡
-	PTZParam  int32  `json:"ptzParam"`  //寤舵椂鏃堕棿
-}
-
-func (controller PanTiltController) Controlling(c *gin.Context) {
-	var param PTInstruct
-	if err := c.BindJSON(&param); err != nil {
-		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
-		return
-	}
-
-	b := true
-	if b {
-		util.ResponseFormat(c, code.Success, "")
-	} else {
-		util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触")
-	}
-}
diff --git a/extend/config/config.go b/extend/config/config.go
index c775712..2ab67ab 100644
--- a/extend/config/config.go
+++ b/extend/config/config.go
@@ -26,8 +26,9 @@
 	ChannelCount    string `mapstructure: "channelCount"`    //閫氶亾涓暟
 	DiskCount       string `mapstructure: "diskCount"`       //纭洏涓暟
 
-	SudoPassword  string      `mapstructure: "sudoPassword"`
+	SudoPassword  string      `mapstructure: "sudoPassword"` //绯荤粺瀵嗙爜
 	SysThresholds []threshold `mapstructure: "sysThresholds"`
+	PTZSpeed      int         `mapstructure: "ptzSpeed"` // 浜戝彴绉诲姩閫熷害
 }
 
 var Server = &server{}
diff --git a/extend/sys/system.go b/extend/sys/system.go
index b1bb46d..647917d 100644
--- a/extend/sys/system.go
+++ b/extend/sys/system.go
@@ -119,7 +119,7 @@
 func NTPConfig() (bool, string, string) {
 	status, server, interval := false, "", ""
 
-	cron, _ := execRootCommand("crontab -l | grep ntpdate | sed -z -r 's/([^0-9* ]+)(.+)//g'")
+	cron, _ := execRootCommand("crontab -l | grep ntpdate | tr -d '\n'")
 	if task := string(cron); task != "" {
 		status = true
 		slice := strings.Split(task, " ")
diff --git a/router/router.go b/router/router.go
index 93aa948..336f552 100644
--- a/router/router.go
+++ b/router/router.go
@@ -42,7 +42,7 @@
 	sysMenuController := new(controllers.SysMenuController)
 	clusterController := new(controllers.ClusterController)
 	sysRoleController := new(controllers.RoleController)
-	ptController := new(controllers.PanTiltController)
+	ptzController := new(controllers.PanTiltZoomController)
 
 	sysApi := r.Group("/data/api-u/sys")
 	{
@@ -101,7 +101,7 @@
 		camera.POST("/changeRunType", cameraController.ChangeRunType)
 		camera.GET("/getAllCamerasByServer", cameraController.GetAllCamerasByServer)
 
-		camera.POST("/ptControl", ptController.Controlling)
+		camera.POST("/ptzControl", ptzController.Move)
 		camera.GET("/statisticRunInfo", cameraController.StatisticRunInfo)
 	}
 

--
Gitblit v1.8.0