国标GB28181协议视频融合智能分析平台EasyCVR中创建数据库表结构体表名无效问题排查

大家知道EasyCVR作为TSINGSEE青犀视频研发的多协议融合视频智能分析平台,具备目前市面上很多视频平台所不具备的能力,比如支持同时接入GB28181协议、RTSP拉流协议、HIKSDK、Ehome等私有协议,按需灵活扩展、收缩资源,免去了插件安装、浏览器限定等条件,实现了无插件、多平台自由观看回放。

鉴于很多用户都需要在EasyCVR视频平台内增加用户管理的功能,我们就添加了用户及角色管理功能的接口,但是在创建数据库表结构体的时候,通过指定表名tablename方法重写该数据表,发现前端界面显示的数据表并没有生效。

注:结构包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但如果同时需要上述几种成员,则应当考虑改为使用类作为类型。结构可以实现接口,但它们无法继承另一个结构。

原始数据库代码如下:

func (Device) TableName() string {
	return "t_devices"
}
for _, value := range dbDevices {
		if value.DeviceType == "GB" {
			gbsdevices := make([]*models.Device, 0)
			q := db.SQLite.Model(models.Device{})
			q.Where("[index] = ?", value.DeviceID).Find(&gbsdevices)
			if len(gbsdevices) != 1 {
				continue
			}

该代码不生效后,我们对代码进行了如下修改:

for _, value := range dbDevices {
		if value.DeviceType == "GB" {
			gbsdevices := make([]*models.Device, 0)
			q := db.SQLite.Model(models.Device{})
			q.Table(models.Device{}.TableName()).Where("[index] = ?", value.DeviceID).Find(&gbsdevices)
			if len(gbsdevices) != 1 {
				continue
			}

修改后再次查看前端,数据表显示正常:

EasyCVR视频智能分析平台支持阿里云、腾讯云、华为云、七牛云等,支持S3和Swift接口的对象存储服务,简单配置,部署更高效,当然EasyCVR也可以通过GB28181协议与第三方平台进行级联,联动不同网络环境下的多个平台。

TSINGSEE青犀视频研发的EasyGBS视频平台也支持GB28181协议设备的接入,如果大家需要了解更多EasyCVR及GB28181协议相关内容,欢迎咨询,同时TSINGSEE青犀视频开发的云边端架构视频平台支持试用,欢迎大家测试!

原文地址:https://www.cnblogs.com/TSINGSEE/p/14116365.html