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

  • 相关阅读:
    Javascript之数组遍历
    Javascript中的原型、原型链(十)
    Javascript中的对象(八)
    记一次包含iframe的需要滚动的元素不能滚动到底部的问题
    元素等比缩放解决方案
    元素高度自适应屏幕高度解决方案
    浏览器同源策略及规避方案
    Ansible环境搭建
    Ldap 从入门到放弃(二)
    Ldap 从入门到放弃(一)
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14116348.html
Copyright © 2011-2022 走看看