123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package scene
- import (
- "context"
- "fmt"
- "github.com/gogf/gf/v2/database/gredis"
- )
- const (
- scenePrefix = "scene-manager:alarm:"
- dataExpires = 7200
- )
- type GetSceneParams struct {
- Type string `json:"type"`
- Name string `json:"name"`
- DeviceCode string `json:"device_code"`
- }
- type InfoScene struct {
- Id string `json:"id"`
- Name string `json:"name"`
- Status int `json:"status"`
- Action string `json:"action"`
- Desc string `json:"desc"`
- SceneType string `json:"scene_type"`
- DeviceType string `json:"device_type"`
- Config string `json:"config"`
- Time string `json:"time"`
- }
- type Info struct {
- Key string `json:"key"`
- SceneId string `json:"scene_id"`
- TaskId string `json:"task_id"`
- Config string `json:"config"`
- }
- type Manager struct {
- redisClient *gredis.Redis
- ctx context.Context
- }
- func NewSceneManager(host string, port int) *Manager {
- red, _ := gredis.New(&gredis.Config{
- Address: fmt.Sprintf("%s:%d", host, port),
- Db: 2,
- MaxActive: 100,
- })
- ctx := context.Background()
- helper := &Manager{
- redisClient: red,
- ctx: ctx,
- }
- return helper
- }
- func (a *Manager) SaveScene(info *Info) error {
- _, err := a.redisClient.Do(a.ctx, "SET", info.Key, info.Config)
- if err != nil {
- return err
- }
- _, err = a.redisClient.Do(a.ctx, info.Key, dataExpires)
- if err != nil {
- return err
- }
- return nil
- }
- func (a *Manager) GetScene(key string) (string, error) {
- // get status from redis
- result, err := a.redisClient.Do(a.ctx, "GET", key)
- if err != nil {
- return "", err
- }
- return result.String(), nil
- }
- func (a *Manager) DeleteScene(key string) error {
- // get status from redis
- _, err := a.redisClient.Do(a.ctx, "DEL", key)
- if err != nil {
- return err
- }
- return nil
- }
- // ScanKeys 扫描所有匹配的key
- //func (a *Manager) ScanKeys(pattern string) ([]string, error) {
- // var cursor uint64
- // var allKeys []string
- // for {
- // // 扫描一批匹配的key
- // _, err := a.redisClient.Do("Scan", cursor, pattern, 100)
- // if err != nil {
- // return nil, err
- // }
- // allKeys = append(allKeys, keys...)
- // cursor = nextCursor
- // // 游标归0时结束迭代
- // if cursor == 0 {
- // break
- // }
- // }
- // return allKeys, nil
- //}
|