Compare commits
8 Commits
2b2035b4df
...
16f397d507
| Author | SHA1 | Date |
|---|---|---|
|
|
16f397d507 | |
|
|
227b9e0803 | |
|
|
ee478c105f | |
|
|
cd3c9a30ce | |
|
|
385afc7b9c | |
|
|
d7f7628d3f | |
|
|
94e6a5c5ab | |
|
|
8e894b003f |
|
|
@ -14,6 +14,8 @@ type User struct {
|
|||
Password string `gorm:"column:password"`
|
||||
Gender string `gorm:"column:gender"`
|
||||
Role string `gorm:"column:role"`
|
||||
Redis bool `gorm:"column:redis"`
|
||||
Run bool `gorm:"column:run"`
|
||||
CreateTime string `gorm:"column:create_time"`
|
||||
UpdateTime string `gorm:"column:update_time"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,10 +50,17 @@ func SetUpCIDGroup(router *gin.Engine) {
|
|||
}
|
||||
func RunCID(c *gin.Context) {
|
||||
var req CIDRunReq
|
||||
id, _ := c.Get("id")
|
||||
authID := int(id.(float64))
|
||||
//获取权限
|
||||
user := dao.FindUserByUserID(authID)
|
||||
if user.Run == false {
|
||||
c.JSON(200, gin.H{"error": "no run Permissions", "code": proto.NoRunPermissions, "message": "no run Permissions"})
|
||||
return
|
||||
}
|
||||
|
||||
if err := c.ShouldBind(&req); err == nil {
|
||||
// 获取用户ID
|
||||
id, _ := c.Get("id")
|
||||
authID := int(id.(float64))
|
||||
username, _ := c.Get("username")
|
||||
cid := dao.FindCIDByID(req.ID, authID)
|
||||
if cid.ID == 0 {
|
||||
|
|
@ -165,11 +172,18 @@ func CIDCallback(c *gin.Context) {
|
|||
fmt.Println("token:", token, "cid_id:", cid_id)
|
||||
//将cid转换为int
|
||||
cid, _ := strconv.Atoi(cid_id)
|
||||
|
||||
if token == "" || cid == 0 {
|
||||
c.JSON(200, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"})
|
||||
return
|
||||
}
|
||||
res := dao.FindCIDByIDAndToken(cid, token)
|
||||
|
||||
user := dao.FindUserByUserID(res.Auth_id)
|
||||
if user.Run == false {
|
||||
c.JSON(200, gin.H{"error": "no run Permissions", "code": proto.NoRunPermissions, "message": "the user has no run Permissions"})
|
||||
return
|
||||
}
|
||||
if res.ID != 0 {
|
||||
user := dao.FindUserByID(res.Auth_id)
|
||||
go RunShell(user[0].Name, res.Url, res.Script, int(res.ID), res.Auth_id)
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ func SetUpDeviceGroup(router *gin.Engine) {
|
|||
deviceGroup.POST("/set_device_status", SetDeviceStatus)
|
||||
deviceGroup.POST("/update_device", UpdateDevice)
|
||||
deviceGroup.POST("/delete_device", DeleteDevice)
|
||||
deviceGroup.GET("/get_real_time_image", GetRealTimeImage)
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -233,6 +234,7 @@ func GetRealTimeImage(c *gin.Context) {
|
|||
go func(ws *websocket.Conn, device_id int) {
|
||||
|
||||
}(ws, device_id_int)
|
||||
var check_cnt int
|
||||
|
||||
for {
|
||||
if v := clients[ws]; v == true {
|
||||
|
|
@ -247,6 +249,12 @@ func GetRealTimeImage(c *gin.Context) {
|
|||
res3, _ = json.Marshal(msg)
|
||||
} else {
|
||||
//若无消息则发送心跳包
|
||||
if check_cnt < 5 {
|
||||
check_cnt++
|
||||
time.Sleep(time.Millisecond * 200) //设置延时200ms
|
||||
continue
|
||||
}
|
||||
check_cnt = 0
|
||||
msg.Type = "check"
|
||||
msg.Msg = "check"
|
||||
msg.From_user_id = -1
|
||||
|
|
@ -261,7 +269,7 @@ func GetRealTimeImage(c *gin.Context) {
|
|||
worker.SetRedisWithExpire(strconv.Itoa(int(device.ID))+"_is_play", "0", time.Minute*5) //设置播放状态
|
||||
break
|
||||
}
|
||||
time.Sleep(time.Millisecond * 100) //设置延时100ms
|
||||
time.Sleep(time.Millisecond * 200) //设置延时200ms
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
"videoplayer/dao"
|
||||
"videoplayer/proto"
|
||||
"videoplayer/service"
|
||||
)
|
||||
|
||||
type SetRedisReq struct {
|
||||
Option string `json:"option" form:"option"`
|
||||
Key string `json:"key" form:"key"`
|
||||
Value string `json:"value" form:"value"`
|
||||
Expire int `json:"expire" form:"expire"`
|
||||
}
|
||||
|
||||
func SetUpToolGroup(router *gin.Engine) {
|
||||
toolGroup := router.Group("/tool")
|
||||
toolGroup.POST("/set_redis", SetRedis)
|
||||
toolGroup.POST("/get_redis", GetRedis)
|
||||
}
|
||||
|
||||
func SetRedis(c *gin.Context) {
|
||||
//先查看是否有权限
|
||||
id, _ := c.Get("id")
|
||||
id1 := int(id.(float64))
|
||||
user := dao.FindUserByUserID(id1)
|
||||
if user.Redis == false {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "no redis Permissions", "code": proto.NoRedisPermissions, "message": "failed"})
|
||||
return
|
||||
}
|
||||
//解析请求参数
|
||||
var req SetRedisReq
|
||||
if err := c.ShouldBind(&req); err == nil {
|
||||
var code int
|
||||
var message string
|
||||
if req.Option == "list" {
|
||||
code, message = service.SetToolRedisList(req.Key, req.Value, req.Expire)
|
||||
} else if req.Option == "set" {
|
||||
code, message = service.SetToolRedisSet(req.Key, req.Value, req.Expire)
|
||||
} else if req.Option == "kv" {
|
||||
code, message = service.SetToolRedisKV(req.Key, req.Value, req.Expire)
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"code": code, "message": message})
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func GetRedis(c *gin.Context) {
|
||||
//先查看是否有权限
|
||||
id, _ := c.Get("id")
|
||||
id1 := int(id.(float64))
|
||||
user := dao.FindUserByUserID(id1)
|
||||
if user.Redis == false {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "no redis Permissions", "code": proto.NoRedisPermissions, "message": "failed"})
|
||||
return
|
||||
}
|
||||
//解析请求参数
|
||||
var req SetRedisReq
|
||||
if err := c.ShouldBind(&req); err == nil {
|
||||
code, message := service.GetToolRedis(req.Key)
|
||||
req.Value = message
|
||||
c.JSON(http.StatusOK, gin.H{"code": code, "message": message, "data": req})
|
||||
} else {
|
||||
c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"})
|
||||
return
|
||||
}
|
||||
}
|
||||
3
main.go
3
main.go
|
|
@ -27,7 +27,8 @@ func main() {
|
|||
handler.SetUpDeviceGroup(r) // Device
|
||||
handler.SetUpIMGroup(r) // IM
|
||||
handler.SetUpCIDGroup(r) // CID,持续集成、部署
|
||||
r.Run(":8083") // listen and serve on 0.0.0.0:8082
|
||||
handler.SetUpToolGroup(r) // Tool
|
||||
r.Run(":8083") // listen and serve on 0.0.0.0:8083
|
||||
defer dao.Close()
|
||||
defer worker.CloseRedis()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,4 +41,9 @@ const (
|
|||
|
||||
// UUID相关错误码
|
||||
UUIDNotFound = 18 // uuid不存在
|
||||
|
||||
//Tool
|
||||
NoRedisPermissions = 51
|
||||
NoRunPermissions = 52
|
||||
NoDevicePermissions = 53
|
||||
)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"time"
|
||||
"videoplayer/proto"
|
||||
"videoplayer/worker"
|
||||
)
|
||||
|
||||
func SetToolRedisList(key string, value string, expire int) (code int, message string) {
|
||||
if expire == 0 {
|
||||
if worker.PushRedisList(key, value) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "push redis list failed"
|
||||
}
|
||||
} else if expire > 0 {
|
||||
if worker.PushRedisListWithExpire(key, value, time.Duration(expire)) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "push redis list with expire failed"
|
||||
}
|
||||
} else {
|
||||
return proto.ParameterError, "expire time can not be negative"
|
||||
}
|
||||
}
|
||||
|
||||
func SetToolRedisSet(key string, value string, expire int) (code int, message string) {
|
||||
if expire == 0 {
|
||||
if worker.SetRedis(key, value) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "set redis failed"
|
||||
}
|
||||
} else if expire > 0 {
|
||||
if worker.SetRedisWithExpire(key, value, time.Duration(expire)) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "set redis with expire failed"
|
||||
}
|
||||
} else {
|
||||
return proto.ParameterError, "expire time can not be negative"
|
||||
}
|
||||
}
|
||||
|
||||
func SetToolRedisKV(key string, value string, expire int) (code int, message string) {
|
||||
if expire == 0 {
|
||||
if worker.SetRedis(key, value) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "set redis failed"
|
||||
}
|
||||
} else if expire > 0 {
|
||||
if worker.SetRedisWithExpire(key, value, time.Duration(expire)) {
|
||||
return proto.SuccessCode, "success"
|
||||
} else {
|
||||
return proto.OperationFailed, "set redis with expire failed"
|
||||
}
|
||||
} else {
|
||||
return proto.ParameterError, "expire time can not be negative"
|
||||
}
|
||||
}
|
||||
|
||||
func GetToolRedis(key string) (code int, message string) {
|
||||
val := worker.GetRedis(key)
|
||||
if val == "" {
|
||||
return proto.OperationFailed, "get redis failed"
|
||||
} else {
|
||||
return proto.SuccessCode, val
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue