Bläddra i källkod

fit: 使用gt-common公用包

gaoyagang 1 år sedan
förälder
incheckning
ec46e31628

+ 2 - 3
.gitignore

@@ -3,6 +3,8 @@
 *.o
 *.a
 *.so
+vendor/
+venv/
 
 # Folders
 _obj
@@ -30,9 +32,6 @@ __pycache__/
 *.py[cod]
 *$py.class
 
-# C extensions
-*.so
-
 # Distribution / packaging
 .Python
 env/

+ 4 - 1
app/cmd/events/etc/events.yaml

@@ -12,8 +12,11 @@ Log:
 #双胞胎服务
 GtServerIp: 47.96.12.136:8788
 
+RabbitMQ:
+  Url: amqp://admin:devmq*1120@47.96.12.136:5672/
+
 DtDataStoreDB:
-  DataSource: ws_data:c712f89fc4f8edaf30e41b828f4e3d26@tcp(192.168.60.201:4000)/ws_data?charset=utf8mb4&parseTime=True&loc=&loc=Asia%2FShanghai
+  DataSource: ws_data:c712f89fc4f8edaf30e41b828f4e3d26@tcp(172.16.0.194:4000)/ws_data?charset=utf8mb4&parseTime=True&loc=&loc=Asia%2FShanghai
 
 Redis:
   Host: 47.96.12.136:6379

+ 1 - 1
app/cmd/events/events.go

@@ -3,9 +3,9 @@ package main
 import (
 	"GtDataStore/app/cmd/events/internal/logic/handler"
 	"GtDataStore/app/cmd/events/internal/logic/job"
-	"GtDataStore/common/envitem"
 	"flag"
 	"fmt"
+	"gtlib.local/gaoyagang/gt-common/envitem"
 
 	"GtDataStore/app/cmd/events/internal/config"
 	"GtDataStore/app/cmd/events/internal/svc"

+ 4 - 0
app/cmd/events/internal/config/config.go

@@ -15,4 +15,8 @@ type Config struct {
 	Cache cache.CacheConf
 
 	GtServerIp string
+
+	RabbitMQ struct {
+		Url string
+	}
 }

+ 18 - 8
app/cmd/events/internal/logic/handler/event.go

@@ -8,11 +8,27 @@ import (
 	"fmt"
 	"github.com/go-redis/redis/v8"
 	"github.com/zeromicro/go-zero/core/logx"
+	"gtlib.local/gaoyagang/gt-common/rabbitMQ"
 	"time"
 )
 
 func HandlerEventNotify(svcCtx *svc.ServiceContext) error {
+	var err error
+	producter, err = rabbitMQ.NewProducter(rabbitMQ.Exchange{
+		Name:      "gt.dc.event",
+		Type:      "fanout",
+		QueueName: "",
+		Key:       "",
+		Dns:       svcCtx.Config.RabbitMQ.Url,
+	})
+
+	if err != nil {
+		return err
+	}
+
+	defer producter.Close()
 	defer close(eventChan)
+
 	fmt.Print("start HandlerEventNotify.....\n")
 	queue := svcCtx.Cache
 
@@ -30,14 +46,8 @@ func HandlerEventNotify(svcCtx *svc.ServiceContext) error {
 func toMQ(queue *redis.Client, info eventInfo) {
 	channel := fmt.Sprintf(EVTNE_NOTIFY_KEY_FORMAT, info.ProjectId, info.EventName)
 	if bs, err := json.Marshal(info); err == nil {
-		//queue.XAdd(context.Background(), &redis.XAddArgs{
-		//	Stream: channel,
-		//	MaxLen: 5000,
-		//	Values: ``,
-		//})
-
-		if intCmd := queue.Publish(context.Background(), channel, string(bs)); intCmd == nil {
-			logx.Errorf("handlerEvent queue.Publish toMQ error: %s %+v", channel, info)
+		if err := producter.Publisher(channel, bs); err == nil {
+			logx.Errorf("handlerEvent queue.Publish toMQ ok: %s %+v", channel, info)
 		}
 	} else {
 		logx.Errorf("handlerEvent queue.Publish toMQ error: %s %+v", channel, info)

+ 9 - 2
app/cmd/events/internal/logic/handler/single.go

@@ -4,12 +4,12 @@ import (
 	"GtDataStore/app/cmd/events/internal/logic/job"
 	"GtDataStore/app/cmd/events/internal/svc"
 	"GtDataStore/app/model"
-	"GtDataStore/common/envitem"
-	"GtDataStore/common/identify"
 	"context"
 	"errors"
 	"fmt"
 	"github.com/zeromicro/go-zero/core/logx"
+	"gtlib.local/gaoyagang/gt-common/envitem"
+	"gtlib.local/gaoyagang/gt-common/identify"
 	"sync"
 )
 
@@ -47,7 +47,14 @@ func EventSingle(ctx context.Context, task *job.Task, technologyName string) err
 			checker := identify.NewSingleCheck(map[string]identify.Rule{bind.Name: bind.Config})
 			name := checker.Check(ov, nv)
 			println(fmt.Sprintf("ov: %s nv: %s event: %s name", ov, nv, name))
+
 			if name != "" {
+				ht := item.GetItemHtime()
+				if ht == nil {
+					println(fmt.Sprintf("htime is nil ov: %s nv: %s event: %s name", ov, nv, name))
+					return
+				}
+
 				eventChan <- eventInfo{
 					ProjectId:  bind.ProjectId,
 					DeviceCode: bind.DeviceCode,

+ 2 - 0
app/cmd/events/internal/logic/handler/vars.go

@@ -3,6 +3,7 @@ package handler
 import (
 	"GtDataStore/app/cmd/events/internal/logic/job"
 	"context"
+	"gtlib.local/gaoyagang/gt-common/rabbitMQ"
 	"time"
 )
 
@@ -31,6 +32,7 @@ type (
 
 var (
 	eventChan chan eventInfo
+	producter *rabbitMQ.Producter
 
 	EventIntervalTable = map[string]time.Duration{
 		EVENT_SINGLE_ITEM: 1 * time.Second,

+ 1 - 1
app/cmd/organization/organization.go

@@ -6,11 +6,11 @@ import (
 	"GtDataStore/app/cmd/organization/internal/logic/job"
 	"GtDataStore/app/cmd/organization/internal/server"
 	"GtDataStore/app/cmd/organization/pb"
-	"GtDataStore/common/envitem"
 	"github.com/zeromicro/go-zero/core/service"
 	"github.com/zeromicro/go-zero/zrpc"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/reflection"
+	"gtlib.local/gaoyagang/gt-common/envitem"
 
 	//"GtDataStore/app/cmd/organization/internal/server"
 	"GtDataStore/app/cmd/organization/internal/svc"

+ 1 - 1
app/model/dcDeviceBindModel_gen.go

@@ -3,10 +3,10 @@
 package model
 
 import (
-	"GtDataStore/common/envitem"
 	"context"
 	"database/sql"
 	"fmt"
+	"gtlib.local/gaoyagang/gt-common/envitem"
 	"strings"
 
 	"github.com/zeromicro/go-zero/core/stores/builder"

+ 1 - 1
app/model/dcEventBindModel_gen.go

@@ -3,10 +3,10 @@
 package model
 
 import (
-	"GtDataStore/common/identify"
 	"context"
 	"database/sql"
 	"fmt"
+	"gtlib.local/gaoyagang/gt-common/identify"
 	"strings"
 	"time"
 

+ 0 - 336
common/envitem/func.go

@@ -1,336 +0,0 @@
-package envitem
-
-import (
-	"GtDataStore/common/httplib"
-	"context"
-	"database/sql/driver"
-	"encoding/json"
-	"errors"
-	"fmt"
-	"strconv"
-	"strings"
-	"time"
-)
-
-func SetOptions(options Options) {
-	snapUrl = fmt.Sprintf("http://%s/api/v1/plc-current", options.GtServerIp)
-	ctlUrl = fmt.Sprintf("http://%s/api/v1/plc/set-var-values", options.GtServerIp)
-
-	if options.Cache != nil {
-		cache = options.Cache
-	}
-}
-
-func (m MultiEnvItem) GetProjectId() int64 {
-	for _, item := range m {
-		return item.ProjectId
-	}
-	return 0
-}
-
-func (m MultiEnvItem) getItemNames() []string {
-	items := make([]string, 0)
-	for _, item := range m {
-		items = append(items, item.Item)
-	}
-	return items
-}
-
-func (m MultiEnvItem) FillCurrentValue() error {
-	datas, err := m.getCurrentData()
-	if err != nil {
-		return err
-	}
-	// 先做一个item -> key的映射
-	ikm := make(map[string]string)
-	for s, item := range m {
-		ikm[item.Item] = s
-	}
-
-	for _, data := range datas {
-		if k, ok := ikm[data.ItemName]; ok {
-			m[k].Value = data.Val
-			m[k].Htime = data.HTime
-			_ = m[k].setPrevValue()
-		}
-	}
-	return nil
-}
-
-func (m MultiEnvItem) GetItemFloat64Value(key string) float64 {
-	if envItem, ok := m[key]; ok {
-		return envItem.GetItemFloat64Val()
-	}
-	return 0
-}
-
-func (m MultiEnvItem) GetItemInt64Value(key string) int64 {
-	if envItem, ok := m[key]; ok {
-		return envItem.GetItemInt64Val()
-	}
-	return 0
-}
-
-func (m MultiEnvItem) GetItemStringValue(key string) string {
-	if envItem, ok := m[key]; ok {
-		return envItem.GetItemStringVal()
-	}
-	return ""
-}
-
-func (m MultiEnvItem) GetItemHtime(key string) *time.Time {
-	if envItem, ok := m[key]; ok {
-		return envItem.GetItemHtime()
-	}
-	return nil
-}
-
-func (m MultiEnvItem) FindString() map[string]string {
-	a := make(map[string]string)
-	for _, item := range m {
-		a[item.Item] = item.Value.(string)
-	}
-
-	return a
-}
-
-func (m MultiEnvItem) FindPrevString() map[string]string {
-	a := make(map[string]string)
-	for _, item := range m {
-		a[item.Item] = item.GetItemPrevStringVal()
-	}
-
-	return a
-}
-
-func (m MultiEnvItem) getCurrentData() ([]*ItemValueResp, error) {
-	req := httplib.Post(snapUrl)
-	data := make([]*ItemValueReq, 1)
-
-	data[0] = &ItemValueReq{
-		DeviceItems: strings.Join(m.getItemNames(), ","),
-		ProjectId:   m.GetProjectId(),
-	}
-
-	jsonBytes, err := json.Marshal(data)
-	if err != nil {
-		return nil, err
-	}
-	req.Body(jsonBytes)
-	req.SetTimeout(time.Millisecond * 2000)
-
-	r, err := req.Response()
-	if err != nil {
-		return nil, err
-	}
-	defer r.Body.Close()
-
-	if r.StatusCode == 200 {
-		resp, err := req.Bytes()
-		if err != nil {
-			return nil, err
-		}
-
-		res := &ItemValueResps{}
-		err = json.Unmarshal(resp, res)
-		if err != nil {
-			return nil, err
-		}
-
-		if len(res.Data) == 0 {
-			return nil, errors.New("not found envitem's value")
-		}
-
-		return res.Data, nil
-	}
-
-	return nil, errors.New(fmt.Sprintf("request statusCode: %d", r.StatusCode))
-}
-
-func (e *EnvItem) getCurrentData() (*ItemValueResp, error) {
-	req := httplib.Post(snapUrl)
-	data := make([]*ItemValueReq, 1)
-
-	data[0] = &ItemValueReq{
-		DeviceItems: e.Item,
-		ProjectId:   e.ProjectId,
-	}
-
-	jsonBytes, err := json.Marshal(data)
-	if err != nil {
-		return nil, err
-	}
-	req.Body(jsonBytes)
-	req.SetTimeout(time.Millisecond * 2000)
-
-	r, err := req.Response()
-	if err != nil {
-		return nil, err
-	}
-	defer r.Body.Close()
-
-	if r.StatusCode == 200 {
-		resp, err := req.Bytes()
-		if err != nil {
-			return nil, err
-		}
-
-		res := &ItemValueResps{}
-		err = json.Unmarshal(resp, res)
-		if err != nil {
-			return nil, err
-		}
-
-		if len(res.Data) == 0 {
-			return nil, errors.New("not found envitem's value")
-		}
-
-		return res.Data[0], nil
-	}
-
-	return nil, errors.New(fmt.Sprintf("request statusCode: %d", r.StatusCode))
-}
-
-func (e *EnvItem) getCurrentValue() (string, string, error) {
-	resp, err := e.getCurrentData()
-	if err != nil {
-		return "", "", err
-	}
-
-	e.Value = resp.Val
-	e.Htime = resp.HTime
-	_ = e.setPrevValue()
-
-	return resp.Val, resp.HTime, nil
-}
-
-func (e *EnvItem) getPrevValue() (string, string, error) {
-	if cache == nil {
-		return "", "", errors.New("not cache")
-	}
-	key := fmt.Sprintf(CACHE_PREV_VALUE_KEY, e.ProjectId, e.Item)
-	if cmd := cache.Get(context.Background(), key); cmd != nil {
-		n := strings.Split(cmd.Val(), "|")
-		if len(n) != 2 {
-			return "", "", errors.New("getPrevValue cache length error")
-		}
-		return n[0], n[1], nil
-	} else {
-		return "", "", cmd.Err()
-	}
-}
-
-func (e *EnvItem) setPrevValue() error {
-	if cache == nil {
-		return errors.New("not cache")
-	}
-	key := fmt.Sprintf(CACHE_PREV_VALUE_KEY, e.ProjectId, e.Item)
-	value := fmt.Sprintf("%s|%s", e.Value, e.Htime)
-	if statusCmd := cache.Set(context.Background(), key, value, CACHE_PREV_VALUE_KEY_EXPIRE); statusCmd != nil {
-		return nil
-	} else {
-		return errors.New("setPrevValue error")
-	}
-}
-
-func (e *EnvItem) GetItemFloat64Val() float64 {
-	if e.Value == nil {
-		e.getCurrentValue()
-	}
-
-	switch e.Value.(type) {
-	case string:
-		if v, e := strconv.ParseFloat(e.Value.(string), 64); e == nil {
-			return v
-		}
-	}
-
-	return 0
-}
-
-func (e *EnvItem) GetItemInt64Val() int64 {
-	if e.Value == nil {
-		e.getCurrentValue()
-	}
-
-	switch e.Value.(type) {
-	case string:
-		if v, e := strconv.ParseInt(e.Value.(string), 10, 64); e == nil {
-			return v
-		}
-	}
-
-	return 0
-}
-
-func (e *EnvItem) GetItemStringVal() string {
-	if e.Value == nil {
-		e.getCurrentValue()
-	}
-
-	if v, ok := e.Value.(string); ok {
-		return v
-	}
-
-	return ""
-}
-
-func (e *EnvItem) GetItemHtime() *time.Time {
-	if e.Value == nil {
-		e.getCurrentValue()
-	}
-
-	if ht, err := time.ParseInLocation("2006-01-02 15:04:05", e.Htime, time.Local); err == nil {
-		return &ht
-	}
-	return nil
-}
-
-func (e *EnvItem) GetItemPrevFloat64Val() float64 {
-	ov, _, err := e.getPrevValue()
-	if err != nil {
-		return 0
-	}
-
-	if v, err := strconv.ParseFloat(ov, 64); err == nil {
-		return v
-	}
-
-	return 0
-}
-
-func (e *EnvItem) GetItemPrevInt64Val() int64 {
-	ov, _, err := e.getPrevValue()
-	if err != nil {
-		return 0
-	}
-
-	if v, err := strconv.ParseInt(ov, 10, 64); err == nil {
-		return v
-	}
-
-	return 0
-}
-
-func (e *EnvItem) GetItemPrevStringVal() string {
-	ov, _, _ := e.getPrevValue()
-	return ov
-}
-
-func (e *EnvItem) GetItemPrevHtime() *time.Time {
-	_, ht, _ := e.getPrevValue()
-	if t, err := time.ParseInLocation("2006-01-02 15:04:05", ht, time.Local); err == nil {
-		return &t
-	}
-	return nil
-}
-
-// Scan 实现方法
-func (d *MultiEnvItem) Scan(input interface{}) error {
-	_ = json.Unmarshal(input.([]byte), &d)
-	return nil
-}
-
-func (d MultiEnvItem) Value() (driver.Value, error) {
-	return json.Marshal(d)
-}

+ 0 - 78
common/envitem/func_test.go

@@ -1,78 +0,0 @@
-package envitem
-
-import (
-	"encoding/json"
-	"testing"
-	"time"
-)
-
-func TestEnvItem_GetCurrentData(t *testing.T) {
-	SetOptions(Options{GtServerIp: "47.96.12.136:8788"})
-	e := EnvItem{
-		ProjectId: 92,
-		Item:      "C.M.LT_CIP@out,C.M.RO1_DB@time_CS_display",
-	}
-
-	v, ht, err := e.getCurrentValue()
-
-	t.Log(v, ht, err)
-
-}
-
-func TestMultiEnvItem_FillCurrentValue(t *testing.T) {
-	SetOptions(Options{GtServerIp: "47.96.12.136:8788"})
-	m := make(MultiEnvItem, 2)
-	m["C.M.LT_CIP@out"] = &EnvItem{
-		ProjectId: 92,
-		Item:      "C.M.LT_CIP@out",
-	}
-	m["C.M.RO1_DB@time_CS_display"] = &EnvItem{
-		ProjectId: 92,
-		Item:      "C.M.RO1_DB@time_CS_display",
-	}
-
-	err := m.FillCurrentValue()
-	t.Log(err)
-
-	for s, item := range m {
-		t.Logf("item: %s value: %s htime: %s", s, item.Value, item.Htime)
-	}
-}
-
-func TestMultiEnvItem_FillCurrentValue2(t *testing.T) {
-	SetOptions(Options{GtServerIp: "47.96.12.136:8788"})
-	js := `{"tmp":{"project_id":92,"device_code":"UF-4001A","plc_device_id":"0","item":"C.M.UF1_DB@press_PV","default_val":0},"feed_flow":{"project_id":92,"device_code":"UF-4001A","plc_device_id":"0","item":"C.M.UF1_FT_JS@out","default_val":0},"feed_pressure":{"project_id":92,"device_code":"UF-4001A","plc_device_id":"0","item":"C.M.UF1_PT_JS@out","default_val":0},"product_pressure":{"project_id":92,"device_code":"UF-4001A","plc_device_id":"0","item":"C.M.UF1_PT_CS@out","default_val":0},"feed_wq_turbidity":{"project_id":92,"device_code":"AIT-94061","plc_device_id":"0","item":"C.M.UF_Tur_ZJS@out","default_val":0},"water_temperature":{"project_id":92,"device_code":"TIT-34061","plc_device_id":"0","item":"C.M.RO_TT_ZJS@out","default_val":0},"product_wq_ph":{"project_id":92,"device_code":"AIT-95065b","plc_device_id":"0","item":"C.M.UF_PH_ZCS@out","default_val":0},"step":{"project_id":92,"device_code":"HB","plc_device_id":"0","item":"C.M.UF1_DB@word_control","default_val":0}}`
-	var multiEnvItems MultiEnvItem
-
-	_ = json.Unmarshal([]byte(js), &multiEnvItems)
-
-	t.Log(multiEnvItems)
-
-	for {
-		_ = multiEnvItems.FillCurrentValue()
-		time.Sleep(2 * time.Second)
-
-		//ms := multiEnvItems.FindString()
-
-		t.Logf("%+v", multiEnvItems)
-
-		t.Logf("step: %d", multiEnvItems.GetItemInt64Value("step"))
-		//early := checkEarly(multiEnvItems.GetItemFloat64Value("Display_Time"), multiEnvItems.GetItemFloat64Value("Filter_Time_Set"), multiEnvItems.GetItemStringValue("Step"))
-		//advanced := checkAdvanced(multiEnvItems.GetItemFloat64Value("Display_Time"), multiEnvItems.GetItemFloat64Value("Filter_Time_Set"), multiEnvItems.GetItemStringValue("Step"))
-		//
-		//t.Logf("early: %v, advanced: %v, step: %s filterNumber: %s Display_Time: %s Filter_Time_Set: %s", early, advanced, multiEnvItems.GetItemStringValue("Step"), multiEnvItems.GetItemStringValue("Filter_Number"), multiEnvItems.GetItemStringValue("Display_Time"), multiEnvItems.GetItemStringValue("Filter_Time_Set"))
-		//t.Log(err)
-		//for s, item := range multiEnvItems {
-		//	t.Logf("item: %s value: %s htime: %s", s, item.Value, item.Htime)
-		//}
-	}
-
-}
-
-func checkEarly(ft, fst float64, step string) bool {
-	return step == "26" && ft >= 360 && ft <= 660
-}
-
-func checkAdvanced(ft, fst float64, step string) bool {
-	return step == "26" && ft+360 >= fst && ft+60 <= fst
-}

+ 0 - 48
common/envitem/types.go

@@ -1,48 +0,0 @@
-package envitem
-
-import "github.com/go-redis/redis/v8"
-
-type (
-	Options struct {
-		GtServerIp string
-		Cache      *redis.Client
-	}
-
-	EnvItem struct {
-		ProjectId   int64       `json:"project_id"`
-		DeviceCode  string      `json:"device_code"`
-		PlcDeviceId string      `json:"plc_device_id"`
-		Item        string      `json:"item"`
-		DefaultVal  interface{} `json:"default_val"`
-		Value       interface{} `json:"value"`
-		Htime       string      `json:"htime"`
-	}
-
-	MultiEnvItem map[string]*EnvItem
-
-	ItemValueResp struct {
-		Alias        string `json:"alias"`
-		DataAddress  string `json:"dataAddress"`
-		DataType     string `json:"datatype"`
-		DevName      string `json:"devName"`
-		DevID        string `json:"devid"`
-		HTime        string `json:"htime"`
-		ItemID       string `json:"itemid"`
-		ItemName     string `json:"itemname"`
-		Quality      string `json:"quality"`
-		ReadOnly     bool   `json:"readOnly"`
-		SpecificType string `json:"specificType"`
-		Val          string `json:"val"`
-	}
-
-	ItemValueResps struct {
-		Code int              `json:"code"`
-		Data []*ItemValueResp `json:"data"`
-	}
-
-	ItemValueReq struct {
-		DeviceId    string `json:"deviceId"`
-		DeviceItems string `json:"deviceItems"`
-		ProjectId   int64  `json:"project_id"`
-	}
-)

+ 0 - 17
common/envitem/vars.go

@@ -1,17 +0,0 @@
-package envitem
-
-import (
-	"github.com/go-redis/redis/v8"
-	"time"
-)
-
-const (
-	CACHE_PREV_VALUE_KEY        = "envitem:prev:value:%d:%s"
-	CACHE_PREV_VALUE_KEY_EXPIRE = 86400 * time.Second
-)
-
-var (
-	snapUrl = ""
-	ctlUrl  = ""
-	cache   *redis.Client
-)

+ 0 - 576
common/httplib/httplib.go

@@ -1,576 +0,0 @@
-// Copyright 2014 beego Author. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// copy & modify from github.com/astaxie/beego/tree/master/httplib
-
-package httplib
-
-import (
-	"bytes"
-	"compress/gzip"
-	"crypto/tls"
-	"encoding/json"
-	"encoding/xml"
-	"io"
-	"io/ioutil"
-	"log"
-	"mime/multipart"
-	"net"
-	"net/http"
-	"net/http/cookiejar"
-	"net/http/httputil"
-	"net/url"
-	"os"
-	"strings"
-	"sync"
-	"time"
-)
-
-var defaultSetting = HTTPSettings{
-	//UserAgent:      "smart-push",
-	Gzip:           true,
-	DumpBody:       true,
-	ConnectTimeout: time.Second * 30,
-	KeepAlive:      time.Second * 60,
-	Transport: &http.Transport{
-		DialContext: (&net.Dialer{
-			Timeout:   time.Second * 30,
-			KeepAlive: time.Second * 60,
-		}).DialContext,
-		MaxIdleConnsPerHost: 3000,
-		MaxIdleConns:        30000,
-	},
-}
-
-var defaultCookieJar http.CookieJar
-var settingMutex sync.Mutex
-
-// createDefaultCookie creates a global cookiejar to store cookies.
-func createDefaultCookie() {
-	settingMutex.Lock()
-	defer settingMutex.Unlock()
-	defaultCookieJar, _ = cookiejar.New(nil)
-}
-
-// SetDefaultSetting Overwrite default settings
-func SetDefaultSetting(setting HTTPSettings) {
-	settingMutex.Lock()
-	defer settingMutex.Unlock()
-	defaultSetting = setting
-}
-
-// NewBeegoRequest return *HTTPRequest with specific method
-func NewHTTPRequest(rawurl, method string) *HTTPRequest {
-	var resp http.Response
-	u, err := url.Parse(rawurl)
-	if err != nil {
-		log.Println("Httplib:", err)
-	}
-	req := http.Request{
-		URL:        u,
-		Method:     method,
-		Header:     make(http.Header),
-		Proto:      "HTTP/1.1",
-		ProtoMajor: 1,
-		ProtoMinor: 1,
-	}
-	return &HTTPRequest{
-		url:     rawurl,
-		req:     &req,
-		params:  map[string][]string{},
-		files:   map[string]string{},
-		setting: defaultSetting,
-		resp:    &resp,
-	}
-}
-
-// Get returns *HTTPRequest with GET method.
-func Get(url string) *HTTPRequest {
-	return NewHTTPRequest(url, "GET")
-}
-
-// Post returns *HTTPRequest with POST method.
-func Post(url string) *HTTPRequest {
-	return NewHTTPRequest(url, "POST")
-}
-
-// Put returns *HTTPRequest with PUT method.
-func Put(url string) *HTTPRequest {
-	return NewHTTPRequest(url, "PUT")
-}
-
-// Delete returns *HTTPRequest DELETE method.
-func Delete(url string) *HTTPRequest {
-	return NewHTTPRequest(url, "DELETE")
-}
-
-// Head returns *HTTPRequest with HEAD method.
-func Head(url string) *HTTPRequest {
-	return NewHTTPRequest(url, "HEAD")
-}
-
-// HTTPSettings is the http.Client setting
-type HTTPSettings struct {
-	ShowDebug       bool
-	UserAgent       string
-	TLSClientConfig *tls.Config
-	Proxy           func(*http.Request) (*url.URL, error)
-	Transport       http.RoundTripper
-	CheckRedirect   func(req *http.Request, via []*http.Request) error
-	EnableCookie    bool
-	Gzip            bool
-	DumpBody        bool
-	Retries         int // if set to -1 means will retry forever
-	ConnectTimeout  time.Duration
-	KeepAlive       time.Duration
-	Timeout         time.Duration
-}
-
-// HTTPRequest provides more useful methods for requesting one url than http.Request.
-type HTTPRequest struct {
-	url     string
-	req     *http.Request
-	params  map[string][]string
-	files   map[string]string
-	setting HTTPSettings
-	resp    *http.Response
-	body    []byte
-	dump    []byte
-
-	client *http.Client
-}
-
-// GetRequest return the request object
-func (b *HTTPRequest) GetRequest() *http.Request {
-	return b.req
-}
-
-// Setting Change request settings
-func (b *HTTPRequest) Setting(setting HTTPSettings) *HTTPRequest {
-	b.setting = setting
-	return b
-}
-
-// SetBasicAuth sets the request's Authorization header to use HTTP Basic Authentication with the provided username and password.
-func (b *HTTPRequest) SetBasicAuth(username, password string) *HTTPRequest {
-	b.req.SetBasicAuth(username, password)
-	return b
-}
-
-// SetEnableCookie sets enable/disable cookiejar
-func (b *HTTPRequest) SetEnableCookie(enable bool) *HTTPRequest {
-	b.setting.EnableCookie = enable
-	return b
-}
-
-// SetUserAgent sets User-Agent header field
-func (b *HTTPRequest) SetUserAgent(useragent string) *HTTPRequest {
-	b.setting.UserAgent = useragent
-	return b
-}
-
-// Debug sets show debug or not when executing request.
-func (b *HTTPRequest) Debug(isdebug bool) *HTTPRequest {
-	b.setting.ShowDebug = isdebug
-	return b
-}
-
-// Retries sets Retries times.
-// default is 0 means no retried.
-// -1 means retried forever.
-// others means retried times.
-func (b *HTTPRequest) Retries(times int) *HTTPRequest {
-	b.setting.Retries = times
-	return b
-}
-
-// DumpBody setting whether need to Dump the Body.
-func (b *HTTPRequest) DumpBody(isdump bool) *HTTPRequest {
-	b.setting.DumpBody = isdump
-	return b
-}
-
-// DumpRequest return the DumpRequest
-func (b *HTTPRequest) DumpRequest() []byte {
-	return b.dump
-}
-
-// SetTimeout sets connect time out and read-write time out for BeegoRequest.
-func (b *HTTPRequest) SetTimeout(timeout time.Duration) *HTTPRequest {
-	b.setting.Timeout = timeout
-	return b
-}
-
-// SetTLSClientConfig sets tls connection configurations if visiting https url.
-func (b *HTTPRequest) SetTLSClientConfig(config *tls.Config) *HTTPRequest {
-	b.setting.TLSClientConfig = config
-	return b
-}
-
-// Header add header item string in request.
-func (b *HTTPRequest) Header(key, value string) *HTTPRequest {
-	b.req.Header.Set(key, value)
-	return b
-}
-
-// SetHost set the request host
-func (b *HTTPRequest) SetHost(host string) *HTTPRequest {
-	b.req.Host = host
-	return b
-}
-
-// SetProtocolVersion Set the protocol version for incoming requests.
-// Client requests always use HTTP/1.1.
-func (b *HTTPRequest) SetProtocolVersion(vers string) *HTTPRequest {
-	if len(vers) == 0 {
-		vers = "HTTP/1.1"
-	}
-
-	major, minor, ok := http.ParseHTTPVersion(vers)
-	if ok {
-		b.req.Proto = vers
-		b.req.ProtoMajor = major
-		b.req.ProtoMinor = minor
-	}
-
-	return b
-}
-
-// SetCookie add cookie into request.
-func (b *HTTPRequest) SetCookie(cookie *http.Cookie) *HTTPRequest {
-	b.req.Header.Add("Cookie", cookie.String())
-	return b
-}
-
-// SetTransport set the setting transport
-func (b *HTTPRequest) SetTransport(transport http.RoundTripper) *HTTPRequest {
-	b.setting.Transport = transport
-	return b
-}
-
-// SetProxy set the http proxy
-// example:
-//
-//	func(req *http.Request) (*url.URL, error) {
-// 		u, _ := url.ParseRequestURI("http://127.0.0.1:8118")
-// 		return u, nil
-// 	}
-func (b *HTTPRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) *HTTPRequest {
-	b.setting.Proxy = proxy
-	return b
-}
-
-// SetCheckRedirect specifies the policy for handling redirects.
-//
-// If CheckRedirect is nil, the Client uses its default policy,
-// which is to stop after 10 consecutive requests.
-func (b *HTTPRequest) SetCheckRedirect(redirect func(req *http.Request, via []*http.Request) error) *HTTPRequest {
-	b.setting.CheckRedirect = redirect
-	return b
-}
-
-// Param adds query param in to request.
-// params build query string as ?key1=value1&key2=value2...
-func (b *HTTPRequest) Param(key, value string) *HTTPRequest {
-	if param, ok := b.params[key]; ok {
-		b.params[key] = append(param, value)
-	} else {
-		b.params[key] = []string{value}
-	}
-	return b
-}
-
-// PostFile add a post file to the request
-func (b *HTTPRequest) PostFile(formname, filename string) *HTTPRequest {
-	b.files[formname] = filename
-	return b
-}
-
-// Body adds request raw body.
-// it supports string and []byte.
-func (b *HTTPRequest) Body(data interface{}) *HTTPRequest {
-	switch t := data.(type) {
-	case string:
-		bf := bytes.NewBufferString(t)
-		b.req.Body = ioutil.NopCloser(bf)
-		b.req.ContentLength = int64(len(t))
-	case []byte:
-		bf := bytes.NewBuffer(t)
-		b.req.Body = ioutil.NopCloser(bf)
-		b.req.ContentLength = int64(len(t))
-	}
-	return b
-}
-
-// JSONBody adds request raw body encoding by JSON.
-func (b *HTTPRequest) JSONBody(obj interface{}) (*HTTPRequest, error) {
-	if b.req.Body == nil && obj != nil {
-		byts, err := json.Marshal(obj)
-		if err != nil {
-			return b, err
-		}
-		b.req.Body = ioutil.NopCloser(bytes.NewReader(byts))
-		b.req.ContentLength = int64(len(byts))
-		b.req.Header.Set("Content-Type", "application/json")
-	}
-	return b, nil
-}
-
-func (b *HTTPRequest) buildURL(paramBody string) {
-	// build GET url with query string
-	if b.req.Method == "GET" && len(paramBody) > 0 {
-		if strings.Contains(b.url, "?") {
-			b.url += "&" + paramBody
-		} else {
-			b.url = b.url + "?" + paramBody
-		}
-		return
-	}
-
-	// build POST/PUT/PATCH url and body
-	if (b.req.Method == "POST" || b.req.Method == "PUT" || b.req.Method == "PATCH" || b.req.Method == "DELETE") && b.req.Body == nil {
-		// with files
-		if len(b.files) > 0 {
-			pr, pw := io.Pipe()
-			bodyWriter := multipart.NewWriter(pw)
-			go func() {
-				for formname, filename := range b.files {
-					fileWriter, err := bodyWriter.CreateFormFile(formname, filename)
-					if err != nil {
-						log.Println("Httplib:", err)
-					}
-					fh, err := os.Open(filename)
-					if err != nil {
-						log.Println("Httplib:", err)
-					}
-					//iocopy
-					_, err = io.Copy(fileWriter, fh)
-					fh.Close()
-					if err != nil {
-						log.Println("Httplib:", err)
-					}
-				}
-				for k, v := range b.params {
-					for _, vv := range v {
-						bodyWriter.WriteField(k, vv)
-					}
-				}
-				bodyWriter.Close()
-				pw.Close()
-			}()
-			b.Header("Content-Type", bodyWriter.FormDataContentType())
-			b.req.Body = ioutil.NopCloser(pr)
-			return
-		}
-
-		// with params
-		if len(paramBody) > 0 {
-			b.Header("Content-Type", "application/x-www-form-urlencoded")
-			b.Body(paramBody)
-		}
-	}
-}
-
-func (b *HTTPRequest) getResponse() (*http.Response, error) {
-	if b.resp.StatusCode != 0 {
-		return b.resp, nil
-	}
-	resp, err := b.DoRequest()
-	if err != nil {
-		return nil, err
-	}
-	b.resp = resp
-	return resp, nil
-}
-
-// DoRequest will do the client.Do
-func (b *HTTPRequest) DoRequest() (resp *http.Response, err error) {
-	var paramBody string
-	if len(b.params) > 0 {
-		var buf bytes.Buffer
-		for k, v := range b.params {
-			for _, vv := range v {
-				buf.WriteString(url.QueryEscape(k))
-				buf.WriteByte('=')
-				buf.WriteString(url.QueryEscape(vv))
-				buf.WriteByte('&')
-			}
-		}
-		paramBody = buf.String()
-		paramBody = paramBody[0 : len(paramBody)-1]
-	}
-
-	b.buildURL(paramBody)
-	url, err := url.Parse(b.url)
-	if err != nil {
-		return nil, err
-	}
-
-	b.req.URL = url
-
-	trans := b.setting.Transport
-
-	if trans == nil {
-		// create default transport
-		trans = &http.Transport{
-			TLSClientConfig: b.setting.TLSClientConfig,
-			Proxy:           b.setting.Proxy,
-			DialContext: (&net.Dialer{
-				Timeout:   b.setting.ConnectTimeout,
-				KeepAlive: b.setting.KeepAlive,
-			}).DialContext,
-			MaxIdleConnsPerHost: -1,
-		}
-	} else {
-		// if b.transport is *http.Transport then set the settings.
-		if t, ok := trans.(*http.Transport); ok {
-			if t.TLSClientConfig == nil {
-				t.TLSClientConfig = b.setting.TLSClientConfig
-			}
-			if t.Proxy == nil {
-				t.Proxy = b.setting.Proxy
-			}
-			if t.DialContext == nil {
-				t.DialContext = (&net.Dialer{
-					Timeout:   b.setting.ConnectTimeout,
-					KeepAlive: b.setting.KeepAlive,
-				}).DialContext
-			}
-		}
-	}
-
-	var jar http.CookieJar
-	if b.setting.EnableCookie {
-		if defaultCookieJar == nil {
-			createDefaultCookie()
-		}
-		jar = defaultCookieJar
-	}
-
-	client := &http.Client{
-		Transport: trans,
-		Jar:       jar,
-	}
-
-	client.Timeout = b.setting.Timeout
-
-	if b.setting.UserAgent != "" && b.req.Header.Get("User-Agent") == "" {
-		b.req.Header.Set("User-Agent", b.setting.UserAgent)
-	}
-
-	if b.setting.CheckRedirect != nil {
-		client.CheckRedirect = b.setting.CheckRedirect
-	}
-
-	if b.setting.ShowDebug {
-		dump, err := httputil.DumpRequest(b.req, b.setting.DumpBody)
-		if err != nil {
-			log.Println(err.Error())
-		}
-		b.dump = dump
-	}
-	// retries default value is 0, it will run once.
-	// retries equal to -1, it will run forever until success
-	// retries is setted, it will retries fixed times.
-	for i := 0; b.setting.Retries == -1 || i <= b.setting.Retries; i++ {
-		resp, err = client.Do(b.req)
-		if err == nil {
-			break
-		}
-	}
-	return resp, err
-}
-
-// String returns the body string in response.
-// it calls Response inner.
-func (b *HTTPRequest) String() (string, error) {
-	data, err := b.Bytes()
-	if err != nil {
-		return "", err
-	}
-
-	return string(data), nil
-}
-
-// Bytes returns the body []byte in response.
-// it calls Response inner.
-func (b *HTTPRequest) Bytes() ([]byte, error) {
-	if b.body != nil {
-		return b.body, nil
-	}
-	resp, err := b.getResponse()
-	if err != nil {
-		return nil, err
-	}
-	if resp.Body == nil {
-		return nil, nil
-	}
-	defer resp.Body.Close()
-	if b.setting.Gzip && resp.Header.Get("Content-Encoding") == "gzip" {
-		reader, err := gzip.NewReader(resp.Body)
-		if err != nil {
-			return nil, err
-		}
-		b.body, err = ioutil.ReadAll(reader)
-		return b.body, err
-	}
-	b.body, err = ioutil.ReadAll(resp.Body)
-	return b.body, err
-}
-
-// ToFile saves the body data in response to one file.
-// it calls Response inner.
-func (b *HTTPRequest) ToFile(filename string) error {
-	f, err := os.Create(filename)
-	if err != nil {
-		return err
-	}
-	defer f.Close()
-
-	resp, err := b.getResponse()
-	if err != nil {
-		return err
-	}
-	if resp.Body == nil {
-		return nil
-	}
-	defer resp.Body.Close()
-	_, err = io.Copy(f, resp.Body)
-	return err
-}
-
-// ToJSON returns the map that marshals from the body bytes as json in response .
-// it calls Response inner.
-func (b *HTTPRequest) ToJSON(v interface{}) error {
-	data, err := b.Bytes()
-	if err != nil {
-		return err
-	}
-	return json.Unmarshal(data, v)
-}
-
-// ToXML returns the map that marshals from the body bytes as xml in response .
-// it calls Response inner.
-func (b *HTTPRequest) ToXML(v interface{}) error {
-	data, err := b.Bytes()
-	if err != nil {
-		return err
-	}
-	return xml.Unmarshal(data, v)
-}
-
-// Response executes request client gets response mannually.
-func (b *HTTPRequest) Response() (*http.Response, error) {
-	return b.getResponse()
-}

+ 0 - 221
common/identify/single.go

@@ -1,221 +0,0 @@
-package identify
-
-import (
-	"encoding/json"
-	"strconv"
-	"strings"
-)
-
-// SingleItem Nv和Ov的组合规则:
-// 1. Nv是什么 || Nv不是什么
-// 2. Ov是什么 || Ov不是什么
-//
-// 1与2的布尔运行结果交叉后, 得到4种组合 00, 01, 10, 11.
-// 一个事件的判断, 就处在[00, 01, 10, 11]的其中, 有一项为nil, 则表示该项直接通过
-// 多个事件, 就判断多个[00, 01, 10, 11], 所以得出以下结论:
-// 针对设备配置如下规则:
-//
-//	{
-//			"EventName 1": {
-//	          "NvIn": [1,2,3,4],
-//	          "NvNotIn": [5,6,7,8],
-//	          "OvIn": [1,2,3,4],
-//			  "OvNotIn": [5,6,7,8],
-//			},
-//			"EventName 2": {
-//	          "NvIn": [1,2,3,4],
-//	          "NvNotIn": [5,6,7,8],
-//			  "OvNotIn": [5,6,7,8],
-//			},
-//	     ......
-//	}
-type SingleItem struct {
-	nv string // 当前值
-	ov string // 上一次的值
-
-	rules map[string]Rule
-}
-
-func (s *SingleItem) Check(ov, nv string) string {
-	defer func() {
-		s.nv = ""
-		s.ov = ""
-	}()
-	s.nv = nv
-	s.ov = ov
-	for event, rule := range s.rules {
-		if s.check(rule) {
-			return event
-		}
-	}
-	return ""
-}
-
-func (s *SingleItem) check(rule Rule) bool {
-	var ovIn, ovNotIn, nvIn, nvNotIn = true, true, true, true
-	if rule.OvIn != nil {
-		ovIn = s.ovIn(rule.OvIn)
-	}
-
-	if rule.OvNotIn != nil {
-		ovNotIn = s.ovNotIn(rule.OvNotIn)
-	}
-
-	if rule.NvIn != nil {
-		nvIn = s.nvIn(rule.NvIn)
-	}
-
-	if rule.NvNotIn != nil {
-		nvNotIn = s.nvNotIn(rule.NvNotIn)
-	}
-
-	return ovIn && ovNotIn && nvIn && nvNotIn
-}
-
-func (s *SingleItem) ovIn(slice []string) bool {
-	b := true
-	if slice != nil && s.inSlice(slice, s.ov) == false {
-		b = false
-	}
-	return b
-}
-
-func (s *SingleItem) ovNotIn(slice []string) bool {
-	b := true
-	if slice != nil && s.inSlice(slice, s.ov) == true {
-		b = false
-	}
-	return b
-}
-
-func (s *SingleItem) nvIn(slice []string) bool {
-	b := true
-	if slice != nil && s.inSlice(slice, s.nv) == false {
-		b = false
-	}
-	return b
-}
-
-func (s *SingleItem) nvNotIn(slice []string) bool {
-	b := true
-	if slice != nil && s.inSlice(slice, s.nv) == true {
-		b = false
-	}
-	return b
-}
-
-func (s *SingleItem) inSlice(slice []string, v string) bool {
-	for _, s2 := range slice {
-		s1 := s.transVar(s2)
-
-		if s1 == v {
-			return true
-		}
-		// 数字比较
-		if _, err := strconv.ParseInt(s1, 10, 64); err != nil {
-			return s.compare(s1, v)
-		}
-	}
-	return false
-}
-
-func (s *SingleItem) transVar(v string) string {
-	if v == VAR_NV {
-		v = s.nv
-	}
-
-	if v == VAR_OV {
-		v = s.ov
-	}
-	return v
-}
-
-func (s *SingleItem) compare(r string, v string) bool {
-	if strings.Index(r, "...") > -1 {
-		return s.compareRange(r, v)
-	} else if strings.Index(r, " ") > 1 {
-		return s.compareLogic(r, v)
-	}
-
-	return false
-}
-
-func (s *SingleItem) compareRange(r string, v string) bool {
-	rl := strings.Split(r, "...")
-	if len(rl) != 2 {
-		return false
-	}
-
-	var min, max, vi int64 = 0, 0, 0
-	if tmin, err := strconv.ParseInt(strings.TrimSpace(rl[0]), 10, 64); err == nil {
-		min = tmin
-	} else {
-		return false
-	}
-
-	if tmax, err := strconv.ParseInt(strings.TrimSpace(rl[1]), 10, 64); err == nil {
-		max = tmax
-	} else {
-		return false
-	}
-
-	if tvi, err := strconv.ParseInt(strings.TrimSpace(v), 10, 64); err == nil {
-		vi = tvi
-	} else {
-		return false
-	}
-
-	return min <= vi && vi <= max
-}
-
-func (s *SingleItem) compareLogic(r string, v string) bool {
-	rl := strings.Split(r, " ")
-	if len(rl) != 2 {
-		return false
-	}
-
-	var ri, vi int64 = 0, 0
-	if tri, err := strconv.ParseInt(strings.TrimSpace(rl[1]), 10, 64); err == nil {
-		ri = tri
-	} else {
-		return false
-	}
-
-	if tvi, err := strconv.ParseInt(strings.TrimSpace(v), 10, 64); err == nil {
-		vi = tvi
-	} else {
-		return false
-	}
-
-	switch rl[0] {
-	case "<":
-		return vi < ri
-	case "<=":
-		return vi <= ri
-	case ">":
-		return vi > ri
-	case ">=":
-		return vi >= ri
-	case "!=":
-		return vi != ri
-	}
-
-	return false
-}
-
-// NewSingleCheck 生成一个检测对象, 之后调用Check来获得事件名称
-func NewSingleCheck(rules map[string]Rule) *SingleItem {
-	return &SingleItem{
-		rules: rules,
-	}
-}
-
-func StepTest(ov, nv, ruleString string) string {
-	rules := make(map[string]Rule)
-	err := json.Unmarshal([]byte(ruleString), &rules)
-	if err != nil {
-		println(err.Error())
-	}
-
-	return NewSingleCheck(rules).Check(ov, nv)
-}

+ 0 - 11
common/identify/single_test.go

@@ -1,11 +0,0 @@
-package identify
-
-import "testing"
-
-func TestStepTest(t *testing.T) {
-	// 只要值发生改变就触发  旧值的可选范围中, 不包含新值
-	// 适合液位变化, 开关量, 敏感数据监控
-	rule := `{"xxx":{"OvNotIn":["$nv"]}}`
-	x := StepTest("5", "6", rule)
-	t.Log(x)
-}

+ 0 - 35
common/identify/types.go

@@ -1,35 +0,0 @@
-package identify
-
-import (
-	"database/sql/driver"
-	"encoding/json"
-)
-
-type Rule struct {
-	NvIn    []string `json:"NvIn"`
-	NvNotIn []string `json:"NvNotIn"`
-	OvIn    []string `json:"OvIn"`
-	OvNotIn []string `json:"OvNotIn"`
-}
-
-type MultiRule []Rule
-
-// Scan 实现方法
-func (d *MultiRule) Scan(input interface{}) error {
-	_ = json.Unmarshal(input.([]byte), &d)
-	return nil
-}
-
-func (d MultiRule) Value() (driver.Value, error) {
-	return json.Marshal(d)
-}
-
-// Scan 实现方法
-func (d *Rule) Scan(input interface{}) error {
-	_ = json.Unmarshal(input.([]byte), &d)
-	return nil
-}
-
-func (d Rule) Value() (driver.Value, error) {
-	return json.Marshal(d)
-}

+ 0 - 6
common/identify/vars.go

@@ -1,6 +0,0 @@
-package identify
-
-const (
-	VAR_NV = "$nv"
-	VAR_OV = "$ov"
-)

+ 1 - 1
deploy/test.sh

@@ -53,4 +53,4 @@ deploy () {
     restart $1;
 }
 
-deploy 'organization'
+deploy $1

+ 2 - 0
go.mod

@@ -6,9 +6,11 @@ require (
 	github.com/go-redis/redis/v8 v8.11.5
 	github.com/jinzhu/copier v0.4.0
 	github.com/pkg/errors v0.9.1
+	github.com/streadway/amqp v1.1.0
 	github.com/zeromicro/go-zero v1.6.0
 	google.golang.org/grpc v1.59.0
 	google.golang.org/protobuf v1.31.0
+	gtlib.local/gaoyagang/gt-common v1.0.25
 )
 
 require (

+ 4 - 0
go.sum

@@ -123,6 +123,8 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR
 github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
 github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM=
+github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
@@ -265,6 +267,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gtlib.local/gaoyagang/gt-common v1.0.25 h1:W+BF06A+Dtn/nFKSDPGgNJs9jIY1O8dEjs+YLv7VSJ8=
+gtlib.local/gaoyagang/gt-common v1.0.25/go.mod h1:iSkMOxsD4yBY3S3IXj1OZLVlN+FnWN+9Nxpt1PH6g3o=
 k8s.io/api v0.28.3 h1:Gj1HtbSdB4P08C8rs9AR94MfSGpRhJgsS+GF9V26xMM=
 k8s.io/api v0.28.3/go.mod h1:MRCV/jr1dW87/qJnZ57U5Pak65LGmQVkKTzf3AtKFHc=
 k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A=

+ 9 - 0
vendor/modules.txt

@@ -169,6 +169,9 @@ github.com/prometheus/procfs/internal/util
 # github.com/spaolacci/murmur3 v1.1.0
 ## explicit
 github.com/spaolacci/murmur3
+# github.com/streadway/amqp v1.1.0
+## explicit; go 1.10
+github.com/streadway/amqp
 # github.com/zeromicro/go-zero v1.6.0
 ## explicit; go 1.19
 github.com/zeromicro/go-zero/core/breaker
@@ -503,6 +506,12 @@ gopkg.in/yaml.v2
 # gopkg.in/yaml.v3 v3.0.1
 ## explicit
 gopkg.in/yaml.v3
+# gtlib.local/gaoyagang/gt-common v1.0.25
+## explicit; go 1.17
+gtlib.local/gaoyagang/gt-common/envitem
+gtlib.local/gaoyagang/gt-common/httplib
+gtlib.local/gaoyagang/gt-common/identify
+gtlib.local/gaoyagang/gt-common/rabbitMQ
 # k8s.io/api v0.28.3
 ## explicit; go 1.20
 k8s.io/api/admissionregistration/v1