智慧城市/智慧交通/智慧校园中EasyCVR平台视频管理系统实现二级分组开发记录

在很多管理系统或者平台页面当中,采用树状图来进行项目的归类是很实用的一种分组方式,也就是我们常说的树状图。EasyGBS中已经在前端界面完成了树状二级分组的功能,但是在EasyCVR中,现有的分组功能没有多级的概念,每个分组管理不同的通道,然后绑定到用户,不同的用户登录,只能操作对应分组的通道。

这种设计能满足一般的使用场景,但是比如在类似于学校的视频管理系统中,如果需要二级目录结构,就需要进行新的架构编译。例如第一级为小学部、初中部、高中部;第二级则为班级,每个部门下分不同的班级,班级管理具体的通道,大致需求如下图:

因此在重新编译中,我们需要修改相关分组和用户角色相关逻辑来实现该功能,大致分组设定代码参考如下:

type Label struct {
   ID         int    `gorm:"primary_key type:INTEGER not null AUTO_INCREMENT"`
   Name       string //`json:"name" `
   ParentID   int    //`json:"parent_id" `
   CreateTime time.Time
   UpdateTime time.Time //`json:"update_time" `
}

func (Label) TableName() string {
   return "t_label"
}

type LabelChannel struct {
   LabelId         int
   ChannelId       string
   ParentID        int //`json:"parent_id" `
   ChannelDeviceId string
}

func (LabelChannel) TableName() string {
   return `t_label_channel`
}

func DeleteLabelChannelByDeviceId(id string) (err error) {
   tx := db.SQLite.Begin()
   err = tx.Delete(LabelChannel{}, "channel_device_id = ?", id).Error
   if err != nil {
      tx.Rollback()
      return
   }
   err = tx.Commit().Error
   if err != nil {
      return
   }
   return
}

修改之后,分组界面如下图所示。分组后,每组可对每组分配的通道进行管理和查看,视觉体验更清晰简洁。

由TSINGSEE青犀视频打造的EasyCVR安防视频云服务不但能支持标准协议(RTSP、RTMP、Onvif、GB28181等协议)和厂家私有协议(海康SDK、Ehome协议)的接入,也能兼容市面上绝大多数的安防设备,已经可以作为智慧城市建设的有力支撑。

posted on 2021-03-17 16:22  TSINGSEE  阅读(98)  评论(0编辑  收藏  举报