sunty
2020-08-20 9303b69ea569bcb5e581147543a3fd58e90d0d25
controllers/cameraTask.go
@@ -2,10 +2,16 @@
import (
   "basic.com/dbapi.git"
   "webserver/extend/code"
   "webserver/extend/util"
   "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 {
@@ -19,7 +25,7 @@
type CameraTaskVo struct {
   Id          string `json:"id"`
   CameraIds   string `json:"camera_ids"`
   CameraId   string `json:"camera_id"`
   TaskId      string `json:"task_id"` //任务id  来自于任务表
   TimeRule    string `json:"time_rule"`
   ReactRule   string `json:"react_rule"`
@@ -29,7 +35,7 @@
   Enable      int    `json:"enable"`                //默认启用
   Sort        int    `json:"sort"`    //任务排序
   IsFull      int    `json:"is_full"` //参数是否设置完整
   LinkGroupId string `json:"link_group_id"` //联动任务组
   LinkTaskId string `json:"link_task_id"` //联动任务组
}
type CameraTaskSaveArg struct {
@@ -63,6 +69,17 @@
   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
@@ -72,18 +89,94 @@
// @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/alltask [post]
func (controller CameraTaskController) FindTasksByCameraIds(c *gin.Context){
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)
      bytes, _ := json.Marshal(data)
      var camTInfo []CameraTaskInfoVo
      json.Unmarshal(bytes, &camTInfo)
      //处理已被删除的任务
      var delTasks []models.Task
      var taskApi dbapi.TaskApi
      taskInfos := taskApi.FindAll()
      m := make(map[string]string)
      for _,ti :=range taskInfos{
         if ti.Task.Taskid != FaceExtract_VirtualTaskId{
            m[ti.Task.Taskid] = ti.Task.Taskid
         }
      }
      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)
                  m[taskId] = taskId
                  delTasks = append(delTasks, models.Task{
                     Taskid:   taskId,
                     Taskname: tM["taskName"].(string),
                     DelFlag: true,
                  })
               }
            }
         }
      }
      var result []CameraTaskInfoVo
      if camTInfo != nil {
         for _, camIn := range camTInfo {
            nIfn := CameraTaskInfoVo{
               Camera: camIn.Camera,
               Polygon: camIn.Polygon,
               Tasks: append(camIn.Tasks, delTasks...),
            }
            result = append(result, nIfn)
         }
      }
      util.ResponseFormat(c,code.Success, result)
   } else {
      util.ResponseFormat(c,code.ComError,data)
   }
}
// @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
@@ -92,7 +185,7 @@
// @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 (controller CameraTaskController) CameraTaskAll(c *gin.Context) {
func (ctc CameraTaskController) CameraTaskAll(c *gin.Context) {
   cameraId := c.Param("cameraId")
   if cameraId == "" {
      util.ResponseFormat(c,code.RequestParamError,"摄像机id不能为空")
@@ -107,7 +200,7 @@
   }
}
// @Security ApiKeyAuth
// @Summary 摄像机保存任务
// @Description 摄像机保存任务
// @Accept json
@@ -117,7 +210,7 @@
// @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 (ac CameraController) CameraTaskSave(c *gin.Context) {
func (cc CameraController) CameraTaskSave(c *gin.Context) {
   var saveBody CameraTaskSaveArg
   err := c.BindJSON(&saveBody)
   if err != nil {
@@ -136,6 +229,36 @@
   }
}
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
@@ -145,7 +268,7 @@
// @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 (ac CameraController) CameraDelTask(c *gin.Context) {
func (cc CameraController) CameraDelTask(c *gin.Context) {
   cameraId := c.Param("cameraId")
   taskId := c.Param("taskId")
   if cameraId == "" || taskId == "" {
@@ -162,40 +285,100 @@
   }
}
type TransAndAlarmLevelVo struct {
type DataTransVo struct {
   CameraIds []string `json:"camera_ids"`
   TaskId string `json:"task_id"`
   IsDataTrans int `json:"is_data_trans"`
   GroupLevels []GroupAlarmLevelVo `json:"group_levels"`
}
type GroupAlarmLevelVo struct {
   GroupId string `json:"group_id"`
   AlarmLevel int `json:"alarm_level"`
}
// @Summary 保存任务是否下传数据以及组报警等级
// @Description 保存任务是否下传数据以及组报警等级
// @Security ApiKeyAuth
// @Summary 保存任务是否下传数据
// @Description 保存任务是否下传数据
// @Accept json
// @Produce json
// @Tags CameraTask
// @Param TransAndAlarmLevel body controllers.TransAndAlarmLevelVo true "请求参数结构"
// @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/saveTransAndAlarmLevel [post]
func (controller CameraTaskController) SaveTransAndAlarmLevel(c *gin.Context) {
   var vo TransAndAlarmLevelVo
   if err := c.BindJSON(&vo);err!=nil {
// @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
   }
   fmt.Println("SaveTransAndAlarmLevel.vo:",vo)
   var api dbapi.CameraTaskApi
   paramBody := util.Struct2Map(vo)
   paramBody := util.Struct2Map(transVo)
   flag ,data := api.SaveTransAndAlarmLevel(paramBody)
   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)
   }
}