qixiaoning
2025-09-18 fd31206bcb8b084720291a53c986db771d8f5975
camera-service/controllers/camera.go
@@ -7,6 +7,7 @@
   "fmt"
   "image"
   "path/filepath"
   "time"
   // "fmt"
   // "io/ioutil"
@@ -85,7 +86,26 @@
   }
   logger.Debug("update sensors:", camVo.Sensors)
   sv := service.CameraService{}
   ok, cam := sv.GetById(camVo.Id)
   if b, err := sv.CameraUpdate(camVo); b {
      //更新分辨率
      if ok {
         logger.Debug("DoPostRequest:", camVo)
         if cam.IsRunning && (cam.ResolutionWidth != camVo.ResolutionWidth && cam.ResolutionHeight != camVo.ResolutionHeight) {
            header := map[string]string{}
            paramBody := map[string]interface{}{
               "isOpen":    1,
               "videoId":   camVo.Id,
               "videoType": 0,
            }
            res, err := util.DoPostRequest("http://127.0.0.1:8088/v1/task/openAnalysis", util.CONTENT_TYPE_JSON, paramBody, nil, header, time.Second*10)
            if err != nil {
               logger.Debug("DoPostRequest err:", err)
            }
            logger.Debug("DoPostRequest:", res)
         }
      }
      cc.addDbChangeMsg(h.Bk, protomsg.TableChanged_T_Camera, camVo.Id, protomsg.DbAction_Update, "")
      _, _ = service2.DoBusReq("/data/api-v/saas/syncCamera", config.Server.AnalyServerId, aiot.RequestMethod_Post, aiot.RequestContentType_ApplicationJson, map[string]interface{}{})
      return &bhomeclient.Reply{Success: true, Data: camVo.Copy2Camera()}
@@ -109,6 +129,13 @@
   if cid == "" {
      return &bhomeclient.Reply{Msg: "参数有误,摄像机id不能为空"}
   }
   //判断是否有配置任务
   total, _ := models.GetTaskTotal(cid)
   if total > 0 {
      return &bhomeclient.Reply{Success: false, Msg: "请先删除配置的任务"}
   }
   rows, _ := cam.Delete(cid)
   if rows == 0 {
      return &bhomeclient.Reply{Success: true, Msg: "记录不存在"}
@@ -1010,6 +1037,31 @@
}
/**
 *  删除记录
 */
func (cc CameraController) DelRecord(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
   filter := " id > 0 "
   info := models.TimeRange{}
   if err := c.BindJSON(&info); err != nil {
      return &bhomeclient.Reply{Success: false, Msg: "参数有误"}
   }
   startTime := info.StartTime
   endTime := info.EndTime
   if len(startTime) > 0 && len(endTime) > 0 {
      filter += fmt.Sprintf(" and detect_time > '%s'", startTime)
      filter += fmt.Sprintf(" and detect_time < '%s'", endTime)
      deleteRecord, err := models.DeleteRecord("smartobject", filter)
      if err != nil {
         return &bhomeclient.Reply{Success: false, Msg: "删除失败" + err.Error(), Data: nil}
      } else {
         return &bhomeclient.Reply{Success: true, Msg: "删除成功", Data: deleteRecord}
      }
   } else {
      return &bhomeclient.Reply{Success: false, Msg: "删除失败", Data: nil}
   }
}
/**
 *  获取抓拍记录
 */
func (cc CameraController) GetRecord(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
@@ -1125,6 +1177,7 @@
         IsWarning:       v.IsWarning,
         DetectNum:       v.DetectNum,
         TaskName:        v.TaskName,
         WarnTaskName:    v.WarnTaskName,
         ZhDescClass:     v.ZhDescClass,
         EventLevelName:  v.EventLevelName,
         KnowledgeId:     v.KnowledgeId,
@@ -1139,16 +1192,47 @@
         Content:         v.CameraName,
         PicDate:         v.PicDate,
         LikeDate:        v.LikeDate,
         VideoName:       v.CameraName,
         CameraAddr:      v.CameraName,
         CameraName:      v.CameraName,
      }
      var taskId []int64
      //任务名称
      //任务id重新赋值
      if len(v.WarnTaskName) > 0 {
         v.TaskId = []int64{}
         taskId = []int64{}
         arr := strings.Split(v.WarnTaskName, ";")
         for _, temp := range arr {
            if len(temp) > 0 {
               tempId, _ := strconv.ParseInt(strings.TrimSpace(temp), 10, 64)
               taskId = append(taskId, tempId)
            }
         }
         v.TaskId = taskId
      }
      items, _ := models.GetTaskByIds(v.TaskId)
      temp.TaskNames = items
      //任务名称重新赋值
      var result string
      if len(taskId) > 0 && len(items) > 0 {
         v.EventLevelId = []int64{}
         for index, item := range items {
            v.EventLevelId = append(v.EventLevelId, item.EventLevel)
            if index > 0 {
               result += ","
            }
            result += item.TaskName
         }
         temp.TaskName = result
      }
      //视频内容
      items4, _ := models.GetVideoById(v.VideoPointId)
      temp.VideoName = items4.Name
      temp.CameraAddr = items4.Addr
      // items4, _ := models.GetVideoById(v.VideoPointId)
      // temp.VideoName = items4.Name
      // temp.CameraAddr = items4.Addr
      //检查内容
      items2, _ := models.GetCheckByIds(v.DetectId)
@@ -1162,6 +1246,18 @@
      items5, _ := models.GetEventByIds(v.EventLevelId)
      temp.EventLevels = items5
      //事件等级重新赋值
      var result2 string
      if len(taskId) > 0 && len(items5) > 0 {
         for i, item5 := range items5 {
            if i > 0 {
               result2 += ","
            }
            result2 += item5.DictValue
         }
         temp.EventLevelName = result2
      }
      //知识库
      items6, _ := models.GetKnowledgeDocumentByIds(v.KnowledgeId)
      // 知识库路径