From f3a497f4e7ebe5611ccfb4c3a6e9657ad706bc15 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 17 五月 2021 18:26:51 +0800
Subject: [PATCH] 修改GetAllCamerasAndGroupsByDevID,一次返回所有的摄像机和资源分组

---
 gb28181Api.go |   45 ++++++++++++++++++++++++++++++---------------
 1 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/gb28181Api.go b/gb28181Api.go
index 4ff8aea..0dba4a7 100644
--- a/gb28181Api.go
+++ b/gb28181Api.go
@@ -6,6 +6,7 @@
 	"fmt"
 	"log"
 	"strconv"
+	urlLib "net/url"
 )
 
 func SmartPrintStruct(src interface{}) string {
@@ -26,13 +27,16 @@
 //SetPlatformServerInfo 璁剧疆鏈嶅姟鍣ㄤ俊鎭�
 func (api Gb28181Api) SetPlatformServerInfo(serverInfo GbServerInfo) bool {
 	serverInfo.GbUsername = serverInfo.PublicID   //閴存潈鍚嶅瓧涓嶇敓鏁堬紝鏈�濂藉拰璁惧id涓�鑷�
-	url := BASIC_URL + DATA_URL_PREFIX + "/set_platform_server?" +
-		//"gbsvrname=" + serverInfo.Name +
-		"gbsvrid=" + serverInfo.PublicID +
-		"&gbsvrport=" + strconv.Itoa(serverInfo.GbServerPort) +
-		"&registerauth=" + strconv.FormatBool(serverInfo.RegisterAuth) +
-		"&gbusername=" + serverInfo.GbUsername +
-		"&gbpasswd=" + serverInfo.GbPasswd
+
+	u := urlLib.Values{}
+	u.Set("gbsvrname", serverInfo.Name)
+	u.Set("gbsvrid", serverInfo.PublicID)
+	u.Set("gbsvrport", strconv.Itoa(serverInfo.GbServerPort))
+	u.Set("registerauth", strconv.FormatBool(serverInfo.RegisterAuth))
+	u.Set("gbusername", serverInfo.GbUsername)
+	u.Set("gbpasswd", serverInfo.GbPasswd)
+	str := u.Encode()
+	url := BASIC_URL + DATA_URL_PREFIX + "/set_platform_server?" + str
 	log.Println("url:", url)
 
 	client := NewClient()
@@ -140,7 +144,7 @@
 //pageNo (鏁板瓧)   鎸囧畾鑾峰彇绗嚑椤碉紝绗竴娆′负1锛岃繑鍥炴�婚〉鏁帮紝鎬绘潯鏁扮瓑锛屽啀鏍规嵁杩欎簺淇℃伅鍘诲啀娆℃煡璇紝鐩村埌鍙栧畬鍏ㄩ儴
 //srcType (瀛楃涓�) "all"-琛ㄧず鑾峰彇璁惧鐨勬墍鏈夎祫婧�  "node"-鐖惰妭鐐逛笅鐨勭涓�绾ц祫婧�
 //娉ㄦ剰锛氭牴鎹�"restype"瀛楁锛屽拷鐣ヨ祫婧愮粍锛屽彧淇濈暀閫氶亾璧勬簮------"restype"锛�(鏁板瓧)1-閫氶亾璧勬簮 2-璧勬簮缁�
-func (api Gb28181Api) getCamsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) {
+func (api Gb28181Api) getCamsAndGroupsByDevAndPage(devID string, srcType string, pageNo int) (CamerasInOnePage, bool) {
 	url := BASIC_URL + DATA_URL_PREFIX + "/get_all_channel/" + devID + "/" + srcType + "/" + strconv.Itoa(pageNo)
 	client := NewClient()
 
@@ -164,6 +168,14 @@
 	if len(camerasPerPage.Data) > 0 {
 		for i := 0; i < len(camerasPerPage.Data); i++ {
 			if camerasPerPage.Data[i].ResType == 2 {
+				di := camerasPerPage.Data[i]
+				camerasPerPage.Groups = append(camerasPerPage.Groups, DomainUnit{
+					DevPubID: di.DevPubID,
+					ResType: 2,
+					PublicID: di.PublicID,
+					Name: di.Name,
+					ParentID: di.ParentID,
+				})
 				camerasPerPage.Data = append(camerasPerPage.Data[:i], camerasPerPage.Data[i+1:]...)
 				i--
 			}
@@ -175,25 +187,27 @@
 
 //GetAllCamerasByDevID 鑾峰彇鍏ㄩ儴涓嬬骇璁惧鐨勬憚鍍忔満鍒楄〃
 //devID  (瀛楃涓�)  娉ㄥ唽鐨勮澶囩殑20浣峣d
-func (api Gb28181Api) GetAllCamerasByDevID(devID string) ([]CameraInfo, bool) {
+func (api Gb28181Api) GetAllCamerasAndGroupsByDevID(devID string) ([]CameraInfo, []DomainUnit, bool) {
 	var cameraSlice []CameraInfo
-	camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", 1)
+	var groups 		[]DomainUnit
+	camerasPerPage, flag := api.getCamsAndGroupsByDevAndPage(devID, "all", 1)
 	if !flag {
 		log.Println("GetCamsByDevAndPage Error, deviceSlice is nil")
-		return cameraSlice, false
+		return cameraSlice, groups, false
 	}
 	cameraSlice = camerasPerPage.Data
-
+	groups = camerasPerPage.Groups
 	for i := 1; i < camerasPerPage.TotalPage; i++ {
-		camerasPerPage, flag := api.getCamsByDevAndPage(devID, "all", i+1)
+		camerasPerPage, flag := api.getCamsAndGroupsByDevAndPage(devID, "all", i+1)
 		if !flag {
 			log.Println("GetCamsByDevAndPage Error! devID:" + devID + ",type:all,pageno:" + strconv.Itoa(i+1) + " ,cameraSlice is not completed")
-			return cameraSlice, false
+			return cameraSlice, groups, false
 		}
 		cameraSlice = append(cameraSlice, camerasPerPage.Data...)
+		groups = append(groups, camerasPerPage.Groups...)
 	}
 
-	return cameraSlice, true
+	return cameraSlice, groups, true
 }
 
 //GetAllDomainUnit get all domainunit 鑾峰彇鎵�鏈夎鏀垮尯鍩�
@@ -224,6 +238,7 @@
 //GetAllCamerasByDomainUnit  get all cameras by domainunit 鑾峰彇鎵�鏈夎鏀垮尯鍩熶笅鐨勮澶�
 func (api Gb28181Api) getAllCamerasByDomainUnitAndPage(domainpubid string, pageNo int) (CamerasInOnePage, bool) {
 	url := BASIC_URL + DATA_URL_PREFIX + "/get_domainunit_channel/" + domainpubid + "/" + strconv.Itoa(pageNo)
+	log.Println("getAllCamerasByDomainUnitAndPage:", url)
 	client := NewClient()
 
 	var camerasPerPage CamerasInOnePage

--
Gitblit v1.8.0