zoukankan      html  css  js  c++  java
  • 国标GB28181/RTSP/HIKSDK/Ehome视频智能分析平台EasyCVR如何效仿EasyGBS添加用户功能接口?

    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等功能,界面友好,操作简单,可方便的进行权限设置。如有需求,欢迎了解!

  • 相关阅读:
    关于Ubuntu 9.10 的aptget update 一直无法更新源的点点滴滴
    CentOS的安装和搭建文件共享服务器(Samba)
    VirtualBox 下的 Ubuntu 虚拟机中使用 Android 真机做开发调试
    VmWare下安装CentOS6图文安装教程
    CentOS的远程桌面(xdm)
    ubuntu Apache安装设置
    关于母版页的按钮事件
    TSQL使用函数uppercase更新xml
    文章的上一篇和下一篇导航 V2
    数据库用户映射到 SQL Server 登录名
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14116348.html
Copyright © 2011-2022 走看看