From 7c811247ecf143e08c576986a884bedadc57dd66 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 05 六月 2020 18:29:41 +0800 Subject: [PATCH] add refresh token to resp --- controllers/camera.go | 351 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 276 insertions(+), 75 deletions(-) diff --git a/controllers/camera.go b/controllers/camera.go index a639c28..03c36ee 100644 --- a/controllers/camera.go +++ b/controllers/camera.go @@ -1,43 +1,71 @@ package controllers import ( + "basic.com/pubsub/protomsg.git" "encoding/json" "fmt" "strconv" + "basic.com/valib/logger.git" + "strings" + "webserver/cache" "github.com/gin-gonic/gin" "basic.com/dbapi.git" "webserver/extend/code" "webserver/extend/util" + "webserver/service" ) type CameraController struct{} type CameraVo struct { - Id string `json:"id"` - Name string `json:"name"` - Type int `json:"type" ` - Addr string `json:"addr"` - Areaid uint `json:"areaid"` - Longitude float64 `json:"longitude"` - Latitude float64 `json:"latitude"` - Rtsp string `json:"rtsp"` - Ip string `json:"ip"` - Port int `json:"port"` - Username string `json:"username"` - Password string `json:"password"` - Brand string `json:"brand"` - Reserved string `json:"reserved"` + Id string `json:"id"` + Name string `json:"name"` + Alias string `json:"alias"` //鎽勫儚鏈虹殑鍒悕 + Type int `json:"type" ` + Addr string `json:"addr"` + Areaid string `json:"areaid"` + Longitude float32 `json:"longitude"` + Latitude float32 `json:"latitude"` + Rtsp string `json:"rtsp"` + Ip string `json:"ip"` + Port int `json:"port"` + Username string `json:"username"` + Password string `json:"password"` + Brand string `json:"brand"` + Reserved string `json:"reserved"` - IsRunning bool `json:"is_running"`//鏄惁姝e湪瑙g爜 - RunEnable bool `json:"run_enable"`//鎺у埗瀹炴椂澶勭悊鎴栬疆璇㈠鐞嗙殑寮�鍏� - RunType int `json:"run_type"`//澶勭悊绫诲瀷锛�0锛氳疆璇紝1锛氬疄鏃� - RunServerId string `json:"run_server_id"`//褰撳墠姝e湪澶勭悊鐨勫垎鏋愭湇鍔″櫒id + IsRunning bool `json:"is_running"` //鏄惁姝e湪瑙g爜 + RunEnable bool `json:"run_enable"` //鎺у埗瀹炴椂澶勭悊鎴栬疆璇㈠鐞嗙殑寮�鍏� + RunType int `json:"run_type"` //澶勭悊绫诲瀷锛�0锛氳疆璇紝1锛氬疄鏃� + RunServerId string `json:"run_server_id"` //褰撳墠姝e湪澶勭悊鐨勫垎鏋愭湇鍔″櫒id + + ResolutionWidth int `json:"resolution_width"`//鍒嗚鲸鐜囧 + ResolutionHeight int `json:"resolution_height"`//鍒嗚鲸鐜囬珮 + + Sensors []SensorVo `json:"sensors"` //浼犳劅鍣ㄥ垪琛� +} + +type Resolution struct { + Width int `json:"width"` + Height int `json:"height"` +} + +type SensorVo struct { + Id string `json:"id"` + Type string `json:"type"` + Ip string `json:"ip"` + Port int `json:"port"` + Username string `json:"username"` + Password string `json:"password"` + Threshold int `json:"threshold"` + Enable bool `json:"enable"` } // @Summary 娣诲姞鎽勫儚鏈� // @Description "浼犲叆鍖哄煙鐨刬d锛坅reaid锛夊拰鎽勫儚鏈哄悕瀛�(name) 蹇呴』锛� 鍏朵粬鍙傛暟鍙互鍦ㄦ憚鍍忔満閰嶇疆鐐瑰嚮淇濆瓨杩涜娣诲姞" +// @Security ApiKeyAuth // @Accept json // @Produce json // @Tags camera @@ -45,7 +73,7 @@ // @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"娣诲姞鍚庣殑鎽勫儚鏈轰俊鎭�"}" // @Failure 500 {string} json "{"code":500, success:false msg:"null ",data:"閿欒淇℃伅鍐呭"}" // @Router /data/api-v/camera/add [post] -func (ac CameraController) CameraAdd(c *gin.Context) { +func (cc CameraController) CameraAdd(c *gin.Context) { var cam CameraVo var api dbapi.CameraApi @@ -54,10 +82,10 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟閿欒") return } - cam.Id = util.PseudoUuid() - paramBody :=util.Struct2Map(cam) - if api.CameraAdd(paramBody) { - util.ResponseFormat(c, code.Success, cam) + paramBody := util.Struct2Map(cam) + b, data := api.CameraAdd(paramBody) + if b { + util.ResponseFormat(c, code.Success, data) return } util.ResponseFormat(c, code.ComError, err) @@ -66,6 +94,7 @@ // @Summary 鏇存柊鎽勫儚鏈� // @Description "鐢ㄤ簬鏇存柊鎽勫儚鏈烘搷浣�" +// @Security ApiKeyAuth // @Accept json // @Produce json // @Tags camera @@ -73,17 +102,19 @@ // @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"淇敼鍚庣殑鎽勫儚鏈轰俊鎭�"}" // @Failure 500 {string} json "{"code":500, success:false msg:"null",data:"閿欒淇℃伅鍐呭"}" // @Router /data/api-v/camera/update [put] -func (ac CameraController) CameraUpdate(c *gin.Context) { +func (cc CameraController) CameraUpdate(c *gin.Context) { var cam CameraVo var api dbapi.CameraApi err := c.BindJSON(&cam) if err != nil { + logger.Debug("err:",err) util.ResponseFormat(c, code.RequestParamError, "鍙傛暟閿欒") return } - paramBody :=util.Struct2Map(cam) - if api.CameraAdd(paramBody) { + logger.Debug("camera sensors:", cam.Sensors) + paramBody := util.Struct2Map(cam) + if api.CameraUpdate(paramBody) { util.ResponseFormat(c, code.Success, cam) return } @@ -93,41 +124,86 @@ // @Summary "鍒犻櫎鎽勫儚鏈�" // @Description "鏍规嵁鎽勫儚鏈篿d鍒犻櫎鎽勫儚鏈�" +// @Security ApiKeyAuth // @Produce json // @Tags camera // @Param cid path string true "鎽勫儚鏈篿d example: cid0" // @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/del/{cid} [delete] -func (ac CameraController) CameraDel(c *gin.Context) { +func (cc CameraController) CameraDel(c *gin.Context) { var api dbapi.CameraApi cid := c.Param("cid") - - if api.CameraDelete(cid){ + logger.Debug("CameraDel.cid:",cid) + if api.CameraDelete(cid) { util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛") return } - util.ResponseFormat(c, code.ComError,"鍒犻櫎澶辫触") + util.ResponseFormat(c, code.ComError, "鍒犻櫎澶辫触") } // @Summary 鏄剧ず鎽勫儚鏈� // @Description "鏄剧ず鎽勫儚鏈�" +// @Security ApiKeyAuth // @Produce json // @Tags camera // @Param cid path string true "鎽勫儚鏈篿d" -// @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"鎽勫儚鏈轰俊鎭�"}" -// @Failure 500 {string} json "{"code":500, success:false msg:"",data:"閿欒淇℃伅鍐呭"}" +// @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/show/{cid} [get] -func (ac CameraController) CameraSel(c *gin.Context) { +func (cc CameraController) CameraSel(c *gin.Context) { var api dbapi.CameraApi cid := c.Param("cid") - camera,err := api.GetCameraById(cid) - if err !=nil { - util.ResponseFormat(c,code.ComError,"鏌ヨ澶辫触") + camera, err := api.GetCameraById(cid) + if err != nil { + util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触") return } - - util.ResponseFormat(c, code.Success, camera) + //2019-11-02鏂板闇�姹傦紝鏄剧ず姣忎釜鎽勫儚鏈虹殑澶勭悊鏈嶅姟鍣ㄤ俊鎭�,褰掑睘鐨勮妭鐐规湇鍔″櫒鍚嶇О + m := util.Struct2Map(camera) + m["runServerName"] = "" + m["resolution_width"] = camera.ResolutionWidth + m["resolution_height"] = camera.ResolutionHeight + //鎽勫儚鏈哄垎杈ㄧ巼 + dRe0 := Resolution{ + Width: 0, + Height: 0, + } + dRe1 := Resolution{ + Width: 1920, + Height: 1080, + } + dRe2 := Resolution{ + Width: 2688, + Height: 1520, + } + m["resolutions"] = []Resolution{ dRe0, dRe1, dRe2 } + if camera.RunServerId !="" { + localConf, e := cache.GetServerInfo() + if e ==nil { + if camera.RunServerId == localConf.ServerId {//褰掑睘鏈彴鏈嶅姟鍣� + m["runServerName"] = localConf.ServerName + } else {//灞炰簬鍏朵粬鏈嶅姟鍣� + var clusterApi dbapi.ClusterApi + b, data := clusterApi.FindCluster() + if b && data !=nil { + cb, _ := json.Marshal(data) + var clu ClusterDb + if err := json.Unmarshal(cb, &clu);err ==nil { + if len(clu.Nodes) >0 { + for _,n :=range clu.Nodes { + if camera.RunServerId == n.NodeId { + m["runServerName"] = n.NodeName + break + } + } + } + } + } + } + } + } + util.ResponseFormat(c, code.Success, m) } @@ -162,22 +238,33 @@ return json.Marshal(test) } +// @Security ApiKeyAuth // @Summary 灏嗘憚鍍忔満鎸傚埌鎸囧畾鐨勭洰褰曟爲涓� // @Description 灏嗘憚鍍忔満鎸傚埌鎸囧畾鐨勭洰褰曟爲涓� +// @Accept x-www-form-urlencoded // @Produce json // @Tags camera -// @Param cameraId path string true "鎽勫儚鏈篿d" -// @Param areaId path string true "鐩綍鍖哄煙id" +// @Param cameraId formData string true "鎽勫儚鏈篿d" +// @Param areaId formData string true "鐩綍鍖哄煙id" // @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/cameraAreaAdd [get] -func (ac CameraController) CameraAreaAdd(c *gin.Context) { - cameraId := c.Param("cameraId") - areaId := c.Param("areaId") - fmt.Println(cameraId) - fmt.Println(areaId) +// @Router /data/api-v/camera/updateCameraArea [post] +func (cc CameraController) UpdateCameraArea(c *gin.Context) { + cameraId := c.PostForm("cameraId") + areaId := c.PostForm("areaId") + if cameraId == "" || areaId == "" { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") + return + } + var api dbapi.CameraApi + if api.UpdateCameraArea(cameraId, areaId) { + util.ResponseFormat(c,code.Success,"鏇存柊鎴愬姛") + } else { + util.ResponseFormat(c,code.ComError,"") + } } +// @Security ApiKeyAuth // @Summary 鍒犻櫎鏌愪竴涓洰褰曟爲涓嬬殑鎸囧畾鎽勫儚鏈� // @Description 鍒犻櫎鏌愪竴涓洰褰曟爲涓嬬殑鎸囧畾鎽勫儚鏈� // @Produce json @@ -187,13 +274,40 @@ // @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/cameraAreaDel [get] -func (ac CameraController) CameraAreaDel(c *gin.Context) { +func (cc CameraController) CameraAreaDel(c *gin.Context) { cameraId := c.Param("cameraId") areaId := c.Param("areaId") fmt.Println(cameraId) fmt.Println(areaId) } +// @Security ApiKeyAuth +// @Summary 鏍规嵁server鑾峰彇鎵�鏈夋憚鍍忔満鍒楄〃鍙婁俊鎭� +// @Description 鏍规嵁server鑾峰彇鎵�鏈夋憚鍍忔満鍒楄〃鍙婁俊鎭� +// @Produce json +// @Tags camera +// @Param cameraName query string false "鎽勫儚鏈哄悕绉�" +// @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/getAllCamerasByServer [get] +func (cc CameraController) GetAllCamerasByServer(c *gin.Context) { + localConf, err2 := cache.GetServerInfo() + if err2 !=nil || localConf.ServerId == "" { + logger.Debug("localConfig is wrong!!!") + util.ResponseFormat(c,code.ComError,"鏈嶅姟鍣ㄦ湰鏈烘湭閰嶇疆serverId") + return + } + var api dbapi.CameraApi + cameraName := c.Query("cameraName") + b,d := api.GetAllCamerasByServer(localConf.ServerId, cameraName) + if b { + util.ResponseFormat(c,code.Success, d) + } else { + util.ResponseFormat(c,code.ComError, "") + } +} + +// @Security ApiKeyAuth // @Summary 鑾峰彇杩愯绫诲瀷鑾峰彇鎽勫儚鏈哄垪琛� // @Description 鑾峰彇杩愯绫诲瀷鑾峰彇鎽勫儚鏈哄垪琛� // @Produce json @@ -207,76 +321,163 @@ runTypeStr := c.Query("runType") cameraName := c.Query("cameraName") - fmt.Println("runType:",runTypeStr) - fmt.Println("cameraName:",cameraName) + fmt.Println("runType:", runTypeStr) + fmt.Println("cameraName:", cameraName) runType, err := strconv.Atoi(runTypeStr) - if err !=nil || (runType !=0 && runType !=1) { - util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + if err != nil || (runType != 0 && runType != 1) { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } var api dbapi.CameraApi - b,list := api.GetCamerasByRunType(runType) + b, list := api.GetCamerasByRunType(runType, cameraName) if b { dataBytes, _ := json.Marshal(list) var cams []CameraVo json.Unmarshal(dataBytes, &cams) - util.ResponseFormat(c,code.Success,cams) + util.ResponseFormat(c, code.Success, cams) } else { - util.ResponseFormat(c,code.ComError,err) + util.ResponseFormat(c, code.ComError, err) } } +// @Security ApiKeyAuth // @Summary 鍒囨崲鎽勫儚鏈鸿繍琛屽疄鏃舵垨杞鐨勫紑鍏� // @Description 鍒囨崲鎽勫儚鏈鸿繍琛屽疄鏃舵垨杞鐨勫紑鍏� +// @Accept x-www-form-urlencoded // @Produce json // @Tags camera -// @Param cameraId query string true "鎽勫儚鏈篿d" -// @Param runEnable query bool true "寮�鍚細true锛屽叧闂細false" +// @Param cameraId formData string true "鎽勫儚鏈篿d" +// @Param runEnable formData bool true "寮�鍚細true锛屽叧闂細false" // @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/updateRunEnable [post] -func (cc CameraController) UpdateRunEnable(c *gin.Context){ +func (cc CameraController) UpdateRunEnable(c *gin.Context) { cameraId := c.PostForm("cameraId") enableStr := c.PostForm("runEnable") runEnable, err := strconv.ParseBool(enableStr) - if cameraId == "" || err !=nil { - util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") + if cameraId == "" || err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } var api dbapi.CameraApi b, data := api.UpdateRunEnable(cameraId, runEnable) - fmt.Println("data:",data) + fmt.Println("data:", data) if b { - util.ResponseFormat(c,code.Success,data) + util.ResponseFormat(c, code.Success, data) } else { - util.ResponseFormat(c,code.ComError,"鏇存柊澶辫触") + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") } } +// @Security ApiKeyAuth +// @Summary 鏇存柊搴曞浘 +// @Description 鍒锋柊搴曞浘 +// @Produce json +// @Tags camera +// @Param cid path string true "鎽勫儚鏈篿d" +// @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/updateSnapshotUrl/{cid} [get] +func(cc CameraController) UpdateSnapshotUrl(c *gin.Context){ + cid := c.Param("cid") + //filename, err := service.UpdateSnapshotUrl(cid) + if cid == "" { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") + return + } + if strings.HasPrefix(cid, File_Video_Id_Pre) || strings.HasPrefix(cid, File_Img_Id_Pre) || strings.HasPrefix(cid, File_Audio_Id_Pre) { + var fileApi dbapi.FileAnalysisApi + b, d := fileApi.Show(cid) + if b { + var file protomsg.FileAnalysis + bytes, _ := json.Marshal(d) + err := json.Unmarshal(bytes, &file) + if err == nil { + util.ResponseFormat(c, code.Success, map[string]string{ + "cameraId": cid, + "snapshotUrl": file.SnapshotUrl, + }) + return + } else { + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") + return + } + } else { + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") + return + } + } + filename, err := service.UpdateCapture(cid) + if err != nil { + logger.Debug("UpdateSnapshotUrl.err:",err) + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") + return + } + util.ResponseFormat(c, code.Success, map[string]string{ + "cameraId": cid, + "snapshotUrl": filename, + }) +} + +type CameraChangeRunVo struct { + CameraIds []string `json:"camera_ids"` + RunType int `json:"run_type"` +} + +// @Security ApiKeyAuth // @Summary 鎽勫儚鏈鸿疆璇㈠拰瀹炴椂鐘舵�佸垏鎹� // @Description 鎽勫儚鏈鸿疆璇㈠拰瀹炴椂鐘舵�佸垏鎹� // @Produce json // @Tags camera -// @Param cameraId query string true "鎽勫儚鏈篿d" -// @Param runType query int true "0锛氬疄鏃跺垏杞锛�1锛氳疆璇㈠垏瀹炴椂" +// @Param changeRunBody body controllers.CameraChangeRunVo true "鍙傛暟缁撴瀯浣�,0锛氬疄鏃跺垏杞锛�1锛氳疆璇㈠垏瀹炴椂" // @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/changeRunType [post] -func (cc CameraController) ChangeRunType(c *gin.Context){ - cameraId := c.PostForm("cameraId") - runTypeStr := c.PostForm("runType") - runType,err := strconv.Atoi(runTypeStr) - if cameraId == "" || err!=nil || (runType !=0 && runType !=1){ - util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎") +func (cc CameraController) ChangeRunType(c *gin.Context) { + var ccrVo CameraChangeRunVo + if err := c.BindJSON(&ccrVo); err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } - + paramBody := util.Struct2Map(ccrVo) var api dbapi.CameraApi - b, data := api.ChangeRunType(cameraId, runType) + b, data := api.ChangeRunType(paramBody) if b { - util.ResponseFormat(c,code.Success,data) + util.ResponseFormat(c, code.Success, data) } else { - util.ResponseFormat(c,code.ComError,"鏇存柊澶辫触") + util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触") } -} \ No newline at end of file +} + +// @Security ApiKeyAuth +// @Summary 缁熻瀹炴椂鍜岃疆璇㈢殑杩愯璺暟鎯呭喌 +// @Description 缁熻瀹炴椂鍜岃疆璇㈢殑杩愯璺暟鎯呭喌 +// @Produce json +// @Tags camera +// @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/statisticRunInfo [get] +func (cc CameraController) StatisticRunInfo(c *gin.Context) { + var api dbapi.CameraApi + b, d := api.StatisticRunInfo() + if b { + util.ResponseFormat(c,code.Success,d) + } else { + util.ResponseFormat(c,code.ComError,"") + } +} + +/* +// @Security ApiKeyAuth +// @Summary 鑾峰彇鎽勫儚鏈哄垎杈ㄧ巼 +// @Description 鑾峰彇鍒嗚鲸鐜� +// @Produce json +// @Tags camera +// @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/resolution/{cid} [get] +func (cc CameraController) Resolution(c *gin.Context) { + +} +*/ -- Gitblit v1.8.0