package bhomedbapi import ( "basic.com/pubsub/protomsg.git" "encoding/json" "strconv" ) type Gb28181Api struct{ } //国标配置显示 func (api Gb28181Api) Show() (flag bool,gbConfig protomsg.Gb28181Config) { netNode := getNetNode(Topic_Gb28181_Service) url := DATA_URL_PREFIX + "/gb28181/configShow" client := NewClient(WithNodes(netNode)) respBody, err := client.DoGetRequest(url, nil, nil) if err !=nil { return false,gbConfig } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return false,gbConfig } if res.Success { if bts,err := json.Marshal(res.Data);err ==nil { if err = json.Unmarshal(bts, &gbConfig);err ==nil { return true, gbConfig } } } return false, gbConfig } func (api Gb28181Api) Edit(paramBody map[string]interface{}) bool { url := DATA_URL_PREFIX + "/gb28181/configEdit" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) flag := false client := NewClient(WithNodes(netNode)) respBody, err := client.DoPostRequest(url, CONTENT_TYPE_FORM, paramBody, nil, nil) if err != nil { return flag } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return flag } return res.Success } func (api Gb28181Api) FindAreaByParentId(parentId string) (bool,interface{}) { url := DATA_URL_PREFIX + "/gb28181/findAreaByParentId" netNode := getNetNode(url2Topic(Topic_Gb28181_Service,url)) client := NewClient(WithNodes(netNode)) paramMap := make(map[string]string, 0) paramMap["parentId"] = parentId respBody, err := client.DoGetRequest(url, paramMap, nil) if err !=nil { return false,nil } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return false,nil } return res.Success, res.Data } func (api Gb28181Api) NewGbId(code string) (bool,interface{}) { url := DATA_URL_PREFIX + "/gb28181/newGbId" netNode := getNetNode(url2Topic(Topic_Gb28181_Service,url)) client := NewClient(WithNodes(netNode)) paramMap := make(map[string]string, 0) paramMap["code"] = code respBody, err := client.DoGetRequest(url, paramMap, nil) if err !=nil { return false,nil } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return false,nil } return res.Success, res.Data } //parentId 要查寻的目录树的根节点id //searchType(0:全部,1:分析摄像机,2:监控摄像机) //cameraName(摄像机名称) func (api Gb28181Api) GetGb28181CameraTree(parentId string, searchType string, cameraName string) []TreeMenu { url := DATA_URL_PREFIX + "/gb28181/tree" netNode := getNetNode(url2Topic(Topic_Gb28181_Service,url)) var result []TreeMenu client := NewClient(WithNodes(netNode)) params := make(map[string]string, 0) params["parentId"] = parentId params["searchType"] = searchType params["cameraName"] = cameraName respBody, err := client.DoGetRequest(url, params, nil) if err != nil { return nil } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return nil } bytes, _ := json.Marshal(res.Data) if err = json.Unmarshal(bytes, &result);err !=nil{ return nil } return result } //国标树刷新 func (api Gb28181Api) Gb28181TreeRefresh(id string) bool { url := DATA_URL_PREFIX + "/gb28181/treeRefresh" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) flag := false client := NewClient(WithNodes(netNode)) paramBody := map[string]interface{}{ "id":id, } respBody, err := client.DoPostRequest(url, CONTENT_TYPE_FORM, paramBody, nil, nil) if err != nil { return flag } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return flag } flag = res.Success return flag } //国标树删除 func (api Gb28181Api) Gb28181TreeDelete() bool { url := DATA_URL_PREFIX + "/gb28181/treeDelete" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) flag := false client := NewClient(WithNodes(netNode)) respBody, err := client.DoPostRequest(url, CONTENT_TYPE_FORM, nil, nil, nil) if err != nil { return flag } var res Result if err = json.Unmarshal(respBody, &res); err != nil { return flag } flag = res.Success return flag } //获取本节点的所有国标摄像机 func (api Gb28181Api) GetAllCamerasByServer(serverId string,cameraName string) (b bool,cams []protomsg.Camera) { url := DATA_URL_PREFIX + "/gb28181/getAllCamerasByServer" netNode := getNetNode(url2Topic(Topic_Gb28181_Service,url)) client := NewClient(WithNodes(netNode)) paramQuery := make(map[string]string,0) paramQuery["serverId"] = serverId paramQuery["cameraName"] = cameraName body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { return false,nil } dataBytes, _ := json.Marshal(res.Data) if err := json.Unmarshal(dataBytes, &cams);err !=nil { return false,nil } return res.Success,cams } //查找地图上的国标摄像机 func (api Gb28181Api) FindOnMap(isOnMap bool, floor int, cameraName string) (b bool, cams []protomsg.Camera) { url := DATA_URL_PREFIX + "/gb28181/camera/findOnMap" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody:= map[string]interface{}{ "isOnMap": isOnMap, "floor": floor, "cameraName": cameraName, } body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false,nil } if res.Success { if bts, e := json.Marshal(res.Data);e == nil { if e = json.Unmarshal(bts, &cams);e ==nil { return true, cams } } } return false,nil } //更新摄像机经纬度以及楼层 func (api Gb28181Api) UpdatePos(id string, floor int, longitude float32, latitude float32) bool { url := DATA_URL_PREFIX + "/gb28181/camera/updatePos" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody:= map[string]interface{}{ "id": id, "floor": floor, "longitude": longitude, "latitude": latitude, } body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false } return res.Success } //查集群内所有国标摄像机 func (api Gb28181Api) NodeCamera() (bool, interface{}) { url := DATA_URL_PREFIX + "/gb28181/camera/nodeCamera" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) body, err := client.DoGetRequest(url, nil, nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { return false,nil } return res.Success, res.Data } //通过id获取国标进程中的摄像机坐标设置 func (api Gb28181Api) Coord(cameraId string) (bool, interface{}) { url := DATA_URL_PREFIX + "/gb28181/camera/coord" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramQuery := map[string]string { "cameraId": cameraId, } body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { return false,nil } return res.Success, res.Data } //更新国标进程中摄像机的转换坐标 func (api Gb28181Api) UpdateCoord(paramBody map[string]interface{}) bool { url := DATA_URL_PREFIX + "/gb28181/camera/updateCoord" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false } return res.Success } func (api Gb28181Api) CameraUpdate(paramBody map[string]interface{}) bool { url := DATA_URL_PREFIX + "/gb28181/camera/update" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) body, err := client.DoPutRequest(url,CONTENT_TYPE_JSON,paramBody,nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { return false } return res.Success } func (api Gb28181Api) UpdateSnapshotUrl(cameraId string, snapshot string) bool { url := DATA_URL_PREFIX + "/gb28181/camera/updateSnapshot" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody :=make(map[string]interface{},0) paramBody["snapshot"] = snapshot paramBody["cameraId"] = cameraId body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false } return res.Success } //通过cameraId获取摄像机信息 func (api Gb28181Api) GetCameraById(cameraId string) (camera protomsg.Camera, err error) { url := DATA_URL_PREFIX + "/gb28181/camera/show" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramQuery := map[string]string { "cid": cameraId, } body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return camera, err } var res Result if err = json.Unmarshal(body, &res); err != nil { return camera,err } bytes, _ := json.Marshal(res.Data) err = json.Unmarshal(bytes, &camera) return camera, err } func (api Gb28181Api) UpdateCameraArea(cameraId string, areaId string) bool { url := DATA_URL_PREFIX + "/gb28181/camera/updateCameraArea" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody := map[string]interface{} { "cameraId": cameraId, "areaId": areaId, } body, err := client.DoPostRequest(url, CONTENT_TYPE_FORM, paramBody, nil,nil) if err !=nil { return false } var res Result if err = json.Unmarshal(body, &res);err != nil { return false } return res.Success } func (api Gb28181Api) FindAll(cameraName string, runType string, cameraId string, areaId string) (cameras []protomsg.Camera) { url := DATA_URL_PREFIX + "/gb28181/camera/showAll" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramQuery := map[string]string { "cameraName": cameraName, "runType": runType, "cameraId": cameraId, "areaId": areaId, } body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return nil } bytes, _ := json.Marshal(res.Data) err = json.Unmarshal(bytes, &cameras) return cameras } //根据运行类型获取摄像机列表 //runType(0:获取轮询列表,1:获取实时列表) func (api Gb28181Api) GetCamerasByRunType(runType int,cameraName string)(flag bool,cameras []protomsg.Camera){ url := DATA_URL_PREFIX + "/gb28181/camera/getCamerasByRunType" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramQuery := make(map[string]string,2) paramQuery["runType"]=strconv.Itoa(runType) paramQuery["cameraName"] = cameraName body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { return false,nil } b, err := json.Marshal(res.Data) if err !=nil { logPrint("unmarshal GetCamerasByRunType.result err") return false,nil } if err = json.Unmarshal(b, &cameras);err !=nil { return false,nil } else { return true,cameras } } func (api Gb28181Api) UpdateRunEnable(cameraId string,runEnable bool) (bool,interface{}){ url := DATA_URL_PREFIX + "/gb28181/camera/updateRunEnable" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody :=make(map[string]interface{},0) paramBody["cameraId"] = cameraId paramBody["runEnable"] = runEnable body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false,nil } return res.Success,res.Data } func (api Gb28181Api) UpdateIsRunningState(cameraId string,isRunning bool) (bool,interface{}){ url := DATA_URL_PREFIX + "/gb28181/camera/updateIsRunningState" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody :=make(map[string]interface{},0) paramBody["cameraId"] = cameraId paramBody["isRunning"] = isRunning body,err := client.DoPostRequest(url,CONTENT_TYPE_FORM, paramBody,nil,nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false,nil } return res.Success,res.Data } func (api Gb28181Api) UpdateIsRunningAll(cameraIds []string) (bool,interface{}){ url := DATA_URL_PREFIX + "/gb28181/camera/updateIsRunningAll" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) paramBody :=make(map[string]interface{},0) paramBody["cameraIds"] = cameraIds body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false,nil } return res.Success,res.Data } //批量切换摄像机轮询或实时状态 func (api Gb28181Api) ChangeRunType(paramBody map[string]interface{}) (bool,interface{}){ url := DATA_URL_PREFIX + "/gb28181/camera/changeRunType" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false,nil } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false,nil } return res.Success,res.Data } func (api Gb28181Api) SaveNotExistOrUpdate(paramBody map[string]interface{}) bool { url := DATA_URL_PREFIX + "/gb28181/saveNotExistOrUpdate" netNode := getNetNode(url2Topic(Topic_Gb28181_Service, url)) client := NewClient(WithNodes(netNode)) body,err := client.DoPostRequest(url,CONTENT_TYPE_JSON, paramBody,nil,nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { logPrint(err) return false } return res.Success }