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: "成功"} }