package controllers
|
|
import (
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/go-aiot.git/aiotProto/aiot"
|
"basic.com/valib/logger.git"
|
"time"
|
"vamicro/config"
|
"vamicro/saas-service/service"
|
"vamicro/saas-service/service/nodeService"
|
)
|
|
type LockController struct {
|
}
|
|
type param struct {
|
Key string `json:"key"`
|
NodeId string `json:"nodeId"`
|
}
|
|
func (l *LockController) SetLock(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
req := ¶m{}
|
err := c.BindJSON(req)
|
if err != nil {
|
logger.Error("参数解码错误", err)
|
return &bhomeclient.Reply{Success: false, Msg: "参数错误", Data: err}
|
}
|
if req.Key == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数key不能为空"}
|
}
|
if req.NodeId == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "上锁节点ID不能为空"}
|
}
|
res := service.Cache.SetLock(req.NodeId, req.Key, 3*time.Minute)
|
if !res {
|
return &bhomeclient.Reply{Success: false, Msg: "上锁失败"}
|
}
|
return &bhomeclient.Reply{Success: true, Msg: "上锁成功"}
|
}
|
|
func (l *LockController) GetLock(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
req := ¶m{}
|
err := c.BindJSON(req)
|
if err != nil {
|
logger.Error("参数解码错误", err)
|
return &bhomeclient.Reply{Success: false, Msg: "参数错误", Data: err}
|
}
|
if req.Key == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数key不能为空"}
|
}
|
if req.NodeId == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "上锁节点ID不能为空"}
|
}
|
res, nodeId := service.Cache.GetLock(req.NodeId, req.Key)
|
if !res {
|
return &bhomeclient.Reply{Success: false, Msg: "锁不存在"}
|
}
|
return &bhomeclient.Reply{Success: true, Msg: "获取成功", Data: nodeId}
|
}
|
|
func (l *LockController) GetAllLock(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
res := service.Cache.GetAllLock()
|
return &bhomeclient.Reply{Success: true, Msg: "获取成功", Data: res}
|
}
|
|
func (l *LockController) DelLock(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
req := ¶m{}
|
err := c.BindJSON(req)
|
if err != nil {
|
logger.Error("参数解码错误", err)
|
return &bhomeclient.Reply{Success: false, Msg: "参数错误", Data: err}
|
}
|
if req.Key == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "参数key不能为空"}
|
}
|
if req.NodeId == "" {
|
return &bhomeclient.Reply{Success: false, Msg: "上锁节点ID不能为空"}
|
}
|
res, nodeId := service.Cache.GetLock(req.NodeId, req.Key)
|
if !res {
|
return &bhomeclient.Reply{Success: true, Msg: "锁不存在"}
|
}
|
res = service.Cache.DelLock(req.NodeId, req.Key)
|
if !res {
|
return &bhomeclient.Reply{Success: false, Msg: "解锁失败"}
|
}
|
return &bhomeclient.Reply{Success: true, Msg: "解锁成功", Data: nodeId}
|
}
|
|
func (l *LockController) SyncCamera(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
if !service.CliSrv.IsMaster {
|
masterId := ""
|
for _, n := range nodeService.Node.NodeLists {
|
if n.DriftState == "master" {
|
masterId = n.NodeId
|
break
|
}
|
}
|
if masterId == "" {
|
logger.Error("主节点获取失败,无法完成上锁动作")
|
return &bhomeclient.Reply{Success: true, Msg: "主节点获取失败,无法完成上锁动作"}
|
}
|
//res := &bhomeclient.Reply{}
|
go service.DoBusReq("/data/api-v/saas/syncCamera", masterId, aiot.RequestMethod_Post, aiot.RequestContentType_ApplicationJson, map[string]interface{}{})
|
//_ = json.Unmarshal(byt, res)
|
|
return &bhomeclient.Reply{Success: true, Msg: "成功"}
|
}
|
go service.SyncAllCameraData(service.CliSrv.Cli, config.Server.AnalyServerId)
|
return &bhomeclient.Reply{Success: true, Msg: "成功"}
|
}
|