sunty
2020-08-20 9d88c7c467f8d93af4aab9ba0b6d6c01c2ffc546
controllers/cameraTask.go
@@ -2,84 +2,105 @@
import (
   "basic.com/dbapi.git"
   "fmt"
   "basic.com/pubsub/esutil.git"
   "basic.com/valib/logger.git"
   "encoding/json"
   "github.com/gin-gonic/gin"
   "strconv"
   "webserver/cache"
   "webserver/extend/code"
   "webserver/extend/config"
   "webserver/extend/util"
   "webserver/models"
   "webserver/vo"
)
//
//import (
//   "basic.com/dbapi.git"
//   "basic.com/pubsub/esutil.git"
//   "encoding/json"
//   "fmt"
//   "github.com/gin-gonic/gin"
//   "strconv"
//   "webserver/cache"
//   "webserver/extend/code"
//   "webserver/extend/config"
//   "webserver/extend/util"
//   "webserver/models"
//)
//
type CameraTaskController struct {
}
//
//用于接收多个摄像机的id,以逗号隔开
type MultiCamera struct {
   CameraIds []string `json:"cameraIds"`
}
type CameraTaskVo struct {
   Id          string `json:"id"`
   CameraId   string `json:"camera_id"`
   TaskId      string `json:"task_id"` //任务id  来自于任务表
   TimeRule    string `json:"time_rule"`
   ReactRule   string `json:"react_rule"`
   ReactDevice string `json:"react_device"`
   DelFlag     bool   `json:"del_flag"`
   UpdateFlag  bool   `json:"update_flag"`
   Enable      int    `json:"enable"`                //默认启用
   Sort        int    `json:"sort"`    //任务排序
   IsFull      int    `json:"is_full"` //参数是否设置完整
   LinkTaskId string `json:"link_task_id"` //联动任务组
}
type CameraTaskSaveArg struct {
   Id string                  `json:"id"`
   SetType string              `json:"set_type" example:"batchTask:批量任务,linkTask:联动任务"`//任务设置方式(批量设置还是联动任务设置)
   CameraIds []string            `json:"camera_ids"`
   TaskId    string              `json:"task_id"`
   GroupId   string               `json:"group_id"`
   GroupText string            `json:"group_text"`
   GroupRule   []CameraTaskArgVo `json:"group_rule"`
}
type CameraTaskArgGroup struct {
   Id string `json:"id"`
   CameraTaskId string `json:"camera_task_id"`
   GroupId string `json:"group_id"`
   GroupText string `json:"group_text"`
   AlarmLevel int `json:"alarm_level"`
}
type CameraTaskArgVo struct {
   Id string `json:"id"`
   CameraId string    `json:"camera_id"`//摄像机id
   PolygonId string `json:"polygon_id"`//多边形id
   SdkId string `json:"sdk_id"`//算法id
   SdkArgAlias string `json:"sdk_arg_alias"`//算法参数别名
   Operator string `json:"operator"`//计算方式=,>,>=等等
   OperatorType string `json:"operator_type"`//计算的值类型
   SdkArgValue string `json:"sdk_arg_value"` //算法参数值设置
   RuleWithPre string `json:"rule_with_pre"` //与下一条的逻辑运算符
   GroupId string `json:"group_id"`
}
type LinkCameraTasksVo struct {
}
//
//type CameraTaskVo struct {
//   Id          string `json:"id"`
//   CameraId   string `json:"camera_id"`
//   TaskId      string `json:"task_id"` //任务id  来自于任务表
//   TimeRule    string `json:"time_rule"`
//   ReactRule   string `json:"react_rule"`
//   ReactDevice string `json:"react_device"`
//   DelFlag     bool   `json:"del_flag"`
//   UpdateFlag  bool   `json:"update_flag"`
//   Enable      int    `json:"enable"`                //默认启用
//   Sort        int    `json:"sort"`    //任务排序
//   IsFull      int    `json:"is_full"` //参数是否设置完整
//   LinkTaskId string `json:"link_task_id"` //联动任务组
//}
//
//type CameraTaskSaveArg struct {
//   Id string                  `json:"id"`
//   SetType string              `json:"set_type" example:"batchTask:批量任务,linkTask:联动任务"`//任务设置方式(批量设置还是联动任务设置)
//   CameraIds []string            `json:"camera_ids"`
//   TaskId    string              `json:"task_id"`
//   GroupId   string               `json:"group_id"`
//   GroupText string            `json:"group_text"`
//   GroupRule   []CameraTaskArgVo `json:"group_rule"`
//}
//
//type CameraTaskArgGroup struct {
//   Id string `json:"id"`
//   CameraTaskId string `json:"camera_task_id"`
//   GroupId string `json:"group_id"`
//   GroupText string `json:"group_text"`
//   AlarmLevel int `json:"alarm_level"`
//}
//
//type CameraTaskArgVo struct {
//   Id string `json:"id"`
//   CameraId string    `json:"camera_id"`//摄像机id
//   PolygonId string `json:"polygon_id"`//多边形id
//   SdkId string `json:"sdk_id"`//算法id
//   SdkArgAlias string `json:"sdk_arg_alias"`//算法参数别名
//   Operator string `json:"operator"`//计算方式=,>,>=等等
//   OperatorType string `json:"operator_type"`//计算的值类型
//   SdkArgValue string `json:"sdk_arg_value"` //算法参数值设置
//   RuleWithPre string `json:"rule_with_pre"` //与下一条的逻辑运算符
//   GroupId string `json:"group_id"`
//}
//
//type LinkCameraTasksVo struct {
//
//}
//
type CameraTaskInfoVo struct {
   Camera models.Camera `json:"camera"`
   Tasks []models.Task `json:"tasks"`
   Polygon CameraPolygonVo `json:"polygon"`
}
//
// @Security ApiKeyAuth
// @Summary 查询所有任务
// @Description "查询所有任务"
// @Accept json
// @Produce json
// @Tags CameraTask
// @Tags 摄像机规则
// @Param cameraIds body controllers.MultiCamera false "摄像机id数组"
// @Success 200 {string} json "{"code":200, success:true,  msg:"请求处理成功", data:"所有任务信息"}"
// @Failure 500 {string} json "{"code":500, success:false   msg:"",data:"错误信息内容"}"
@@ -87,248 +108,297 @@
func (ctc CameraTaskController) FindTasksByCameraIds(c *gin.Context){
   var mulCamera MultiCamera
   c.BindJSON(&mulCamera)
   var api dbapi.CameraTaskApi
   flag, data := api.FindTasksByCameraIds(mulCamera.CameraIds)
   if flag {
      util.ResponseFormat(c,code.Success,data)
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
   var api dbapi.CameraRuleApi
// @Security ApiKeyAuth
// @Summary 摄像机添加一个任务
// @Description 摄像机添加一个任务
// @Accept x-www-form-urlencoded
// @Produce json
// @Tags CameraTask
// @Param cameraId formData string true "摄像机id"
// @Param taskId 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/cameraTask/addTask [post]
func (ctc CameraTaskController) AddTask(c *gin.Context) {
   cameraId := c.PostForm("cameraId")
   taskId := c.PostForm("taskId")
   if cameraId == "" || taskId == "" {
      util.ResponseFormat(c,code.RequestParamError,"参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   if b,data := api.AddTask(cameraId, taskId);b {
      util.ResponseFormat(c,code.AddSuccess, data)
   } else {
      if data.(string) == "此国标摄像机已在其它服务器配置任务!" {
         util.ResponseFormat(c,code.AddTaskErr, data)
      } else {
         util.ResponseFormat(c,code.ComError, data)
   var camRuleArr []vo.CameraAndRules
   for _,camId :=range mulCamera.CameraIds {
      if b, d := api.FindByCameraId(camId); b {
         bytes, _ := json.Marshal(d)
         var camTInfo vo.CameraAndRules
         if err := json.Unmarshal(bytes, &camTInfo); err == nil {
            camRuleArr = append(camRuleArr, camTInfo)
         } else {
            logger.Debug("alltask err:", err)
         }
      }
   }
}
// @Security ApiKeyAuth
// @Summary 查询所有任务
// @Description "查询所有任务"
// @Produce json
// @Tags CameraTask
// @Param cameraId 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/task/{cameraId} [get]
func (ctc CameraTaskController) CameraTaskAll(c *gin.Context) {
   cameraId := c.Param("cameraId")
   if cameraId == "" {
      util.ResponseFormat(c,code.RequestParamError,"摄像机id不能为空")
      return
   }
   var api dbapi.CameraTaskApi
   flag,data := api.CameraTaskAll(cameraId)
   if flag {
      util.ResponseFormat(c,code.Success,data)
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
// @Security ApiKeyAuth
// @Summary 摄像机保存任务
// @Description 摄像机保存任务
// @Accept json
// @Produce json
// @Tags camera
// @Param args body controllers.CameraTaskSaveArg true "摄像机任务保存请求参数"
// @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/saveTask [post]
func (cc CameraController) CameraTaskSave(c *gin.Context) {
   var saveBody CameraTaskSaveArg
   err := c.BindJSON(&saveBody)
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   paramBody := util.Struct2Map(saveBody)
   fmt.Println("paramBody:",paramBody)
   flag, data := api.CameraTaskSave(paramBody)
   fmt.Println("data",data)
   if flag {
      util.ResponseFormat(c,code.Success,data)
   } else {
      util.ResponseFormat(c, code.ComError, data)
   }
}
type PasteRuleArg struct {
   SourceId string `json:"sourceId" binding:"required"`
   TargetIds []string `json:"targetIds" binging:"required"`
}
// @Summary 复制摄像机规则到选定的多个摄像机
// @Description 复制摄像机规则到选定的多个摄像机
// @Accept json
// @Produce json
// @Tags CameraTask
// @Param args body controllers.PasteRuleArg true "规则复制参数"
// @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/pasteRules [post]
func (ctc CameraTaskController) PasteRules(c *gin.Context) {
   var reqBody PasteRuleArg
   err := c.BindJSON(&reqBody)
   if err != nil {
      util.ResponseFormat(c, code.RequestParamError, "")
      return
   }
   var api dbapi.CameraTaskApi
   if api.PasteRules(reqBody.SourceId, reqBody.TargetIds) {
      util.ResponseFormat(c,code.Success,"")
   } else {
      util.ResponseFormat(c,code.ComError,"")
   }
}
// @Security ApiKeyAuth
// @Summary 删除摄像机的任务
// @Description 删除摄像机的任务
// @Produce json
// @Tags camera
// @Param cameraId path string true "摄像机id"
// @Param taskId 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/delTask/{cameraId}/{taskId} [delete]
func (cc CameraController) CameraDelTask(c *gin.Context) {
   cameraId := c.Param("cameraId")
   taskId := c.Param("taskId")
   if cameraId == "" || taskId == "" {
      util.ResponseFormat(c,code.RequestParamError,"参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   flag,data := api.DeleteCameraTask(cameraId,taskId)
   if flag {
      util.ResponseFormat(c, code.Success, data)
   } else {
      util.ResponseFormat(c, code.ComError, data)
   }
}
type DataTransVo struct {
   CameraIds []string `json:"camera_ids"`
   TaskId string `json:"task_id"`
   IsDataTrans int `json:"is_data_trans"`
}
type GroupAlarmLevelVo struct {
   GroupId string `json:"group_id"`
   AlarmLevel int `json:"alarm_level"`
}
// @Security ApiKeyAuth
// @Summary 保存任务是否下传数据
// @Description 保存任务是否下传数据
// @Accept json
// @Produce json
// @Tags CameraTask
// @Param TransAndAlarmLevel body controllers.DataTransVo true "请求参数结构"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
// @Router /data/api-v/cameraTask/saveIsDataTrans [post]
func (ctc CameraTaskController) SaveIsDataTrans(c *gin.Context) {
   var transVo DataTransVo
   if err := c.BindJSON(&transVo);err!=nil {
      util.ResponseFormat(c,code.RequestParamError,"参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   paramBody := util.Struct2Map(transVo)
   flag ,data := api.SaveIsDataTrans(paramBody)
   if flag {
      util.ResponseFormat(c,code.Success,data)
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
// @Security ApiKeyAuth
// @Summary 保存规则组报警等级
// @Description 保存规则组报警等级
// @Accept json
// @Produce json
// @Tags CameraTask
// @Param GroupLevel body controllers.GroupAlarmLevelVo true "alarmLevel"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
// @Router /data/api-v/cameraTask/saveAlarmLevelByGroup [post]
func (ctc CameraTaskController) SaveAlarmLevelByGroup(c *gin.Context) {
   var groupLevelVo GroupAlarmLevelVo
   if err := c.BindJSON(&groupLevelVo);err !=nil {
      util.ResponseFormat(c,code.RequestParamError,"参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   flag,data := api.SaveAlarmLevelByGroup(groupLevelVo.GroupId,groupLevelVo.AlarmLevel)
   if flag {
      util.ResponseFormat(c,code.Success,data)
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
type CameraTaskStatusVo struct {
   CameraId string `json:"cameraId"`
   TaskId string `json:"taskId"`
   Status int `json:"status"`
}
// @Security ApiKeyAuth
// @Summary 更新任务状态
// @Description 更新任务状态
// @Accept json
// @Produce json
// @Tags CameraTask
// @Param CameraTaskStatus body controllers.CameraTaskStatusVo true "参数结构体"
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
// @Router /data/api-v/cameraTask/updateCameraTaskStatus [post]
func (ctc CameraTaskController) UpdateCameraTaskStatus(c *gin.Context) {
   var paramVo CameraTaskStatusVo
   if err := c.BindJSON(&paramVo);err !=nil {
      util.ResponseFormat(c,code.RequestParamError,"参数有误")
      return
   }
   var api dbapi.CameraTaskApi
   flag, data := api.UpdateCameraTaskStatus(paramVo.CameraId, paramVo.TaskId, paramVo.Status)
   if flag {
      if data.(string) == "此任务为停用状态,请在任务管理中开启!"{
         util.ResponseFormat(c,code.TaskStoped,data)
      } else {
         util.ResponseFormat(c,code.UpdateSuccess,data)
   logger.Debug("alltask camRuleArr:", camRuleArr)
   var result []SceneIfDelResult
   m := make(map[string]string)
   for _,cg :=range camRuleArr {
      for _,g := range cg.AllGroupRules {
         m[g.Id] = g.SceneName
         result = append(result, SceneIfDelResult{
            Id: g.Id,
            Name: g.SceneName,
            IsDelete: false,
         })
      }
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
   localConf, _ := cache.GetServerInfo()
   if localConf.AlarmIp != "" && localConf.ServerId != "" && localConf.AlarmPort>0 {
      indexName := config.EsInfo.EsIndex.AiOcean.IndexName
      esTaskM, e := esutil.AggregateTaskList(localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), indexName, localConf.ServerId)
      if e==nil && esTaskM !=nil {
         for _,tM :=range esTaskM {
            if _,ok := m[tM["taskId"].(string)];!ok {//表示此任务已被删除
               taskId := tM["taskId"].(string)
               taskName := tM["taskName"].(string)
               if taskId != "" {
                  result = append(result, SceneIfDelResult{
                     Id: taskId,
                     Name: taskName,
                     IsDelete: true,
                  })
               }
            }
         }
      }
   }
   util.ResponseFormat(c,code.Success, result)
}
type SceneIfDelResult struct {
   Id          string       `json:"id"`
   Name       string       `json:"name"`
   IsDelete    bool       `json:"isDelete"`
}
//
//// @Security ApiKeyAuth
//// @Summary 摄像机添加一个任务
//// @Description 摄像机添加一个任务
//// @Accept x-www-form-urlencoded
//// @Produce json
//// @Tags CameraTask
//// @Param cameraId formData string true "摄像机id"
//// @Param taskId 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/cameraTask/addTask [post]
//func (ctc CameraTaskController) AddTask(c *gin.Context) {
//   cameraId := c.PostForm("cameraId")
//   taskId := c.PostForm("taskId")
//   if cameraId == "" || taskId == "" {
//      util.ResponseFormat(c,code.RequestParamError,"参数有误")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   if b,data := api.AddTask(cameraId, taskId);b {
//      util.ResponseFormat(c,code.AddSuccess, data)
//   } else {
//      if data.(string) == "此国标摄像机已在其它服务器配置任务!" {
//         util.ResponseFormat(c,code.AddTaskErr, data)
//      } else {
//         util.ResponseFormat(c,code.ComError, data)
//      }
//   }
//}
//
//// @Security ApiKeyAuth
//// @Summary 查询所有任务
//// @Description "查询所有任务"
//// @Produce json
//// @Tags CameraTask
//// @Param cameraId 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/task/{cameraId} [get]
//func (ctc CameraTaskController) CameraTaskAll(c *gin.Context) {
//   cameraId := c.Param("cameraId")
//   if cameraId == "" {
//      util.ResponseFormat(c,code.RequestParamError,"摄像机id不能为空")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   flag,data := api.CameraTaskAll(cameraId)
//   if flag {
//      util.ResponseFormat(c,code.Success,data)
//   } else {
//      util.ResponseFormat(c,code.ComError,data)
//   }
//}
//
//// @Security ApiKeyAuth
//// @Summary 摄像机保存任务
//// @Description 摄像机保存任务
//// @Accept json
//// @Produce json
//// @Tags camera
//// @Param args body controllers.CameraTaskSaveArg true "摄像机任务保存请求参数"
//// @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/saveTask [post]
//func (cc CameraController) CameraTaskSave(c *gin.Context) {
//   var saveBody CameraTaskSaveArg
//   err := c.BindJSON(&saveBody)
//   if err != nil {
//      util.ResponseFormat(c, code.RequestParamError, "参数有误")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   paramBody := util.Struct2Map(saveBody)
//   fmt.Println("paramBody:",paramBody)
//   flag, data := api.CameraTaskSave(paramBody)
//   fmt.Println("data",data)
//   if flag {
//      util.ResponseFormat(c,code.Success,data)
//   } else {
//      util.ResponseFormat(c, code.ComError, data)
//   }
//}
//
//type PasteRuleArg struct {
//   SourceId string `json:"sourceId" binding:"required"`
//   TargetIds []string `json:"targetIds" binging:"required"`
//}
//
//// @Summary 复制摄像机规则到选定的多个摄像机
//// @Description 复制摄像机规则到选定的多个摄像机
//// @Accept json
//// @Produce json
//// @Tags CameraTask
//// @Param args body controllers.PasteRuleArg true "规则复制参数"
//// @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/pasteRules [post]
//func (ctc CameraTaskController) PasteRules(c *gin.Context) {
//   var reqBody PasteRuleArg
//   err := c.BindJSON(&reqBody)
//   if err != nil {
//      util.ResponseFormat(c, code.RequestParamError, "")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   if api.PasteRules(reqBody.SourceId, reqBody.TargetIds) {
//      util.ResponseFormat(c,code.Success,"")
//   } else {
//      util.ResponseFormat(c,code.ComError,"")
//   }
//}
//
//// @Security ApiKeyAuth
//// @Summary 删除摄像机的任务
//// @Description 删除摄像机的任务
//// @Produce json
//// @Tags camera
//// @Param cameraId path string true "摄像机id"
//// @Param taskId 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/delTask/{cameraId}/{taskId} [delete]
//func (cc CameraController) CameraDelTask(c *gin.Context) {
//   cameraId := c.Param("cameraId")
//   taskId := c.Param("taskId")
//   if cameraId == "" || taskId == "" {
//      util.ResponseFormat(c,code.RequestParamError,"参数有误")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   flag,data := api.DeleteCameraTask(cameraId,taskId)
//
//   if flag {
//      util.ResponseFormat(c, code.Success, data)
//   } else {
//      util.ResponseFormat(c, code.ComError, data)
//   }
//}
//
//type DataTransVo struct {
//   CameraIds []string `json:"camera_ids"`
//   TaskId string `json:"task_id"`
//   IsDataTrans int `json:"is_data_trans"`
//}
//type GroupAlarmLevelVo struct {
//   GroupId string `json:"group_id"`
//   AlarmLevel int `json:"alarm_level"`
//}
//
//// @Security ApiKeyAuth
//// @Summary 保存任务是否下传数据
//// @Description 保存任务是否下传数据
//// @Accept json
//// @Produce json
//// @Tags CameraTask
//// @Param TransAndAlarmLevel body controllers.DataTransVo true "请求参数结构"
//// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
//// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
//// @Router /data/api-v/cameraTask/saveIsDataTrans [post]
//func (ctc CameraTaskController) SaveIsDataTrans(c *gin.Context) {
//   var transVo DataTransVo
//   if err := c.BindJSON(&transVo);err!=nil {
//      util.ResponseFormat(c,code.RequestParamError,"参数有误")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   paramBody := util.Struct2Map(transVo)
//
//   flag ,data := api.SaveIsDataTrans(paramBody)
//   if flag {
//      util.ResponseFormat(c,code.Success,data)
//   } else {
//      util.ResponseFormat(c,code.ComError,data)
//   }
//}
//
//// @Security ApiKeyAuth
//// @Summary 保存规则组报警等级
//// @Description 保存规则组报警等级
//// @Accept json
//// @Produce json
//// @Tags CameraTask
//// @Param GroupLevel body controllers.GroupAlarmLevelVo true "alarmLevel"
//// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
//// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
//// @Router /data/api-v/cameraTask/saveAlarmLevelByGroup [post]
//func (ctc CameraTaskController) SaveAlarmLevelByGroup(c *gin.Context) {
//   var groupLevelVo GroupAlarmLevelVo
//   if err := c.BindJSON(&groupLevelVo);err !=nil {
//      util.ResponseFormat(c,code.RequestParamError,"参数有误")
//      return
//   }
//
//   var api dbapi.CameraTaskApi
//   flag,data := api.SaveAlarmLevelByGroup(groupLevelVo.GroupId,groupLevelVo.AlarmLevel)
//   if flag {
//      util.ResponseFormat(c,code.Success,data)
//   } else {
//      util.ResponseFormat(c,code.ComError,data)
//   }
//}
//
//type CameraTaskStatusVo struct {
//   CameraId string `json:"cameraId"`
//   TaskId string `json:"taskId"`
//   Status int `json:"status"`
//}
//
//// @Security ApiKeyAuth
//// @Summary 更新任务状态
//// @Description 更新任务状态
//// @Accept json
//// @Produce json
//// @Tags CameraTask
//// @Param CameraTaskStatus body controllers.CameraTaskStatusVo true "参数结构体"
//// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
//// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
//// @Router /data/api-v/cameraTask/updateCameraTaskStatus [post]
//func (ctc CameraTaskController) UpdateCameraTaskStatus(c *gin.Context) {
//   var paramVo CameraTaskStatusVo
//   if err := c.BindJSON(&paramVo);err !=nil {
//      util.ResponseFormat(c,code.RequestParamError,"参数有误")
//      return
//   }
//   var api dbapi.CameraTaskApi
//   flag, data := api.UpdateCameraTaskStatus(paramVo.CameraId, paramVo.TaskId, paramVo.Status)
//   if flag {
//      if data.(string) == "此任务为停用状态,请在任务管理中开启!"{
//         util.ResponseFormat(c,code.TaskStoped,data)
//      } else {
//         util.ResponseFormat(c,code.UpdateSuccess,data)
//      }
//   } else {
//      util.ResponseFormat(c,code.ComError,data)
//   }
//}