vars.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package handler
  2. import (
  3. "GtDataStore/app/cmd/events/internal/logic/job"
  4. "GtDataStore/app/model"
  5. "context"
  6. "metawant.greentech.com.cn/gaoyagang/gt-common/rabbitMQ"
  7. "time"
  8. )
  9. const (
  10. EVENT_NOTIFY = "EVENT_NOTIFY"
  11. EVENT_SINGLE_ITEM = "SINGLE_ITEM_EVENT" // 单点位值事件
  12. EVENT_MULTI_ITEM = "MULTI_ITEM_EVENT" // 多点位值事件
  13. EVTNE_NOTIFY_KEY_FORMAT = "EVENT:NOFITY:%d:%s" // 事件通知通道 %d: 项目名称 %s: 事件名称
  14. )
  15. type (
  16. // 事件信息
  17. eventInfo struct {
  18. ProjectId int64 // 项目ID
  19. DeviceCode string // 设备位号
  20. Item string // 点位名称
  21. EventId int64 // 事件ID
  22. EventName string // 事件名称
  23. OldValue string // 点位旧值
  24. NewValue string // 新值
  25. Time time.Time // 新值时间
  26. MsgTime time.Time // 消息时间
  27. }
  28. EventBindCache struct {
  29. Expire time.Time
  30. Data []model.DcEventBind
  31. }
  32. EventBindCacheMap map[string]EventBindCache
  33. )
  34. var (
  35. eventChan chan eventInfo
  36. producter *rabbitMQ.Producter
  37. EventIntervalTable = map[string]time.Duration{
  38. EVENT_SINGLE_ITEM: 2 * time.Second,
  39. EVENT_MULTI_ITEM: 60 * time.Second,
  40. }
  41. EventHandlerTable = map[string]func(ctx context.Context, task *job.Task, technologyName string) error{
  42. EVENT_SINGLE_ITEM: EventSingle,
  43. EVENT_MULTI_ITEM: EventMulti,
  44. }
  45. eventBindCacheTable = EventBindCacheMap{
  46. EVENT_SINGLE_ITEM: EventBindCache{},
  47. EVENT_MULTI_ITEM: EventBindCache{},
  48. }
  49. )
  50. func (t EventBindCacheMap) GetCache(technologyName string) []model.DcEventBind {
  51. if cache, ok := t[technologyName]; ok {
  52. if time.Now().After(cache.Expire) {
  53. t[technologyName] = EventBindCache{}
  54. return nil
  55. }
  56. return cache.Data
  57. } else {
  58. return nil
  59. }
  60. }
  61. func (t EventBindCacheMap) SetCache(technologyName string, data []model.DcEventBind, expire time.Time) {
  62. t[technologyName] = EventBindCache{
  63. Expire: expire,
  64. Data: data,
  65. }
  66. }
  67. func init() {
  68. eventChan = make(chan eventInfo, 50)
  69. }