package dbapi import ( "basic.com/pubsub/protomsg.git" "encoding/json" "fmt" "strconv" ) type CameraApi struct{ Ip string Port int } func (api CameraApi) getBasicUrl() string { if api.Ip == "" { return BASIC_URL } if api.Ip == "" { api.Ip = DEFAULT_IP } if api.Port == 0 { api.Port = DEFAULT_PORT } return "http://"+api.Ip+":"+strconv.Itoa(api.Port) } func (api CameraApi) CameraAdd(paramBody map[string]interface{}) (bool,interface{}) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/add" client := NewClient() 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 { return false,nil } return res.Success,res.Data } func (api CameraApi) CameraUpdate(paramBody map[string]interface{}) bool { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/update" client := NewClient() 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 CameraApi) UpdateSnapshotUrl(cameraId string, snapshot string) bool { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/updateSnapshot" client := NewClient() 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 { fmt.Println(err) return false } return res.Success } func (api CameraApi) CameraDelete(cid string) bool { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/del/"+cid client := NewClient() paramMap := make(map[string]string,0) paramMap["cid"] = cid body, err := client.DoDeleteRequest(url,CONTENT_TYPE_FORM,nil,paramMap) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { return false } return res.Success } //通过cameraId获取摄像机信息 func (api CameraApi) GetCameraById(cameraId string) (camera protomsg.Camera, err error) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/show/" + cameraId client := NewClient() body, err := client.DoGetRequest(url, nil, 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 CameraApi) FindAll() (cameras []protomsg.Camera) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/showAll" client := NewClient() body, err := client.DoGetRequest(url, nil, nil) if err != nil { return nil } var res Result if err = json.Unmarshal(body, &res); err != nil { fmt.Println(err) return nil } bytes, _ := json.Marshal(res.Data) err = json.Unmarshal(bytes, &cameras) return cameras } func (api CameraApi) GetAllCamerasByServer(serverId string,cameraName string) (bool,interface{}) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/getAllCamerasByServer" client := NewClient() 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 } return res.Success,res.Data } //获取所有摄像机的信息以及其所有任务 func (api CameraApi) FindAllCameraAndTask() (cameraTasks []protomsg.CameraAndTaskInfo){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/queryCameraAndTaskInfo" client := NewClient() body, err := client.DoGetRequest(url, nil, nil) if err != nil { return nil } var res Result if err = json.Unmarshal(body, &res); err != nil { fmt.Println(err) return nil } bytes, _ := json.Marshal(res.Data) err = json.Unmarshal(bytes, &cameraTasks) return cameraTasks } func (api CameraApi) SaveCameraPolygon(paramBody map[string]interface{}) (bool,interface{}) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/save" client := NewClient() 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 { fmt.Println(err) return false,nil } return res.Success,res.Data } func (api CameraApi) DeleteCameraPolygon(id string) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/delete" client := NewClient() paramQuery := make(map[string]string,0) paramQuery["id"]=id 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 CameraApi) FindAllPolygons() ([]protomsg.CameraPolygon) { polygons := make([]protomsg.CameraPolygon,0) url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/findAll" client := NewClient() body, err := client.DoGetRequest(url, nil, nil) if err != nil { return nil } var res Result if err = json.Unmarshal(body, &res); err != nil { return nil } dataBytes, _ := json.Marshal(res.Data) if err := json.Unmarshal(dataBytes, &polygons);err !=nil { return nil } return polygons } func (api CameraApi) FindPolygonsByCameraId(cameraId string) (bool,interface{}) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/findByCameraId" client := NewClient() paramQuery := make(map[string]string,0) paramQuery["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 true,res.Data } //新增或更新时间规则 func (api CameraApi) SaveCameraTimerule(paramBody map[string]interface{}) (bool,interface{}) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/cameraTimerule/save" client := NewClient() 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 { fmt.Println(err) return false,nil } return res.Success,res.Data } func (api CameraApi) DeleteCameraTimerule (id string) bool { url := api.getBasicUrl() + DATA_URL_PREFIX + "/cameraTimerule/delete" client := NewClient() paramQuery := make(map[string]string,0) paramQuery["id"]=id body, err := client.DoGetRequest(url, paramQuery, nil) if err != nil { return false } var res Result if err = json.Unmarshal(body, &res); err != nil { return false } return res.Success } //根据摄像机id查找所有的时间规则 func (api CameraApi) FindAllTimeRules() (flag bool,rules []protomsg.CameraTimerule) { url := api.getBasicUrl() + DATA_URL_PREFIX + "/cameraTimerule/findAll" client := NewClient() 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 } dataBytes, _ := json.Marshal(res.Data) if err := json.Unmarshal(dataBytes, &rules);err !=nil { return false,nil } return true,rules } func (api CameraApi) UpdateDefenceStateByPolygonId(polygonId string,state string) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/updateDefenceStateByPolygonId" client := NewClient() paramQuery :=make(map[string]string,0) paramQuery["polygonId"] = polygonId paramQuery["defence_state"]=state 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 true,res.Data } func (api CameraApi) UpdateDefenceStateByCameraId(cameraId string,state string) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/polygon/updateDefenceStateByCameraId" client := NewClient() paramQuery :=make(map[string]string,0) paramQuery["cameraId"] = cameraId paramQuery["defence_state"]=state 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 true,res.Data } //根据运行类型获取摄像机列表 //runType(0:获取轮询列表,1:获取实时列表) func (api CameraApi) GetCamerasByRunType(runType int,cameraName string)(flag bool,cameras []protomsg.Camera){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/getCamerasByRunType" client := NewClient() 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 { fmt.Println("unmarshal GetCamerasByRunType.result err") return false,nil } if err = json.Unmarshal(b, &cameras);err !=nil { return false,nil } else { return true,cameras } } func (api CameraApi) UpdateRunEnable(cameraId string,runEnable bool) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/updateRunEnable" client := NewClient() 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 { fmt.Println(err) return false,nil } return res.Success,res.Data } func (api CameraApi) UpdateIsRunningState(cameraId string,isRunning bool) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/updateIsRunningState" client := NewClient() 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 { fmt.Println(err) return false,nil } return res.Success,res.Data } //批量切换摄像机轮询或实时状态 func (api CameraApi) ChangeRunType(paramBody map[string]interface{}) (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/changeRunType" client := NewClient() 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 { fmt.Println(err) return false,nil } return res.Success,res.Data } func (api CameraApi) StatisticRunInfo() (bool,interface{}){ url := api.getBasicUrl() + DATA_URL_PREFIX + "/camera/statisticRunInfo" client := NewClient() 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 true,res.Data }