TSINGSEE青犀视频云边端的诸多视频智能分析平台在研发之初,其功能都是不完善的,经过一步步的探索,我们也在不断完善平台的操作和功能,比如国标GB28181协议平台EasyGBS的语音对讲和告警上报,都是我们在与众多项目对接之后,开发出来的满足多数用户需求的功能。
对于协议兼容性比较强,支持GB28181及RTSP等协议的EasyCVR视频智能分析平台,在更广泛的项目当中得到了运用。这些项目当中,很多场景也需要像EasyGBS、EasyNVR一样的用户管理功能,需要添加用户绑定角色,然后给角色分配通道,让用户登录显示对应的通道。
增加用户及角色管理可以通过调用以下接口获取:
func (h *APIHandler) AddUser_V2(c *gin.Context) {
var err error
defer func() {
if p := recover(); p != nil {
err = fmt.Errorf("%v", p)
}
if err != nil {
c.AbortWithStatusJSON(400, err.Error())
return
}
}()
name := c.PostForm("name")
username := c.PostForm("username")
password := c.PostForm("password")
//phone := c.PostForm("phone")
//email := c.PostForm("email")
roleid := c.PostForm("roleid")
roleId, err := strconv.Atoi(roleid)
if err != nil {
c.IndentedJSON(400, "请输入有效的角色")
return
}
dbclient := cvrdao.GetDB()
tx := dbclient.Begin()
roleMode := cvrdo.Role{}
err = dbclient.Where("id = ?", roleId).First(&roleMode).Error
if err != nil {
c.IndentedJSON(400, err.Error())
return
}
userMode := cvrdo.User{}
userCount := 0
dbclient.Where("name = ?", name).First(&userMode).Count(&userCount)
if userCount != 0 {
c.IndentedJSON(400, "用户已经存在")
return
} else {
if name != "" {
userMode.Name = name
}
if username != "" {
userMode.Username = username
}
//if email != "" {
// userMode.Email = email
//}
if password != "" {
userMode.Password = password
}
//if phone != "" {
// userMode.Phone = phone
//}
userMode.CreateAt = etime.ToDateTime(time.Now())
dbclient.Save(&userMode)
}
userRoleMode := cvrdo.UserRole{}
userrolemodecount := 0
dbclient.Where("uid = ?", userMode.ID).First(&userRoleMode).Count(&userrolemodecount)
if userrolemodecount == 0 {
dbclient.Create(&cvrdo.UserRole{
Uid: userMode.ID,
Rid: roleMode.ID,
})
} else {
userRoleMode.Rid = roleMode.ID
dbclient.Save(&userRoleMode)
}
tx.Commit()
c.IndentedJSON(200, gin.H{
"state": "success",
})
}
调用后检查,可知调用成功:
EasyCVR是一个功能强大,分布式架构,集全终端,多用户,语音对讲,分级电子地图,报警中心,兼容其它扩展产品,单机直连设备监控系统等功能为一体化平台。平台可扩展AI、GIS等功能,界面友好,操作简单,可方便的进行权限设置。如有需求,欢迎了解!