package controllers
|
|
import (
|
"encoding/json"
|
"fmt"
|
"strconv"
|
"webserver/extend/logger"
|
|
"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 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"` //是否正在解码
|
RunEnable bool `json:"run_enable"` //控制实时处理或轮询处理的开关
|
RunType int `json:"run_type"` //处理类型:0:轮询,1:实时
|
RunServerId string `json:"run_server_id"` //当前正在处理的分析服务器id
|
}
|
|
// @Summary 添加摄像机
|
// @Description "传入区域的id(areaid)和摄像机名字(name) 必须, 其他参数可以在摄像机配置点击保存进行添加"
|
// @Accept json
|
// @Produce json
|
// @Tags camera
|
// @Param cameraStruct body controllers.CameraVo false "struct of camera;the areaid of area's id and name of camera;must need"
|
// @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) {
|
var cam CameraVo
|
var api dbapi.CameraApi
|
|
err := c.BindJSON(&cam)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数错误")
|
return
|
}
|
cam.Id = util.PseudoUuid()
|
paramBody := util.Struct2Map(cam)
|
if api.CameraAdd(paramBody) {
|
util.ResponseFormat(c, code.Success, cam)
|
return
|
}
|
util.ResponseFormat(c, code.ComError, err)
|
|
}
|
|
// @Summary 更新摄像机
|
// @Description "用于更新摄像机操作"
|
// @Accept json
|
// @Produce json
|
// @Tags camera
|
// @Param cam body controllers.CameraVo true "id:摄像机id default:cid0 (string), areaid:摄像机关联区域id default:1 (int), name:摄像机名字 default:Testname(string) 必填; 其他参数可配 "
|
// @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) {
|
var cam CameraVo
|
var api dbapi.CameraApi
|
|
err := c.BindJSON(&cam)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数错误")
|
return
|
}
|
paramBody := util.Struct2Map(cam)
|
if api.CameraUpdate(paramBody) {
|
util.ResponseFormat(c, code.Success, cam)
|
return
|
}
|
|
util.ResponseFormat(c, code.ComError, err)
|
}
|
|
// @Summary "删除摄像机"
|
// @Description "根据摄像机id删除摄像机"
|
// @Produce json
|
// @Tags camera
|
// @Param cid path string true "摄像机id 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) {
|
var api dbapi.CameraApi
|
cid := c.Param("cid")
|
logger.Debug("CameraDel.cid:",cid)
|
if api.CameraDelete(cid) {
|
util.ResponseFormat(c, code.Success, "删除成功")
|
return
|
}
|
util.ResponseFormat(c, code.ComError, "删除失败")
|
}
|
|
// @Summary 显示摄像机
|
// @Description "显示摄像机"
|
// @Produce json
|
// @Tags camera
|
// @Param cid path 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/show/{cid} [get]
|
func (ac 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, "查询失败")
|
return
|
}
|
|
util.ResponseFormat(c, code.Success, camera)
|
|
}
|
|
type camerSdkStruct struct {
|
Sdkid string `json:"sdkid"`
|
Sdkname string `json:"sdkname"`
|
Sdkargs string `json:"sdkargs"`
|
}
|
type CamerTask struct {
|
Taskid string `json:"taskid"`
|
Taskname string `json:"taskname"`
|
}
|
|
type Sdks []camerSdkStruct
|
type ctpstruct struct {
|
CamerTask
|
Sdks `json:",omitempty"`
|
}
|
|
type Ctp map[CamerTask][]camerSdkStruct
|
|
func (cam Ctp) MarshalJSON() ([]byte, error) {
|
var test []ctpstruct
|
var temp ctpstruct
|
|
for key, value := range cam {
|
temp.CamerTask = key
|
temp.Sdks = value
|
test = append(test, temp)
|
|
}
|
return json.Marshal(test)
|
}
|
|
// @Summary 将摄像机挂到指定的目录树下
|
// @Description 将摄像机挂到指定的目录树下
|
// @Produce json
|
// @Tags camera
|
// @Param cameraId path string true "摄像机id"
|
// @Param areaId path 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)
|
}
|
|
// @Summary 删除某一个目录树下的指定摄像机
|
// @Description 删除某一个目录树下的指定摄像机
|
// @Produce json
|
// @Tags camera
|
// @Param cameraId path string true "摄像机id"
|
// @Param areaId path 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/cameraAreaDel [get]
|
func (ac CameraController) CameraAreaDel(c *gin.Context) {
|
cameraId := c.Param("cameraId")
|
areaId := c.Param("areaId")
|
fmt.Println(cameraId)
|
fmt.Println(areaId)
|
}
|
|
// @Summary 获取运行类型获取摄像机列表
|
// @Description 获取运行类型获取摄像机列表
|
// @Produce json
|
// @Tags camera
|
// @Param runType query int true "0:查轮询,1:查实时"
|
// @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/getCamerasByRunType [get]
|
func (cc CameraController) GetCamerasByRunType(c *gin.Context) {
|
|
runTypeStr := c.Query("runType")
|
cameraName := c.Query("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, "参数有误")
|
return
|
}
|
var api dbapi.CameraApi
|
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)
|
} else {
|
util.ResponseFormat(c, code.ComError, err)
|
}
|
}
|
|
// @Summary 切换摄像机运行实时或轮询的开关
|
// @Description 切换摄像机运行实时或轮询的开关
|
// @Produce json
|
// @Tags camera
|
// @Param cameraId query string true "摄像机id"
|
// @Param runEnable query 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) {
|
cameraId := c.PostForm("cameraId")
|
enableStr := c.PostForm("runEnable")
|
runEnable, err := strconv.ParseBool(enableStr)
|
if cameraId == "" || err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数有误")
|
return
|
}
|
|
var api dbapi.CameraApi
|
b, data := api.UpdateRunEnable(cameraId, runEnable)
|
fmt.Println("data:", data)
|
if b {
|
util.ResponseFormat(c, code.Success, data)
|
} else {
|
util.ResponseFormat(c, code.ComError, "更新失败")
|
}
|
}
|
|
// @Summary 更新底图
|
// @Description 刷新底图
|
// @Produce json
|
// @Tags camera
|
// @Param cid path 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/updateSnapshotUrl/{cid} [get]
|
func(cc CameraController) UpdateSnapshotUrl(c *gin.Context){
|
cid := c.Param("cid")
|
//filename, err := service.UpdateSnapshotUrl(cid)
|
filename, err := service.UpdateCapture(cid)
|
if err != nil {
|
logger.Debug("UpdateSnapshotUrl.err:",err)
|
util.ResponseFormat(c, code.ComError, "更新失败")
|
return
|
}
|
util.ResponseFormat(c, code.Success, filename)
|
}
|
|
type CameraChangeRunVo struct {
|
CameraIds []string `json:"camera_ids"`
|
RunType int `json:"run_type"`
|
}
|
|
// @Summary 摄像机轮询和实时状态切换
|
// @Description 摄像机轮询和实时状态切换
|
// @Produce json
|
// @Tags camera
|
// @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) {
|
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(paramBody)
|
if b {
|
util.ResponseFormat(c, code.Success, data)
|
} else {
|
util.ResponseFormat(c, code.ComError, "更新失败")
|
}
|
}
|