diff --git a/Dockerfile b/Dockerfile index 254c30d..7f43947 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,9 +5,13 @@ WORKDIR /go/src/panda COPY ./pandax ./ COPY ./config.yml ./ COPY ./resource ./resource +COPY ./uploads ./uploads RUN chmod 755 ./pandax EXPOSE 7788 +EXPOSE 9001 +EXPOSE 8801 +EXPOSE 5060 ENTRYPOINT ./pandax \ No newline at end of file diff --git a/README.md b/README.md index e0c4780..5de0d3e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # PandaX
-

PandaX 物联网快速开发基座

+

PandaX企业级物联网平台快速开发框架

基于Go前后端分离架构,代码精简,开箱即用,前端紧随前沿 Vue3.0 + TypeScript + vite3 + Element-plus技术

@@ -62,13 +62,12 @@ - **`代码生成`** - _可直接通过框架生成前后端基础业务代码(go、vue),减少开发时间。_ - **`组态大屏设计器`** - _通过拖拉拽直接生成组态、大屏。_ - **`规则链设计`** - _物联网规则链过滤_ +- **`表单设计`** - _表单设计_ - **`报表设计`** - _数据报表设计_ - **`产品管理`** - _设备的产品管理_ - **`设备管理`** - _设备的管理_ ## 🛠 以后可能会有什么NB功能? -- 开发中 **`应用管理`** - _基于K8S编排能力,创建应用管理模块。_ -- 开发中 **`多协议接入`** - _根据插件形式创建多协议接入_ - 开发中 **`3D组态`** - _根据2d组态自动生成3D组态_ - 开发中 **`数字孪生编辑器`** - _web直接构建数字孪生模型_ @@ -107,11 +106,6 @@ 更多功能请访问系统。 - -## ❤特别鸣谢 - - * 感谢[VUE-NEXT-ADMIN](https://gitee.com/lyt-top/vue-next-admin) - --- 版权说明 --- diff --git a/apps/develop/api/gen.go b/apps/develop/api/gen.go index d0dcda8..ed37f3b 100644 --- a/apps/develop/api/gen.go +++ b/apps/develop/api/gen.go @@ -1,7 +1,7 @@ package api import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/develop/gen" "pandax/apps/develop/services" ) diff --git a/apps/develop/api/table.go b/apps/develop/api/table.go index 3abd4c8..2fb09b7 100644 --- a/apps/develop/api/table.go +++ b/apps/develop/api/table.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/develop/api/vo" "pandax/apps/develop/entity" "pandax/apps/develop/gen" diff --git a/apps/develop/entity/dev_gen_table.go b/apps/develop/entity/dev_gen_table.go index 0d16202..2a61572 100644 --- a/apps/develop/entity/dev_gen_table.go +++ b/apps/develop/entity/dev_gen_table.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type DevGenTable struct { TableId int64 `gorm:"primaryKey;autoIncrement" json:"tableId"` // 编号 diff --git a/apps/develop/gen/gen.go b/apps/develop/gen/gen.go index 1856c2a..3acacda 100644 --- a/apps/develop/gen/gen.go +++ b/apps/develop/gen/gen.go @@ -3,8 +3,8 @@ package gen import ( "bytes" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/utils" "github.com/kakuilan/kgo" "os" "pandax/apps/develop/entity" diff --git a/apps/develop/router/gen.go b/apps/develop/router/gen.go index 9d10a19..724579a 100644 --- a/apps/develop/router/gen.go +++ b/apps/develop/router/gen.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/develop/api" diff --git a/apps/develop/router/table.go b/apps/develop/router/table.go index d073090..343db9b 100644 --- a/apps/develop/router/table.go +++ b/apps/develop/router/table.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/develop/api" diff --git a/apps/develop/services/gen_table.go b/apps/develop/services/gen_table.go index 5f279c4..dc0f24b 100644 --- a/apps/develop/services/gen_table.go +++ b/apps/develop/services/gen_table.go @@ -2,8 +2,8 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/develop/entity" "pandax/pkg/global" ) diff --git a/apps/develop/services/gen_table_column.go b/apps/develop/services/gen_table_column.go index 41d69c7..42d998f 100644 --- a/apps/develop/services/gen_table_column.go +++ b/apps/develop/services/gen_table_column.go @@ -2,7 +2,7 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/develop/entity" "pandax/pkg/global" ) diff --git a/apps/device/api/device.go b/apps/device/api/device.go index ed7a8fe..d99dc63 100644 --- a/apps/device/api/device.go +++ b/apps/device/api/device.go @@ -8,9 +8,9 @@ package api import ( "encoding/json" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/pkg/global" "pandax/pkg/mqtt" @@ -107,7 +107,7 @@ func (p *DeviceApi) DownAttribute(rc *restfulx.ReqCtx) { key: value, } content, _ := json.Marshal(contentMap) - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, RequestId: 1, Mode: "single"} + var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "single"} rpc.GetRequestId() err := rpc.RequestAttributes(mqtt.RpcPayload{Params: string(content)}) biz.ErrIsNil(err, "属性下发失败") diff --git a/apps/device/api/device_alarm.go b/apps/device/api/device_alarm.go index d8a167d..ede50e8 100644 --- a/apps/device/api/device_alarm.go +++ b/apps/device/api/device_alarm.go @@ -2,8 +2,8 @@ package api // ========================================================================== import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "strings" "pandax/apps/device/entity" diff --git a/apps/device/api/device_cmd.go b/apps/device/api/device_cmd.go index 1a806c5..ad2f289 100644 --- a/apps/device/api/device_cmd.go +++ b/apps/device/api/device_cmd.go @@ -2,9 +2,9 @@ package api // ========================================================================== import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/pkg/global" "pandax/pkg/mqtt" @@ -50,7 +50,7 @@ func (p *DeviceCmdLogApi) InsertDeviceCmdLog(rc *restfulx.ReqCtx) { // 下发指令 var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "single"} rpc.GetRequestId() - err = rpc.RequestCmd(mqtt.RpcPayload{Method: data.CmdName, Params: data.CmdContent}) + _, err = rpc.RequestCmd(mqtt.RpcPayload{Method: data.CmdName, Params: data.CmdContent}) if err != nil { global.Log.Error("指令下发失败") } diff --git a/apps/device/api/device_group.go b/apps/device/api/device_group.go index 106317a..d5f62ed 100644 --- a/apps/device/api/device_group.go +++ b/apps/device/api/device_group.go @@ -1,7 +1,7 @@ package api import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/api/product.go b/apps/device/api/product.go index 4cff209..ac335d9 100644 --- a/apps/device/api/product.go +++ b/apps/device/api/product.go @@ -7,9 +7,9 @@ package api // ========================================================================== import ( "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/pkg/global" "strings" diff --git a/apps/device/api/product_category.go b/apps/device/api/product_category.go index 9e36c75..bdbb1a4 100644 --- a/apps/device/api/product_category.go +++ b/apps/device/api/product_category.go @@ -1,7 +1,7 @@ package api import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/api/product_ota.go b/apps/device/api/product_ota.go index 58246b1..9e32354 100644 --- a/apps/device/api/product_ota.go +++ b/apps/device/api/product_ota.go @@ -2,8 +2,8 @@ package api // ========================================================================== import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "strings" diff --git a/apps/device/api/product_template.go b/apps/device/api/product_template.go index 8f4f22a..b254b85 100644 --- a/apps/device/api/product_template.go +++ b/apps/device/api/product_template.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "log" "pandax/pkg/global" diff --git a/apps/device/router/device.go b/apps/device/router/device.go index 8b24c90..765400c 100644 --- a/apps/device/router/device.go +++ b/apps/device/router/device.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/router/device_alarm.go b/apps/device/router/device_alarm.go index a1de111..c882d14 100644 --- a/apps/device/router/device_alarm.go +++ b/apps/device/router/device_alarm.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/router/device_cmd.go b/apps/device/router/device_cmd.go index dcc292b..b734ea8 100644 --- a/apps/device/router/device_cmd.go +++ b/apps/device/router/device_cmd.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/router/device_group.go b/apps/device/router/device_group.go index b65bad2..75be435 100644 --- a/apps/device/router/device_group.go +++ b/apps/device/router/device_group.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/device/api" diff --git a/apps/device/router/product.go b/apps/device/router/product.go index 5dd22b9..0dcce47 100644 --- a/apps/device/router/product.go +++ b/apps/device/router/product.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/router/product_category.go b/apps/device/router/product_category.go index 15ac48d..08068cb 100644 --- a/apps/device/router/product_category.go +++ b/apps/device/router/product_category.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/device/api" diff --git a/apps/device/router/product_ota.go b/apps/device/router/product_ota.go index 24663a5..092ee7d 100644 --- a/apps/device/router/product_ota.go +++ b/apps/device/router/product_ota.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/router/product_template.go b/apps/device/router/product_template.go index 4c0ac9c..a6945d2 100644 --- a/apps/device/router/product_template.go +++ b/apps/device/router/product_template.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/api" "pandax/apps/device/entity" "pandax/apps/device/services" diff --git a/apps/device/services/device.go b/apps/device/services/device.go index adfcd06..43ad352 100644 --- a/apps/device/services/device.go +++ b/apps/device/services/device.go @@ -2,7 +2,7 @@ package services import ( "context" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" "pandax/pkg/tool" diff --git a/apps/device/services/device_alarm.go b/apps/device/services/device_alarm.go index 0b2428d..b357e91 100644 --- a/apps/device/services/device_alarm.go +++ b/apps/device/services/device_alarm.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" ) diff --git a/apps/device/services/device_cmd_log.go b/apps/device/services/device_cmd_log.go index 674a4c3..025ff39 100644 --- a/apps/device/services/device_cmd_log.go +++ b/apps/device/services/device_cmd_log.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" "time" diff --git a/apps/device/services/device_group.go b/apps/device/services/device_group.go index 8666308..af9ccff 100644 --- a/apps/device/services/device_group.go +++ b/apps/device/services/device_group.go @@ -2,7 +2,7 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" ) diff --git a/apps/device/services/product.go b/apps/device/services/product.go index 289a0b1..f15c575 100644 --- a/apps/device/services/product.go +++ b/apps/device/services/product.go @@ -2,7 +2,7 @@ package services import ( "context" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "log" "pandax/apps/device/entity" ruleEntity "pandax/apps/rule/entity" diff --git a/apps/device/services/product_category.go b/apps/device/services/product_category.go index 2aa5af8..c1da14c 100644 --- a/apps/device/services/product_category.go +++ b/apps/device/services/product_category.go @@ -2,7 +2,7 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" ) diff --git a/apps/device/services/product_ota.go b/apps/device/services/product_ota.go index 00e53f2..f832e6f 100644 --- a/apps/device/services/product_ota.go +++ b/apps/device/services/product_ota.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "log" "pandax/apps/device/entity" "pandax/pkg/global" diff --git a/apps/device/services/product_template.go b/apps/device/services/product_template.go index 0bffa31..50fbb71 100644 --- a/apps/device/services/product_template.go +++ b/apps/device/services/product_template.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" "strings" diff --git a/apps/job/api/job.go b/apps/job/api/job.go index e2b73ab..9a17629 100644 --- a/apps/job/api/job.go +++ b/apps/job/api/job.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "log" "pandax/apps/job/api/from" diff --git a/apps/job/api/log_job.go b/apps/job/api/log_job.go index 01122c5..5c24242 100644 --- a/apps/job/api/log_job.go +++ b/apps/job/api/log_job.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/job/entity" "pandax/apps/job/services" ) diff --git a/apps/job/router/job.go b/apps/job/router/job.go index 36cad32..331b738 100644 --- a/apps/job/router/job.go +++ b/apps/job/router/job.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/job/api" diff --git a/apps/job/router/job_log.go b/apps/job/router/job_log.go index d9c4ef4..823a1bd 100644 --- a/apps/job/router/job_log.go +++ b/apps/job/router/job_log.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/job/api" diff --git a/apps/job/services/job.go b/apps/job/services/job.go index cf79a57..a6af771 100644 --- a/apps/job/services/job.go +++ b/apps/job/services/job.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/job/entity" "pandax/pkg/global" ) diff --git a/apps/job/services/log_job.go b/apps/job/services/log_job.go index 5b40198..9697593 100644 --- a/apps/job/services/log_job.go +++ b/apps/job/services/log_job.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/job/entity" "pandax/pkg/global" ) diff --git a/apps/log/api/log_login.go b/apps/log/api/log_login.go index e346178..400f8c9 100644 --- a/apps/log/api/log_login.go +++ b/apps/log/api/log_login.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/log/entity" "pandax/apps/log/services" ) diff --git a/apps/log/api/log_oper.go b/apps/log/api/log_oper.go index 564653b..903059d 100644 --- a/apps/log/api/log_oper.go +++ b/apps/log/api/log_oper.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "log" "pandax/apps/log/entity" "pandax/apps/log/services" diff --git a/apps/log/entity/log_login.go b/apps/log/entity/log_login.go index f297ec5..2f6d7ea 100644 --- a/apps/log/entity/log_login.go +++ b/apps/log/entity/log_login.go @@ -1,7 +1,7 @@ package entity import ( - "github.com/XM-GO/PandaKit/model" + "github.com/PandaXGO/PandaKit/model" "time" ) diff --git a/apps/log/entity/log_oper.go b/apps/log/entity/log_oper.go index 11bd57c..fdee662 100644 --- a/apps/log/entity/log_oper.go +++ b/apps/log/entity/log_oper.go @@ -1,7 +1,7 @@ package entity import ( - "github.com/XM-GO/PandaKit/model" + "github.com/PandaXGO/PandaKit/model" ) type LogOper struct { diff --git a/apps/log/router/login_log.go b/apps/log/router/login_log.go index 54dec1b..f1ebcff 100644 --- a/apps/log/router/login_log.go +++ b/apps/log/router/login_log.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/log/api" diff --git a/apps/log/router/oper_log.go b/apps/log/router/oper_log.go index 25f1d9e..044ebdb 100644 --- a/apps/log/router/oper_log.go +++ b/apps/log/router/oper_log.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/log/api" diff --git a/apps/log/services/log_login.go b/apps/log/services/log_login.go index 898af23..6e99936 100644 --- a/apps/log/services/log_login.go +++ b/apps/log/services/log_login.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/log/entity" "pandax/pkg/global" ) diff --git a/apps/log/services/log_oper.go b/apps/log/services/log_oper.go index d90155e..1d2f380 100644 --- a/apps/log/services/log_oper.go +++ b/apps/log/services/log_oper.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/log/entity" "pandax/pkg/global" ) diff --git a/apps/rule/api/rulechain.go b/apps/rule/api/rulechain.go index 07f4035..b95172b 100644 --- a/apps/rule/api/rulechain.go +++ b/apps/rule/api/rulechain.go @@ -2,9 +2,9 @@ package api import ( "context" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "github.com/kakuilan/kgo" "pandax/apps/rule/entity" "pandax/apps/rule/services" @@ -24,9 +24,8 @@ func (r *RuleChainApi) GetNodeLabels(rc *restfulx.ReqCtx) { func (r *RuleChainApi) RuleChainTest(rc *restfulx.ReqCtx) { code := restfulx.QueryParam(rc, "code") instance, _ := rule_engine.NewRuleChainInstance([]byte(code)) - newMessage := message.NewMessage() - newMessage.SetMetadata(message.NewMetadata()) - instance.StartRuleChain(context.Background(), newMessage) + msg := message.NewMessage("1", message.TelemetryMes, message.Msg{"temperature": 60.4, "humidity": 32.5}, message.Metadata{}) + instance.StartRuleChain(context.Background(), msg) rc.ResData = []map[string]interface{}{} } diff --git a/apps/rule/api/rulechain_log.go b/apps/rule/api/rulechain_log.go index f0b9a6a..8c190fd 100644 --- a/apps/rule/api/rulechain_log.go +++ b/apps/rule/api/rulechain_log.go @@ -1,8 +1,8 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/rule/entity" "pandax/apps/rule/services" "pandax/pkg/rule_engine/nodes" diff --git a/apps/rule/router/rulechain.go b/apps/rule/router/rulechain.go index 8a50b41..f5e07ab 100644 --- a/apps/rule/router/rulechain.go +++ b/apps/rule/router/rulechain.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/rule/api" diff --git a/apps/rule/router/rulechain_log.go b/apps/rule/router/rulechain_log.go index 6cfc666..772cb03 100644 --- a/apps/rule/router/rulechain_log.go +++ b/apps/rule/router/rulechain_log.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/rule/api" diff --git a/apps/rule/services/rulechain.go b/apps/rule/services/rulechain.go index 35088ba..2f087eb 100644 --- a/apps/rule/services/rulechain.go +++ b/apps/rule/services/rulechain.go @@ -7,7 +7,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "log" "pandax/apps/rule/entity" "pandax/pkg/events" diff --git a/apps/rule/services/rulechain_log.go b/apps/rule/services/rulechain_log.go index f5f1246..4f349aa 100644 --- a/apps/rule/services/rulechain_log.go +++ b/apps/rule/services/rulechain_log.go @@ -7,7 +7,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/rule/entity" "pandax/pkg/global" ) diff --git a/apps/system/api/api.go b/apps/system/api/api.go index d7595f8..f2b8bc7 100644 --- a/apps/system/api/api.go +++ b/apps/system/api/api.go @@ -1,10 +1,10 @@ package api import ( - "github.com/XM-GO/PandaKit/casbin" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" entity "pandax/apps/system/entity" services "pandax/apps/system/services" "pandax/pkg/global" diff --git a/apps/system/api/config.go b/apps/system/api/config.go index c8669b0..9f5878f 100644 --- a/apps/system/api/config.go +++ b/apps/system/api/config.go @@ -1,10 +1,10 @@ package api import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" entity "pandax/apps/system/entity" services "pandax/apps/system/services" ) diff --git a/apps/system/api/dept.go b/apps/system/api/dept.go index 38fc5f6..befa3f7 100644 --- a/apps/system/api/dept.go +++ b/apps/system/api/dept.go @@ -3,9 +3,9 @@ package api import ( "errors" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/api/vo" "pandax/apps/system/entity" "pandax/apps/system/services" diff --git a/apps/system/api/dict.go b/apps/system/api/dict.go index 7a9cdd3..d74fefd 100644 --- a/apps/system/api/dict.go +++ b/apps/system/api/dict.go @@ -2,10 +2,10 @@ package api import ( "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" entity "pandax/apps/system/entity" services "pandax/apps/system/services" "pandax/pkg/global" diff --git a/apps/system/api/menu.go b/apps/system/api/menu.go index d5a3c16..e65e46f 100644 --- a/apps/system/api/menu.go +++ b/apps/system/api/menu.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/api/vo" entity "pandax/apps/system/entity" services "pandax/apps/system/services" diff --git a/apps/system/api/notice.go b/apps/system/api/notice.go index fb4f2ce..de1f1fa 100644 --- a/apps/system/api/notice.go +++ b/apps/system/api/notice.go @@ -1,9 +1,9 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/entity" "pandax/apps/system/services" "strings" diff --git a/apps/system/api/post.go b/apps/system/api/post.go index 3ae1708..0e289a5 100644 --- a/apps/system/api/post.go +++ b/apps/system/api/post.go @@ -3,10 +3,10 @@ package api import ( "errors" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/entity" "pandax/apps/system/services" "pandax/pkg/global" diff --git a/apps/system/api/role.go b/apps/system/api/role.go index 1e60d33..fc02fb6 100644 --- a/apps/system/api/role.go +++ b/apps/system/api/role.go @@ -3,11 +3,11 @@ package api import ( "errors" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/casbin" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" entity "pandax/apps/system/entity" services "pandax/apps/system/services" "pandax/pkg/global" diff --git a/apps/system/api/system.go b/apps/system/api/system.go index ab3c576..1d50000 100644 --- a/apps/system/api/system.go +++ b/apps/system/api/system.go @@ -2,9 +2,9 @@ package api import ( "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/ws" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/ws" "github.com/emicklei/go-restful/v3" "github.com/gorilla/websocket" "github.com/kakuilan/kgo" diff --git a/apps/system/api/tenant.go b/apps/system/api/tenant.go index 1f70651..19e1d20 100644 --- a/apps/system/api/tenant.go +++ b/apps/system/api/tenant.go @@ -6,9 +6,9 @@ package api * @Date 2022/7/14 17:55 **/ import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/entity" "pandax/apps/system/services" ) diff --git a/apps/system/api/upload.go b/apps/system/api/upload.go index d48bd03..48e86bd 100644 --- a/apps/system/api/upload.go +++ b/apps/system/api/upload.go @@ -2,9 +2,9 @@ package api import ( "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/oss" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/oss" + "github.com/PandaXGO/PandaKit/restfulx" "net/http" "os" "pandax/pkg/config" diff --git a/apps/system/api/user.go b/apps/system/api/user.go index 18bdac0..e6f30fa 100644 --- a/apps/system/api/user.go +++ b/apps/system/api/user.go @@ -1,8 +1,8 @@ package api import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/token" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/token" "github.com/dgrijalva/jwt-go" "github.com/emicklei/go-restful/v3" "github.com/kakuilan/kgo" @@ -16,11 +16,11 @@ import ( logEntity "pandax/apps/log/entity" logServices "pandax/apps/log/services" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/captcha" - filek "github.com/XM-GO/PandaKit/file" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/captcha" + filek "github.com/PandaXGO/PandaKit/file" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "pandax/apps/system/services" "pandax/pkg/global" "strings" diff --git a/apps/system/entity/api.go b/apps/system/entity/api.go index 9167c4a..1b50abe 100644 --- a/apps/system/entity/api.go +++ b/apps/system/entity/api.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysApi struct { model.BaseAutoModel diff --git a/apps/system/entity/config.go b/apps/system/entity/config.go index 94e2d80..62ff5c7 100644 --- a/apps/system/entity/config.go +++ b/apps/system/entity/config.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysConfig struct { ConfigId int64 `json:"configId" gorm:"primaryKey;AUTO_INCREMENT;comment:主键编码"` diff --git a/apps/system/entity/dept.go b/apps/system/entity/dept.go index e8c1ddd..a82343e 100644 --- a/apps/system/entity/dept.go +++ b/apps/system/entity/dept.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" // 部门组织 type SysDept struct { diff --git a/apps/system/entity/dict.go b/apps/system/entity/dict.go index 99cdab3..5bccf7a 100644 --- a/apps/system/entity/dict.go +++ b/apps/system/entity/dict.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysDictData struct { DictCode int64 `json:"dictCode" gorm:"primary_key;AUTO_INCREMENT"` diff --git a/apps/system/entity/menu.go b/apps/system/entity/menu.go index b84d15d..2d89ba5 100644 --- a/apps/system/entity/menu.go +++ b/apps/system/entity/menu.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysMenu struct { MenuId int64 `json:"menuId" gorm:"primary_key;AUTO_INCREMENT"` diff --git a/apps/system/entity/notice.go b/apps/system/entity/notice.go index 224b2e4..d19186d 100644 --- a/apps/system/entity/notice.go +++ b/apps/system/entity/notice.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysNotice struct { NoticeId int64 `json:"noticeId" gorm:"primary_key;AUTO_INCREMENT"` diff --git a/apps/system/entity/post.go b/apps/system/entity/post.go index f9b6e7c..cb02b63 100644 --- a/apps/system/entity/post.go +++ b/apps/system/entity/post.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type SysPost struct { PostId int64 `gorm:"primary_key;AUTO_INCREMENT" json:"postId"` diff --git a/apps/system/entity/role.go b/apps/system/entity/role.go index f25352b..72a4d04 100644 --- a/apps/system/entity/role.go +++ b/apps/system/entity/role.go @@ -1,8 +1,8 @@ package entity import ( - "github.com/XM-GO/PandaKit/casbin" - "github.com/XM-GO/PandaKit/model" + "github.com/PandaXGO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/model" ) type SysRole struct { diff --git a/apps/system/entity/tenant.go b/apps/system/entity/tenant.go index 1029f8e..b856cf2 100644 --- a/apps/system/entity/tenant.go +++ b/apps/system/entity/tenant.go @@ -1,7 +1,7 @@ package entity import ( - "github.com/XM-GO/PandaKit/model" + "github.com/PandaXGO/PandaKit/model" "time" ) diff --git a/apps/system/entity/user.go b/apps/system/entity/user.go index d5548f8..b674f76 100644 --- a/apps/system/entity/user.go +++ b/apps/system/entity/user.go @@ -1,6 +1,6 @@ package entity -import "github.com/XM-GO/PandaKit/model" +import "github.com/PandaXGO/PandaKit/model" type LoginM struct { Username string `gorm:"type:varchar(64)" json:"username"` diff --git a/apps/system/router/api.go b/apps/system/router/api.go index 3929374..d03547a 100644 --- a/apps/system/router/api.go +++ b/apps/system/router/api.go @@ -1,9 +1,9 @@ package router import ( - "github.com/XM-GO/PandaKit/casbin" - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/config.go b/apps/system/router/config.go index 413e2fb..7f12592 100644 --- a/apps/system/router/config.go +++ b/apps/system/router/config.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/dept.go b/apps/system/router/dept.go index a4e5b0f..1723c24 100644 --- a/apps/system/router/dept.go +++ b/apps/system/router/dept.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/dict.go b/apps/system/router/dict.go index 95c3dc6..a6b8180 100644 --- a/apps/system/router/dict.go +++ b/apps/system/router/dict.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/menu.go b/apps/system/router/menu.go index c38578b..dbd0f92 100644 --- a/apps/system/router/menu.go +++ b/apps/system/router/menu.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/notice.go b/apps/system/router/notice.go index 7608c62..62e8605 100644 --- a/apps/system/router/notice.go +++ b/apps/system/router/notice.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/post.go b/apps/system/router/post.go index 0c7675d..8da3011 100644 --- a/apps/system/router/post.go +++ b/apps/system/router/post.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/role.go b/apps/system/router/role.go index 8a62773..5645fab 100644 --- a/apps/system/router/role.go +++ b/apps/system/router/role.go @@ -1,8 +1,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/tenant.go b/apps/system/router/tenant.go index 9d84536..48121a9 100644 --- a/apps/system/router/tenant.go +++ b/apps/system/router/tenant.go @@ -7,8 +7,8 @@ package router **/ import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/upload.go b/apps/system/router/upload.go index 2cae168..79cec66 100644 --- a/apps/system/router/upload.go +++ b/apps/system/router/upload.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" diff --git a/apps/system/router/user.go b/apps/system/router/user.go index 95565f8..d45a106 100644 --- a/apps/system/router/user.go +++ b/apps/system/router/user.go @@ -1,7 +1,7 @@ package router import ( - "github.com/XM-GO/PandaKit/model" + "github.com/PandaXGO/PandaKit/model" restfulspec "github.com/emicklei/go-restful-openapi/v2" "github.com/emicklei/go-restful/v3" "pandax/apps/system/api" @@ -10,7 +10,7 @@ import ( "pandax/apps/system/entity" "pandax/apps/system/services" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/restfulx" logServices "pandax/apps/log/services" ) diff --git a/apps/system/services/api.go b/apps/system/services/api.go index 48d64f4..ec7197f 100644 --- a/apps/system/services/api.go +++ b/apps/system/services/api.go @@ -2,8 +2,8 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/casbin" "gorm.io/gorm" "pandax/apps/system/entity" "pandax/pkg/global" diff --git a/apps/system/services/config.go b/apps/system/services/config.go index 1e53653..9deb01d 100644 --- a/apps/system/services/config.go +++ b/apps/system/services/config.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/dept.go b/apps/system/services/dept.go index 2ce287f..30ff5ac 100644 --- a/apps/system/services/dept.go +++ b/apps/system/services/dept.go @@ -2,7 +2,7 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "github.com/kakuilan/kgo" "pandax/apps/system/entity" "pandax/pkg/global" diff --git a/apps/system/services/dict_data.go b/apps/system/services/dict_data.go index fd8ae31..dbaad3b 100644 --- a/apps/system/services/dict_data.go +++ b/apps/system/services/dict_data.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/dict_type.go b/apps/system/services/dict_type.go index 96c16d1..edc4c2b 100644 --- a/apps/system/services/dict_type.go +++ b/apps/system/services/dict_type.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/menu.go b/apps/system/services/menu.go index 75307e3..8701bc2 100644 --- a/apps/system/services/menu.go +++ b/apps/system/services/menu.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/notice.go b/apps/system/services/notice.go index 2ce1422..62b14e5 100644 --- a/apps/system/services/notice.go +++ b/apps/system/services/notice.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/post.go b/apps/system/services/post.go index 6288284..4d319d0 100644 --- a/apps/system/services/post.go +++ b/apps/system/services/post.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/role.go b/apps/system/services/role.go index f64c312..52cf316 100644 --- a/apps/system/services/role.go +++ b/apps/system/services/role.go @@ -2,7 +2,7 @@ package services import ( "errors" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/role_dept.go b/apps/system/services/role_dept.go index 7eccf53..15a6ad1 100644 --- a/apps/system/services/role_dept.go +++ b/apps/system/services/role_dept.go @@ -2,7 +2,7 @@ package services import ( "fmt" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/role_menu.go b/apps/system/services/role_menu.go index 1b721bc..1e396dd 100644 --- a/apps/system/services/role_menu.go +++ b/apps/system/services/role_menu.go @@ -2,7 +2,7 @@ package services import ( "fmt" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/tenant.go b/apps/system/services/tenant.go index 1e540b1..c0c4f9f 100644 --- a/apps/system/services/tenant.go +++ b/apps/system/services/tenant.go @@ -6,7 +6,7 @@ package services * @Date 2022/7/14 17:49 **/ import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/apps/system/entity" "pandax/pkg/global" ) diff --git a/apps/system/services/user.go b/apps/system/services/user.go index 50d0ce4..f013a0c 100644 --- a/apps/system/services/user.go +++ b/apps/system/services/user.go @@ -1,7 +1,7 @@ package services import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "github.com/kakuilan/kgo" "golang.org/x/crypto/bcrypt" "pandax/apps/system/entity" diff --git a/apps/video/api/ys.go b/apps/video/api/ys.go new file mode 100644 index 0000000..b316cc0 --- /dev/null +++ b/apps/video/api/ys.go @@ -0,0 +1,57 @@ +package api + +import ( + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + "pandax/pkg/ys" +) + +type YsApi struct { + Ys *ys.Ys +} + +func (j *YsApi) GetDeviceList(rc *restfulx.ReqCtx) { + pageNum := restfulx.QueryInt(rc, "pageNum", 1) + pageSize := restfulx.QueryInt(rc, "pageSize", 10) + devices, total, err := j.Ys.GetDeviceList(pageNum, pageSize) + biz.ErrIsNilAppendErr(err, "设备列表获取失败") + rc.ResData = model.ResultPage{ + Total: total, + PageNum: int64(pageNum), + PageSize: int64(pageNum), + Data: devices, + } +} + +func (j *YsApi) GetDeviceChannelList(rc *restfulx.ReqCtx) { + deviceSerial := restfulx.PathParam(rc, "deviceSerial") + cameras, err := j.Ys.GetDeviceChannelList(deviceSerial) + biz.ErrIsNilAppendErr(err, "设备通道列表获取失败") + rc.ResData = cameras +} + +func (j *YsApi) GetDeviceLiveAddress(rc *restfulx.ReqCtx) { + deviceSerial := restfulx.PathParam(rc, "deviceSerial") + channelNo := restfulx.QueryInt(rc, "channelNo", 1) + live, err := j.Ys.GetDeviceLiveAddress(deviceSerial, channelNo) + biz.ErrIsNilAppendErr(err, "设备直播地址获取失败") + rc.ResData = live +} + +func (j *YsApi) StartPtz(rc *restfulx.ReqCtx) { + deviceSerial := restfulx.PathParam(rc, "deviceSerial") + channelNo := restfulx.QueryInt(rc, "channelNo", 1) + direction := restfulx.QueryInt(rc, "direction", 0) + speed := restfulx.QueryInt(rc, "speed", 0) + err := j.Ys.StartPtz(deviceSerial, channelNo, direction, speed) + biz.ErrIsNilAppendErr(err, "操作摄像头失败") +} + +func (j *YsApi) StopPtz(rc *restfulx.ReqCtx) { + deviceSerial := restfulx.PathParam(rc, "deviceSerial") + channelNo := restfulx.QueryInt(rc, "channelNo", 1) + direction := restfulx.QueryInt(rc, "direction", 0) + err := j.Ys.StopPtz(deviceSerial, channelNo, direction) + biz.ErrIsNilAppendErr(err, "停止摄像头失败") +} diff --git a/apps/video/router/ys.go b/apps/video/router/ys.go new file mode 100644 index 0000000..839a307 --- /dev/null +++ b/apps/video/router/ys.go @@ -0,0 +1,65 @@ +package router + +import ( + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" + restfulspec "github.com/emicklei/go-restful-openapi/v2" + "github.com/emicklei/go-restful/v3" + "pandax/apps/video/api" + "pandax/pkg/global" + "pandax/pkg/ys" +) + +func InitEzvizRouter(container *restful.Container) { + // 登录日志 + s := &api.YsApi{ + Ys: &ys.Ys{ + AppKey: global.Conf.Ys.AppKey, + Secret: global.Conf.Ys.Secret, + }, + } + ws := new(restful.WebService) + ws.Path("/video/ys").Produces(restful.MIME_JSON) + tags := []string{"ys"} + + ws.Route(ws.GET("/device/list").To(func(request *restful.Request, response *restful.Response) { + restfulx.NewReqCtx(request, response).WithLog("获取设备列表").Handle(s.GetDeviceList) + }). + Doc("获取设备列表"). + Param(ws.QueryParameter("pageNum", "页数").Required(true).DataType("int")). + Param(ws.QueryParameter("pageSize", "每页条数").Required(true).DataType("int")). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(model.ResultPage{}). + Returns(200, "OK", model.ResultPage{})) + + ws.Route(ws.GET("/{deviceSerial}/channel").To(func(request *restful.Request, response *restful.Response) { + restfulx.NewReqCtx(request, response).WithLog("设备通道列表").Handle(s.GetDeviceChannelList) + }). + Doc("设备通道列表"). + Param(ws.PathParameter("deviceSerial", "deviceSerial").DataType("string")). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(ys.Channel{}). // on the response + Returns(200, "OK", []ys.Channel{}). + Returns(404, "Not Found", nil)) + + ws.Route(ws.GET("/{deviceSerial}/start/ptz").To(func(request *restful.Request, response *restful.Response) { + restfulx.NewReqCtx(request, response).WithLog("摄像头操作").Handle(s.StartPtz) + }). + Doc("摄像头操作"). + Param(ws.PathParameter("deviceSerial", "deviceSerial").DataType("string")). + Param(ws.QueryParameter("channelNo", "通道序号").Required(true).DataType("int")). + Param(ws.QueryParameter("direction", "方向").Required(true).DataType("int")). + Param(ws.QueryParameter("speed", "速度").Required(true).DataType("int")). + Metadata(restfulspec.KeyOpenAPITags, tags)) + + ws.Route(ws.GET("/{deviceSerial}/stop/ptz").To(func(request *restful.Request, response *restful.Response) { + restfulx.NewReqCtx(request, response).WithLog("摄像头操作停止").Handle(s.StopPtz) + }). + Doc("摄像头操作停止"). + Param(ws.PathParameter("deviceSerial", "deviceSerial").DataType("string")). + Param(ws.QueryParameter("channelNo", "通道序号").Required(true).DataType("int")). + Param(ws.QueryParameter("direction", "方向").Required(true).DataType("int")). + Metadata(restfulspec.KeyOpenAPITags, tags)) + + container.Add(ws) +} diff --git a/config.yml b/config.yml index f940f8c..83e90a3 100644 --- a/config.yml +++ b/config.yml @@ -72,13 +72,6 @@ gen: # 代码生成是使用前端代码存放位置,需要指定到src文件夹,相对路径 frontpath: ../PandaUi/src -log: - # 日志等级, trace, debug, info, warn, error, fatal - level: info - file: - path: ./ -# name: panda_log.log - # 视频服务器使用的全局配置 global: http: @@ -86,6 +79,7 @@ global: listenaddrtls: :8443 # 用于HTTPS方式访问API的端口配置 gb28181: + loglevel: info #sip服务器地址 默认 自动适配设备网段 sipip: "" serial: "34020000002000000001" @@ -93,4 +87,15 @@ gb28181: password: "pandax" #sip服务器端口 port: - sip: udp:5060 \ No newline at end of file + sip: tcp:5060 +# 萤石摄像头token +ys: + appKey: 2db7f777fa6f44bdaf1c20b7f065887c + secret: bf59b1a2168da4b443473efe9b1cf1b0 + +log: + # 日志等级, trace, debug, info, warn, error, fatal + level: info + file: + path: ./ + name: panda_log.log diff --git a/fatal.log b/fatal.log index 1020b34..4837504 100644 --- a/fatal.log +++ b/fatal.log @@ -1,8 +1,19 @@ -2023-08-22 15:15:49-------------------------------- +2023-09-02 12:17:06-------------------------------- +panic: runtime error: index out of range [0] with length 0 -2023-08-22 15:51:54-------------------------------- +goroutine 101 [running]: +m7s.live/plugin/gb28181/v4.(*GB28181Config).OnEvent(0x3b53c20, {0x2177be0?, 0xc00127c4e0?}) + D:/workspace/go/pkg/mod/m7s.live/plugin/gb28181/v4@v4.3.9/main.go:83 +0x61d +m7s.live/engine/v4.(*Plugin).run(0xc0002fe7e0) + D:/workspace/go/pkg/mod/m7s.live/engine/v4@v4.13.8/plugin.go:170 +0x13b +m7s.live/engine/v4.(*Plugin).assign(0xc0002fe7e0) + D:/workspace/go/pkg/mod/m7s.live/engine/v4@v4.13.8/plugin.go:154 +0x4db +m7s.live/engine/v4.Run({0x2c43a38?, 0xc000044050}, {0x23cd9d6, 0xa}) + D:/workspace/go/pkg/mod/m7s.live/engine/v4@v4.13.8/main.go:135 +0x1197 +created by main.glob..func2 + D:/workspace/go/project/PandaX/PandaX/main.go:81 +0x2e5 -2023-08-23 16:02:58-------------------------------- +2023-09-02 12:19:16-------------------------------- -2023-08-23 16:05:15-------------------------------- +2023-09-04 11:15:17-------------------------------- diff --git a/go.mod b/go.mod index c2f6a16..e493780 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module pandax go 1.18 require ( + github.com/PandaXGO/PandaKit v0.0.0-20230901074047-e0e8e4bf2bed github.com/Shopify/sarama v1.38.1 - github.com/XM-GO/PandaKit v0.0.0-20230628055017-c47e7aa81cd4 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/didip/tollbooth v4.0.2+incompatible github.com/dop251/goja v0.0.0-20230304130813-e2f543bf4b4c @@ -76,6 +76,7 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect + github.com/gorilla/schema v1.2.0 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect diff --git a/go.sum b/go.sum index 920c02a..f57cb73 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1 github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/PandaXGO/PandaKit v0.0.0-20230901074047-e0e8e4bf2bed h1:O8K3C8IoadfpY+VKSMcaPRadPO1DDZbbj4B1opl9ntM= +github.com/PandaXGO/PandaKit v0.0.0-20230901074047-e0e8e4bf2bed/go.mod h1:/H1PTodkWhRyVqE/1tROVJEO2nwqwE6el7ZzwSebLxY= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A= @@ -12,8 +14,6 @@ github.com/Shopify/sarama v1.38.1/go.mod h1:iwv9a67Ha8VNa+TifujYoWGxWnu2kNVAQdSd github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc= github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46 h1:5sXbqlSomvdjlRbWyNqkPsJ3Fg+tQZCbgeX1VGljbQY= github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/XM-GO/PandaKit v0.0.0-20230628055017-c47e7aa81cd4 h1:SlGUf970WIctMhu8ZZBNsZfY1bdCbGGo9wLm5V0ceeM= -github.com/XM-GO/PandaKit v0.0.0-20230628055017-c47e7aa81cd4/go.mod h1:iyVx5byF4Z//dBpXMy22ZtgSnQAN/U9qjwGyU02QfSA= github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible h1:ht2+VfbXtNLGhCsnTMc6/N26nSTBK6qdhktjYyjJQkk= github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -198,6 +198,8 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/schema v1.2.0 h1:YufUaxZYCKGFuAq3c96BOhjgd5nmXiOY9NGzF247Tsc= +github.com/gorilla/schema v1.2.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= diff --git a/iothub/hook_message_work.go b/iothub/hook_message_work.go index dc5c8b8..30e6e64 100644 --- a/iothub/hook_message_work.go +++ b/iothub/hook_message_work.go @@ -7,12 +7,10 @@ import ( "pandax/apps/device/services" ruleEntity "pandax/apps/rule/entity" "pandax/pkg/global" - "pandax/pkg/mqtt" "pandax/pkg/rule_engine" "pandax/pkg/rule_engine/message" "pandax/pkg/tool" "pandax/pkg/websocket" - "strconv" ) // 消息处理模块 @@ -40,7 +38,9 @@ func (s *HookService) handleOne(msg *DeviceEventInfo) { switch msg.Type { case message.RowMes, message.AttributesMes, message.TelemetryMes: // 发送websocket到云组态 - go SendZtWebsocket(msg.DeviceId, msg.Datas) + if msg.Type == message.TelemetryMes { + go SendZtWebsocket(msg.DeviceId, msg.Datas) + } // 业务逻辑执行 // 获取规则链代码 chain := getRuleChain(etoken) @@ -59,24 +59,20 @@ func (s *HookService) handleOne(msg *DeviceEventInfo) { } // Rpc请求 case message.RpcRequestMes: - var datas = mqtt.RpcPayload{} - err := json.Unmarshal([]byte(msg.Datas), &datas) - if err != nil { - global.Log.Error("RPC请求数据解析错误,请检查数据格式") + chain := getRuleChain(etoken) + dataCode := chain.LfData.DataCode + code, err := json.Marshal(dataCode) + //新建规则链实体 + instance, errs := rule_engine.NewRuleChainInstance(code) + if len(errs) > 0 { + global.Log.Error("规则链初始化失败", errs[0]) return } - RequestId, err := strconv.Atoi(msg.RequestId) + ruleMessage := buildRuleMessage(etoken, msg, msg.Type) + err = instance.StartRuleChain(context.Background(), ruleMessage) if err != nil { - global.Log.Error("RPC请求请求iD非整型") - return + global.Log.Error("规则链执行失败", errs) } - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, RequestId: RequestId} - err = rpc.RespondTpc(datas) - if err != nil { - global.Log.Error("处理响应失败") - return - } - //services.DeviceCmdLogModelDao.UpdateResp(id, content, state) case message.DisConnectMes, message.ConnectMes: // 更改设备在线状态 if msg.Type == message.ConnectMes { @@ -108,17 +104,16 @@ func getRuleChain(etoken *tool.DeviceAuth) *ruleEntity.RuleDataJson { return &ruleData } -func buildRuleMessage(etoken *tool.DeviceAuth, dei *DeviceEventInfo, msgType string) message.Message { +func buildRuleMessage(etoken *tool.DeviceAuth, dei *DeviceEventInfo, msgType string) *message.Message { metadataVals := map[string]interface{}{ "deviceId": etoken.DeviceId, "deviceName": etoken.Name, "deviceType": etoken.DeviceType, "productId": etoken.ProductId, } - metadata := message.NewDefaultMetadata(metadataVals) msgVals := make(map[string]interface{}) json.Unmarshal([]byte(dei.Datas), &msgVals) - return message.NewMessageWithDetail(etoken.User, msgType, msgVals, metadata) + return message.NewMessage(etoken.User, msgType, msgVals, metadataVals) } func SendZtWebsocket(deviceId, message string) { diff --git a/iothub/reverse_control.go b/iothub/reverse_control.go deleted file mode 100644 index ef5d0c5..0000000 --- a/iothub/reverse_control.go +++ /dev/null @@ -1,25 +0,0 @@ -package iothub - -// 指令下发 -/*func Control(assets, thingModel, device_name, parameter string, operation bool) error { - topic := fmt.Sprintf("control/%s/%s", assets, device_name) - log.Println(topic) - payload := fmt.Sprintf(`{"method":"control","data":{"parameter": "%s","operation":%t}}`, parameter, operation) - //Publish(*global.GVA_MQTT, topic, 1, payload) - return nil -} - -func ControlState(assets, thingModel, device_name string) (map[string]interface{}, error) { - topic := fmt.Sprintf("control/%s/%s", assets, device_name) - payload := fmt.Sprintf(`{"method":"state","data":{}}`) - if Publish(*global.GVA_MQTT, topic, 1, payload) != nil { - return nil, errors.New("下发获取状态参数指令失败") - } - select { - case state := <-controlState: - return state, nil - case <-time.After(10 * time.Second): - return nil, errors.New("请求指令状态超时") - } -} -*/ diff --git a/main.go b/main.go index 09a8ff7..2d4ba37 100644 --- a/main.go +++ b/main.go @@ -3,10 +3,10 @@ package main import ( "context" "fmt" - "github.com/XM-GO/PandaKit/logger" - "github.com/XM-GO/PandaKit/rediscli" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/starter" + "github.com/PandaXGO/PandaKit/logger" + "github.com/PandaXGO/PandaKit/rediscli" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/starter" "github.com/spf13/cobra" "log" "m7s.live/engine/v4" diff --git a/panda_log.log b/panda_log.log new file mode 100644 index 0000000..2da3b4e --- /dev/null +++ b/panda_log.log @@ -0,0 +1,400 @@ +2023-09-02 12:19:16.136 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230901074047-e0e8e4bf2bed/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-02 12:19:16.142 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功 +2023-09-02 12:19:16.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功 +2023-09-02 12:19:16.145 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功 +2023-09-02 12:19:16.153 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成 +2023-09-02 12:19:16.153 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-02 12:19:16.153 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001 +2023-09-02 12:19:16.158 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-02 12:19:16 [INFO] JobCore start success. +2023-09-02 12:19:16.160 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:154] : 账号pandax,密码pandax,开始认证 +2023-09-02 12:19:16.162 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.2 Connected +2023-09-02 13:41:42.373 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->74ms +2023-09-02 13:41:42.398 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->17ms +2023-09-02 13:41:46.900 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->153ms +2023-09-02 13:42:25.722 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/category/list/tree/label] [uid=1] : 获取ProductCategory树 ->8ms +2023-09-02 13:42:25.725 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list] [uid=1] : 获取Product分页列表 ->30ms +2023-09-02 13:42:25.731 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 13:42:25.794 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms +2023-09-02 13:43:37.630 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->3ms +2023-09-02 13:43:37.641 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:49:30.139 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->8ms +2023-09-02 13:49:30.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 13:49:30.156 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 13:49:30.165 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 13:49:32.235 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 13:49:32.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:49:32.252 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 13:49:32.266 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->11ms +2023-09-02 13:49:32.276 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 13:52:17.206 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->201ms +2023-09-02 13:52:17.242 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->5ms +2023-09-02 13:52:24.063 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->66ms +2023-09-02 13:52:24.072 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:52:24.087 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 13:52:24.098 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 13:52:24.108 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:56:11.689 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->487ms +2023-09-02 13:56:11.726 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-02 13:56:24.456 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->251ms +2023-09-02 13:56:24.588 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->160ms +2023-09-02 13:56:24.635 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->47ms +2023-09-02 13:56:24.710 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->31ms +2023-09-02 13:56:51.828 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->9ms +2023-09-02 13:56:51.846 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->18ms +2023-09-02 13:56:51.858 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 13:56:51.867 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:57:29.733 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 13:57:29.744 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 13:57:29.755 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 13:57:29.772 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 13:57:29.773 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 13:58:50.945 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->208ms +2023-09-02 13:58:50.983 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->7ms +2023-09-02 13:58:55.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms +2023-09-02 13:58:55.504 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:58:55.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 13:58:55.519 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 13:58:55.528 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:00:41.399 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->205ms +2023-09-02 14:00:41.439 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-02 14:00:59.740 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->11ms +2023-09-02 14:00:59.760 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->20ms +2023-09-02 14:00:59.771 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:00:59.781 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:01:17.996 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->7ms +2023-09-02 14:01:18.000 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:01:22.171 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->9ms +2023-09-02 14:01:22.178 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/1] : 获取角色菜单树 ->10ms +2023-09-02 14:01:22.188 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->32ms +2023-09-02 14:01:22.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/getPolicyPathByRoleId] [uid=1] : 获取角色拥有的api权限 ->6ms +2023-09-02 14:01:27.793 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/role] [uid=1] : 修改角色信息 ->1070ms +2023-09-02 14:01:27.824 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->8ms +2023-09-02 14:01:45.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->10ms +2023-09-02 14:01:45.515 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:01:48.802 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->9ms +2023-09-02 14:01:51.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->7ms +2023-09-02 14:01:53.402 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->9ms +2023-09-02 14:01:55.402 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->8ms +2023-09-02 14:01:57.603 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->9ms +2023-09-02 14:01:59.341 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->9ms +2023-09-02 14:02:02.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->8ms +2023-09-02 14:02:05.147 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->7ms +2023-09-02 14:02:08.063 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->8ms +2023-09-02 14:02:10.458 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->10ms +2023-09-02 14:02:12.620 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->8ms +2023-09-02 14:02:16.393 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->10ms +2023-09-02 14:02:18.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->9ms +2023-09-02 14:02:22.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/list] [uid=1] : 获取api分页列表 ->8ms +2023-09-02 14:02:50.695 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->77ms +2023-09-02 14:02:50.720 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->17ms +2023-09-02 14:02:51.189 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->32ms +2023-09-02 14:02:51.198 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:04:04.811 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->11ms +2023-09-02 14:04:04.817 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:04:04.825 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:04:04.832 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->3ms +2023-09-02 14:04:11.742 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms +2023-09-02 14:04:11.749 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:04:11.760 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:04:11.768 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:04:11.779 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:05:45.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->192ms +2023-09-02 14:05:45.862 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->6ms +2023-09-02 14:06:26.280 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->17ms +2023-09-02 14:06:26.288 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:06:26.299 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:06:26.308 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:08:07.406 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->9ms +2023-09-02 14:08:07.413 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:08:07.427 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 14:08:07.436 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:08:07.444 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:10:27.405 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/system/menu] [uid=1] : 添加菜单信息 ->254ms +2023-09-02 14:10:27.440 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->4ms +2023-09-02 14:10:36.443 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->5ms +2023-09-02 14:10:36.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->48ms +2023-09-02 14:10:36.514 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->15ms +2023-09-02 14:10:36.532 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->14ms +2023-09-02 14:10:36.539 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:11:20.914 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/menu] [uid=1] : 修改菜单信息 ->280ms +2023-09-02 14:11:20.945 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->5ms +2023-09-02 14:11:24.467 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->46ms +2023-09-02 14:11:24.488 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->36ms +2023-09-02 14:11:24.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->13ms +2023-09-02 14:11:24.515 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:11:24.525 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:12:12.873 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/menu] [uid=1] [uname=panda] : 添加菜单信息 ->211ms +2023-09-02 14:12:12.905 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->4ms +2023-09-02 14:12:25.196 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->60ms +2023-09-02 14:12:25.210 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 14:12:25.222 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:12:25.231 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:12:25.238 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:14:00.454 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->452ms +2023-09-02 14:14:00.490 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->4ms +2023-09-02 14:14:04.587 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->11ms +2023-09-02 14:14:04.591 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:14:06.805 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/all] [uid=1] [uname=panda] : 获取所有api ->4ms +2023-09-02 14:14:06.818 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/1] : 获取角色菜单树 ->10ms +2023-09-02 14:14:06.823 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/1] : 获取角色信息 ->7ms +2023-09-02 14:14:06.935 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/getPolicyPathByRoleId] [uid=1] : 获取角色拥有的api权限 ->7ms +2023-09-02 14:14:25.259 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/role] : 修改角色信息 ->1409ms +2023-09-02 14:14:25.294 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->13ms +2023-09-02 14:14:46.127 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->18ms +2023-09-02 14:14:46.134 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->11ms +2023-09-02 14:15:34.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->15ms +2023-09-02 14:15:34.840 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->16ms +2023-09-02 14:16:49.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->74ms +2023-09-02 14:16:49.718 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->18ms +2023-09-02 14:16:50.242 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:16:50.257 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->14ms +2023-09-02 14:25:38.179 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->8ms +2023-09-02 14:25:38.183 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:25:38.190 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:25:38.201 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:25:39.864 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 14:25:39.871 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:25:39.883 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:25:39.892 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:25:39.901 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:27:38.973 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->251ms +2023-09-02 14:27:39.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->5ms +2023-09-02 14:27:47.232 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 14:27:47.240 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:27:47.247 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:27:47.254 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:27:47.262 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:32:36.565 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:32:36.577 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list] : 获取规则引擎分页列表 ->8ms +2023-09-02 14:32:47.976 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->6ms +2023-09-02 14:32:47.981 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:32:47.991 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:32:47.997 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:32:53.759 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->5ms +2023-09-02 14:32:53.766 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:32:53.777 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:32:53.785 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:32:53.792 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->3ms +2023-09-02 14:33:02.857 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/menu] [uid=1] : 修改菜单信息 ->294ms +2023-09-02 14:33:02.892 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->5ms +2023-09-02 14:33:02.909 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->7ms +2023-09-02 14:42:25.076 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->8ms +2023-09-02 14:42:25.088 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 14:42:25.098 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:42:25.108 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:42:25.117 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:44:13.047 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->276ms +2023-09-02 14:44:13.086 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->5ms +2023-09-02 14:44:13.102 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->6ms +2023-09-02 14:44:19.800 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 14:44:19.808 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:44:19.818 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:44:19.825 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:44:19.835 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:45:31.220 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->216ms +2023-09-02 14:45:31.254 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-02 14:45:31.274 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->5ms +2023-09-02 14:46:13.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->66ms +2023-09-02 14:46:13.617 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->292ms +2023-09-02 14:46:13.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->39ms +2023-09-02 14:46:13.690 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->34ms +2023-09-02 14:46:41.854 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->34ms +2023-09-02 14:46:41.898 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->53ms +2023-09-02 14:46:41.928 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->21ms +2023-09-02 14:46:41.951 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->16ms +2023-09-02 14:48:42.326 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->12ms +2023-09-02 14:48:42.334 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 14:48:42.344 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:48:42.352 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 14:48:48.409 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->10ms +2023-09-02 14:48:48.820 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->415ms +2023-09-02 14:48:49.076 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->252ms +2023-09-02 14:48:49.257 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->190ms +2023-09-02 14:49:32.734 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->9ms +2023-09-02 14:49:32.742 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:49:32.755 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:49:32.770 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:49:32.776 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->3ms +2023-09-02 14:50:48.076 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->264ms +2023-09-02 14:50:48.114 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-02 14:50:52.452 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->54ms +2023-09-02 14:50:52.460 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms +2023-09-02 14:50:52.474 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->11ms +2023-09-02 14:50:52.482 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:50:52.492 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 14:51:56.217 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/menu] : 添加菜单信息 ->222ms +2023-09-02 14:51:56.249 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->5ms +2023-09-02 14:52:00.995 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-02 14:52:01.004 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 14:52:01.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 14:52:01.017 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:52:01.026 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 14:52:45.288 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/menu] [uid=1] [uname=panda] : 添加菜单信息 ->257ms +2023-09-02 14:52:45.320 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->5ms +2023-09-02 14:56:04.586 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->9ms +2023-09-02 14:56:04.596 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->11ms +2023-09-02 14:56:06.395 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->3ms +2023-09-02 14:56:06.411 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/1] : 获取角色菜单树 ->11ms +2023-09-02 14:56:06.415 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/1] : 获取角色信息 ->9ms +2023-09-02 14:56:06.596 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/getPolicyPathByRoleId] [uid=1] [uname=panda] : 获取角色拥有的api权限 ->12ms +2023-09-02 14:56:31.455 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/role] : 修改角色信息 ->995ms +2023-09-02 14:56:31.491 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->12ms +2023-09-02 15:01:58.423 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->9ms +2023-09-02 15:01:58.430 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 15:02:34.675 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->9ms +2023-09-02 15:02:34.680 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 15:03:11.354 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->7ms +2023-09-02 15:03:11.359 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 15:03:13.801 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 15:03:13.807 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/category/list] [uid=1] : 获取ProductCategory列表 ->3ms +2023-09-02 15:03:39.592 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/category/list] [uid=1] : 获取ProductCategory列表 ->4ms +2023-09-02 15:03:39.603 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 15:03:42.623 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 15:03:42.634 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->6ms +2023-09-02 15:03:42.644 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 15:03:42.650 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->3ms +2023-09-02 15:03:46.694 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms +2023-09-02 15:03:46.698 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 15:03:46.707 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 15:03:46.718 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-02 15:03:46.724 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 15:03:55.304 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/menu] [uid=1] [uname=panda] : 修改菜单信息 ->198ms +2023-09-02 15:03:55.340 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->4ms +2023-09-02 15:03:58.020 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms +2023-09-02 15:03:58.026 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 15:03:58.035 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 15:03:58.041 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-02 15:03:58.051 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 15:04:06.355 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/menu] [uid=1] [uname=panda] : 修改菜单信息 ->120ms +2023-09-02 15:04:06.390 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->6ms +2023-09-02 15:04:33.225 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->71ms +2023-09-02 15:04:33.251 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/auth] [uid=1] [uname=panda] : 认证信息 ->17ms +2023-09-02 15:04:33.534 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->8ms +2023-09-02 15:04:33.542 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms +2023-09-02 15:04:33.565 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->20ms +2023-09-02 15:04:33.570 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->14ms +2023-09-02 15:04:59.703 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->5ms +2023-09-02 15:04:59.719 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-02 15:05:01.818 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-02 15:05:01.832 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list] : 获取规则引擎分页列表 ->10ms +2023-09-02 15:06:40.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list] : 获取规则引擎分页列表 ->135ms +2023-09-02 15:06:40.707 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->134ms +2023-09-02 15:06:45.186 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list] [uid=1] [uname=panda] : 获取ProductCategory列表 ->5ms +2023-09-02 15:06:45.233 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->40ms +2023-09-02 15:07:08.041 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->5ms +2023-09-02 15:07:08.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-02 15:21:46.611 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/job/list] [uid=1] : 获取Job列表 ->15ms +2023-09-02 15:21:46.615 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:52:40.476 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->70ms +2023-09-04 10:52:40.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->18ms +2023-09-04 10:54:54.119 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->8ms +2023-09-04 10:54:54.126 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:54:54.142 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->12ms +2023-09-04 10:54:54.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 10:55:09.568 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-04 10:55:09.578 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:55:09.588 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 10:55:09.597 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:55:09.604 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:55:19.412 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/menu] [uid=1] : 修改菜单信息 ->202ms +2023-09-04 10:55:19.449 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->6ms +2023-09-04 10:55:28.395 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->15ms +2023-09-04 10:55:28.405 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:55:28.413 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 10:55:28.422 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 10:55:45.069 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->72ms +2023-09-04 10:55:45.094 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->18ms +2023-09-04 10:55:45.366 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->16ms +2023-09-04 10:55:45.376 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->10ms +2023-09-04 10:55:45.383 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:55:45.392 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 10:57:18.428 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 10:57:18.429 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/notice/list] [uid=1] : 获取通知分页列表 ->22ms +2023-09-04 10:57:26.603 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/develop/code/table/list] [uid=1] [uname=panda] : 获取表列表 ->147ms +2023-09-04 10:57:28.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/gen/preview/3] : 获取生成代码视图 ->73ms +2023-09-04 10:57:52.325 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->8ms +2023-09-04 10:57:52.333 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 10:57:52.347 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:57:52.355 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 10:58:01.435 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->7ms +2023-09-04 10:58:01.440 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->15ms +2023-09-04 10:58:01.455 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms +2023-09-04 10:58:01.472 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:58:01.479 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:58:51.588 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/menu] : 修改菜单信息 ->196ms +2023-09-04 10:58:51.629 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->5ms +2023-09-04 10:58:51.651 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-04 10:59:13.095 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->74ms +2023-09-04 10:59:13.119 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->18ms +2023-09-04 10:59:13.443 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->15ms +2023-09-04 10:59:13.450 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 10:59:13.461 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 10:59:13.470 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 10:59:28.525 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->7ms +2023-09-04 10:59:28.534 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:59:28.545 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:59:28.552 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:59:36.300 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms +2023-09-04 10:59:36.305 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 10:59:36.315 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 10:59:36.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-09-04 10:59:36.330 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 11:02:29.464 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/menu] [uid=1] : 修改菜单信息 ->207ms +2023-09-04 11:02:29.505 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms +2023-09-04 11:02:29.523 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/list] [uid=1] : 获取菜单列表 ->4ms +2023-09-04 11:07:54.456 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->11ms +2023-09-04 11:07:54.473 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/job/list] [uid=1] : 获取Job列表 ->15ms +2023-09-04 11:08:51.752 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 11:08:53.564 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list/all] [uid=1] : 获取Device列表 ->14ms +2023-09-04 11:08:54.287 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->9ms +2023-09-04 11:08:55.110 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list/all] [uid=1] : 获取Device列表 ->12ms +2023-09-04 11:08:57.432 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->9ms +2023-09-04 11:13:43.275 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 11:14:02.103 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-04 11:14:03.895 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 11:15:17.499 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230901074047-e0e8e4bf2bed/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-04 11:15:17.507 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功 +2023-09-04 11:15:17.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功 +2023-09-04 11:15:17.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功 +2023-09-04 11:15:17.518 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成 +2023-09-04 11:15:17.518 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-04 11:15:17.520 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001 +2023-09-04 11:15:17.525 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-04 11:15:17 [INFO] JobCore start success. +2023-09-04 11:15:17.860 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:125] : pandax断开连接 +2023-09-04 11:15:17.862 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:154] : 账号pandax,密码pandax,开始认证 +2023-09-04 11:15:17.864 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.2 Connected +2023-09-04 11:15:28.972 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms +2023-09-04 11:15:48.282 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/list] [uid=1] : 获取规则引擎分页列表 ->13ms +2023-09-04 11:15:48.286 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->10ms +2023-09-04 11:24:52.570 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->30ms +2023-09-04 11:24:54.036 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] [uid=1] : 获取规则引擎信息 ->8ms +2023-09-04 11:24:54.438 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-09-04 11:27:38.385 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->4ms +2023-09-04 11:27:38.393 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 11:27:39.916 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms +2023-09-04 11:27:39.925 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list/tree/label] [uid=1] [uname=panda] : 获取ProductCategory树 ->4ms +2023-09-04 11:27:39.942 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list] [uid=1] : 获取Product分页列表 ->14ms +2023-09-04 11:27:39.991 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms +2023-09-04 11:27:46.063 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms +2023-09-04 11:27:46.107 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->30ms +2023-09-04 11:27:50.517 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list] [uid=1] [uname=panda] : 获取Template分页列表 ->11ms +2023-09-04 11:27:51.340 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->10ms +2023-09-04 11:27:52.209 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->11ms +2023-09-04 11:27:53.102 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/ota/list] [uid=1] : 获取Ota分页列表 ->38ms +2023-09-04 11:28:01.115 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list] : 获取DeviceGroup列表 ->4ms +2023-09-04 11:28:01.122 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->3ms +2023-09-04 11:28:04.687 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->27ms +2023-09-04 11:28:04.721 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->5ms +2023-09-04 11:28:04.721 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->16ms +2023-09-04 11:28:04.723 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->32ms +2023-09-04 11:28:21.688 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/d_1928b99619910dae5a001fa7/status] [uid=1] [uname=panda] : 获取Device状态信息 ->204ms +2023-09-04 11:28:28.896 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/d_1928b99619910dae5a001fa7/status] [uid=1] : 获取Device状态信息 ->12ms +2023-09-04 11:28:39.405 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/d_1928b99619910dae5a001fa7/status] [uid=1] [uname=panda] : 获取Device状态信息 ->12ms +2023-09-04 11:28:41.043 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/alarm/list] : 获取告警分页列表 ->97ms +2023-09-04 11:28:48.926 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->152ms +2023-09-04 11:28:52.109 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/alarm/list] : 获取告警分页列表 ->18ms +2023-09-04 11:44:39.925 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-09-04 11:44:39.937 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list] : 获取规则引擎分页列表 ->10ms +2023-09-04 13:53:13.955 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] [uid=1] : 获取规则引擎信息 ->6ms +2023-09-04 13:53:14.411 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/nodeLabels] [uid=1] [uname=panda] : 获取所有节点标签 ->0ms +2023-09-04 14:37:03.350 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/notice/list] [uid=1] : 获取通知分页列表 ->15ms diff --git a/pkg/config/config.go b/pkg/config/config.go index 7b8eacc..fb2588e 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -3,8 +3,8 @@ package config import ( "flag" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/utils" "path/filepath" ) @@ -45,6 +45,7 @@ type Config struct { Mqtt *Mqtt `yaml:"mqtt"` Casbin *Casbin `yaml:"casbin"` Gen *Gen `yaml:"gen"` + Ys *Ys `yaml:"ys"` Log *Log `yaml:"log"` } diff --git a/pkg/config/jwt.go b/pkg/config/jwt.go index c13b546..bbccf96 100644 --- a/pkg/config/jwt.go +++ b/pkg/config/jwt.go @@ -1,7 +1,7 @@ package config import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" ) type Jwt struct { diff --git a/pkg/config/ys.go b/pkg/config/ys.go new file mode 100644 index 0000000..0b3c62e --- /dev/null +++ b/pkg/config/ys.go @@ -0,0 +1,6 @@ +package config + +type Ys struct { + AppKey string `yaml:"appKey"` + Secret string `yaml:"secret"` +} diff --git a/pkg/global/global.go b/pkg/global/global.go index 251a26b..278503d 100644 --- a/pkg/global/global.go +++ b/pkg/global/global.go @@ -1,7 +1,7 @@ package global import ( - "github.com/XM-GO/PandaKit/rediscli" + "github.com/PandaXGO/PandaKit/rediscli" "github.com/sirupsen/logrus" "gorm.io/gorm" "pandax/pkg/config" diff --git a/pkg/initialize/router.go b/pkg/initialize/router.go index 2381ef0..4990231 100644 --- a/pkg/initialize/router.go +++ b/pkg/initialize/router.go @@ -11,6 +11,7 @@ import ( jobRouter "pandax/apps/job/router" logRouter "pandax/apps/log/router" sysRouter "pandax/apps/system/router" + videoRouter "pandax/apps/video/router" "pandax/pkg/middleware" ) @@ -74,6 +75,10 @@ func InitRouter() *transport.HttpServer { ruleRouter.InitRuleChainRouter(container) ruleRouter.InitRuleChainMsgLogRouter(container) } + { + //萤石摄像头 + videoRouter.InitEzvizRouter(container) + } // api接口 middleware.SwaggerConfig(container) // 开启调度任务 diff --git a/pkg/initialize/table.go b/pkg/initialize/table.go index 61ad40b..a94182c 100644 --- a/pkg/initialize/table.go +++ b/pkg/initialize/table.go @@ -1,7 +1,7 @@ package initialize import ( - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" devEntity "pandax/apps/develop/entity" jobEntity "pandax/apps/job/entity" logEntity "pandax/apps/log/entity" diff --git a/pkg/middleware/log.go b/pkg/middleware/log.go index aa020f5..8b01957 100644 --- a/pkg/middleware/log.go +++ b/pkg/middleware/log.go @@ -3,10 +3,10 @@ package middleware import ( "encoding/json" "fmt" - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/logger" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/logger" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "github.com/sirupsen/logrus" "reflect" "runtime/debug" diff --git a/pkg/middleware/oper.go b/pkg/middleware/oper.go index f6d483c..d6f381b 100644 --- a/pkg/middleware/oper.go +++ b/pkg/middleware/oper.go @@ -1,8 +1,8 @@ package middleware import ( - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/utils" "net/http" "pandax/apps/log/entity" "pandax/apps/log/services" diff --git a/pkg/middleware/permission.go b/pkg/middleware/permission.go index ee5ec89..8c71da1 100644 --- a/pkg/middleware/permission.go +++ b/pkg/middleware/permission.go @@ -1,10 +1,10 @@ package middleware import ( - "github.com/XM-GO/PandaKit/biz" - "github.com/XM-GO/PandaKit/casbin" - "github.com/XM-GO/PandaKit/restfulx" - "github.com/XM-GO/PandaKit/token" + "github.com/PandaXGO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/casbin" + "github.com/PandaXGO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/token" "github.com/dgrijalva/jwt-go" "pandax/pkg/global" ) diff --git a/pkg/mqtt/rpc.go b/pkg/mqtt/rpc.go index 138102e..d4fd590 100644 --- a/pkg/mqtt/rpc.go +++ b/pkg/mqtt/rpc.go @@ -2,6 +2,7 @@ package mqtt import ( "encoding/json" + "errors" "fmt" mqtt "github.com/eclipse/paho.mqtt.golang" "math/rand" @@ -22,34 +23,47 @@ type RpcRequest struct { type RpcPayload struct { Method string `json:"method"` - Params string `json:"params"` + Params any `json:"params"` } -func (rpc RpcRequest) RequestCmd(rpcPayload RpcPayload) error { +func (rpc RpcRequest) RequestCmd(rpcPayload RpcPayload) (respPayload string, err error) { topic := fmt.Sprintf(RpcReqTopic, rpc.RequestId) payload, err := json.Marshal(rpcPayload) if err != nil { - return err + return "", err } err = rpc.Client.Pub(topic, 0, string(payload)) if err != nil { - return err + return "", err } if rpc.Mode == "single" { - return nil + return "", nil } + // 双向才会执行 + repsChan := make(chan string) respTopic := fmt.Sprintf(RpcRespTopic, rpc.RequestId) + // 订阅回调 + mqMessagePubHandler := func(client mqtt.Client, msg mqtt.Message) { + if repsChan != nil { + repsChan <- string(msg.Payload()) + } + } rpc.Client.Sub(respTopic, 0, mqMessagePubHandler) if rpc.Timeout == 0 { rpc.Timeout = 30 } - go func() { + defer func() { + close(repsChan) + rpc.Client.UnSub(respTopic) + }() + for { select { case <-time.After(time.Duration(rpc.Timeout) * time.Second): - rpc.Client.UnSub(respTopic) + return "", errors.New("设备指令响应超时") + case resp := <-repsChan: + return resp, nil } - }() - return nil + } } func (rpc RpcRequest) RequestAttributes(rpcPayload RpcPayload) error { @@ -65,19 +79,20 @@ func (rpc RpcRequest) RequestAttributes(rpcPayload RpcPayload) error { } // 响应数据处理 -var mqMessagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { +/*var mqMessagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { //log.Println(fmt.Sprintf("Received message: %s from topic: %s\n", msg.Payload(), msg.Topic())) -} +}*/ // RespondTpc 处理设备端请求服务端方法 func (rpc RpcRequest) RespondTpc(reqPayload RpcPayload) error { topic := fmt.Sprintf(RpcRespTopic, rpc.RequestId) + // 此处处理设备的请求参数逻辑 if reqPayload.Params == "getCurrentTime" { unix := time.Now().Unix() msg := fmt.Sprintf("%d", unix) return rpc.Client.Pub(topic, 0, msg) } - + // 获取属性 ... return nil } diff --git a/pkg/rule_engine/instance.go b/pkg/rule_engine/instance.go index 34197df..869788a 100644 --- a/pkg/rule_engine/instance.go +++ b/pkg/rule_engine/instance.go @@ -41,7 +41,7 @@ func newInstanceWithManifest(m *manifest.Manifest) (*ruleChainInstance, []error) } // StartRuleChain TODO 是否需要添加context -func (c *ruleChainInstance) StartRuleChain(context context.Context, message message.Message) error { +func (c *ruleChainInstance) StartRuleChain(context context.Context, message *message.Message) error { if node, found := c.nodes[c.firstRuleNodeId]; found { node.Handle(message) } diff --git a/pkg/rule_engine/instance_test.go b/pkg/rule_engine/instance_test.go index 13556b4..d4fc16b 100644 --- a/pkg/rule_engine/instance_test.go +++ b/pkg/rule_engine/instance_test.go @@ -18,13 +18,13 @@ func TestNewRuleChainInstance(t *testing.T) { t.Error(errs[0]) } - metadata := message.NewDefaultMetadata(map[string]interface{}{ + metadata := message.Metadata{ "deviceName": "ws432", "deviceId": "d_1928b99619910dae5a001fa7", "deviceType": "direct", "productId": "p_3ba460634520cf4590dc90e5", - }) - msg := message.NewMessageWithDetail("1", message.TelemetryMes, map[string]interface{}{"temperature": 60.4, "humidity": 32.5}, metadata) + } + msg := message.NewMessage("1", message.TelemetryMes, message.Msg{"temperature": 60.4, "humidity": 32.5}, metadata) t.Log("开始执行力流程") err = instance.StartRuleChain(context.Background(), msg) if err != nil { @@ -33,8 +33,7 @@ func TestNewRuleChainInstance(t *testing.T) { } func TestScriptEngine(t *testing.T) { - metadata := message.NewDefaultMetadata(map[string]interface{}{"device": "aa"}) - msg := message.NewMessageWithDetail("1", message.UpEventMes, map[string]interface{}{"aa": 5}, metadata) + msg := message.NewMessage("1", message.UpEventMes, map[string]interface{}{"aa": 5}, map[string]interface{}{"device": "aa"}) const baseScript = ` function nextRelation(metadata, msg) { return ['one','nine']; @@ -47,7 +46,7 @@ func TestScriptEngine(t *testing.T) { } return nextRelation(metadata, msg); ` - scriptEngine := nodes.NewScriptEngine(msg, "Switch", baseScript) + scriptEngine := nodes.NewScriptEngine(*msg, "Switch", baseScript) SwitchResults, err := scriptEngine.ScriptOnSwitch() if err != nil { @@ -57,19 +56,18 @@ func TestScriptEngine(t *testing.T) { } func TestScriptOnMessage(t *testing.T) { - metadata := message.NewDefaultMetadata(map[string]interface{}{"device": "aa"}) - msg := message.NewMessageWithDetail("1", message.UpEventMes, map[string]interface{}{"aa": 5}, metadata) + msg := message.NewMessage("1", message.UpEventMes, map[string]interface{}{"aa": 5}, map[string]interface{}{"device": "aa"}) const baseScript = ` msg.bb = "33" metadata.event = 55 return {msg: msg, metadata: metadata, msgType: msgType}; ` - scriptEngine := nodes.NewScriptEngine(msg, "Transform", baseScript) + scriptEngine := nodes.NewScriptEngine(*msg, "Transform", baseScript) ScriptOnMessageResults, err := scriptEngine.ScriptOnMessage() if err != nil { t.Error(err) } - t.Log(ScriptOnMessageResults.GetMetadata()) + t.Log(ScriptOnMessageResults.Metadata) } diff --git a/pkg/rule_engine/message/message.go b/pkg/rule_engine/message/message.go index 4379799..6daeb52 100644 --- a/pkg/rule_engine/message/message.go +++ b/pkg/rule_engine/message/message.go @@ -1,11 +1,6 @@ package message -import ( - "encoding/json" - "github.com/google/uuid" - "time" -) - +/* // 消息类型 const ( ConnectMes = "Connect" @@ -154,3 +149,4 @@ func (t *defaultMetadata) GetValues() map[string]interface{} { func (t *defaultMetadata) SetValues(values map[string]interface{}) { t.values = values } +*/ diff --git a/pkg/rule_engine/message/message1.go b/pkg/rule_engine/message/message1.go new file mode 100644 index 0000000..c3539c7 --- /dev/null +++ b/pkg/rule_engine/message/message1.go @@ -0,0 +1,99 @@ +package message + +import ( + "encoding/json" + "github.com/google/uuid" + "time" +) + +// 消息类型 +const ( + ConnectMes = "Connect" + DisConnectMes = "Disconnect" + RpcRequestMes = "RpcRequest" + UpEventMes = "Event" + AlarmMes = "Alarm" + RowMes = "Row" + TelemetryMes = "Telemetry" + AttributesMes = "Attributes" +) + +// 数据类型Originator +const ( + DEVICE = "DEVICE" + GATEWAY = "GATEWAY" + MONITOR = "MONITOR" //监控 +) + +type Msg map[string]interface{} +type Metadata map[string]interface{} + +type Message struct { + Id string //uuid 消息Id + Ts time.Time //时间戳 + MsgType string //消息类型, attributes(参数),telemetry(遥测),Connect连接事件 + UserId string //客户Id UUID 设备发布人 + Msg Msg //数据 数据结构JSON 设备原始数据 msg + Metadata Metadata //消息的元数据 包括设备Id,设备类型,产品ID等 +} + +// NewMessage ... +func NewMessage(userId, messageType string, msg Msg, metadata Metadata) *Message { + return &Message{ + Id: uuid.New().String(), + Ts: time.Now(), + UserId: userId, + MsgType: messageType, + Msg: msg, + Metadata: metadata, + } +} + +func (t *Message) GetAllMap() map[string]interface{} { + data := make(map[string]interface{}) + for msgKey, msgValue := range t.Msg { + for metaKey, metaValue := range t.Metadata { + if msgKey == metaKey { + data[msgKey] = metaValue + } else { + if _, ok := data[msgKey]; !ok { + data[msgKey] = msgValue + } + if _, ok := data[metaKey]; !ok { + data[metaKey] = metaValue + } + } + } + } + return data +} + +func (t *Message) MarshalBinary() ([]byte, error) { + return json.Marshal(t) +} + +func (meta *Metadata) Keys() []string { + keys := make([]string, 0) + for key := range *meta { + keys = append(keys, key) + } + return keys +} + +func (meta *Metadata) GetValue(key string) any { + if _, found := (*meta)[key]; !found { + return nil + } + return (*meta)[key] +} + +func (meta *Metadata) SetValue(key string, val interface{}) { + (*meta)[key] = val +} + +func (msg *Msg) GetValue(key string) any { + if _, found := (*msg)[key]; !found { + return nil + } + return (*msg)[key] +} diff --git a/pkg/rule_engine/nodes/action_clear_alarm_node.go b/pkg/rule_engine/nodes/action_clear_alarm_node.go index b9bf1fb..1d22f93 100644 --- a/pkg/rule_engine/nodes/action_clear_alarm_node.go +++ b/pkg/rule_engine/nodes/action_clear_alarm_node.go @@ -29,16 +29,16 @@ func (f clearAlarmNodeFactory) Create(id string, meta Metadata) (Node, error) { return decodePath(meta, node) } -func (n *clearAlarmNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *clearAlarmNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) cleared := n.GetLinkedNode("Cleared") failure := n.GetLinkedNode("Failure") - alarm := services.DeviceAlarmModelDao.FindOneByType(msg.GetMetadata().GetKeyValue("deviceId").(string), n.AlarmType, "0") + alarm := services.DeviceAlarmModelDao.FindOneByType(msg.Metadata.GetValue("deviceId").(string), n.AlarmType, "0") if alarm.DeviceId != "" { log.Println("清除告警") alarm.State = global.CLEARED - marshal, _ := json.Marshal(msg.GetMsg()) + marshal, _ := json.Marshal(msg.Msg) alarm.Details = string(marshal) err := services.DeviceAlarmModelDao.Update(*alarm) if err != nil { diff --git a/pkg/rule_engine/nodes/action_create_alarm_node.go b/pkg/rule_engine/nodes/action_create_alarm_node.go index 68b681f..9d8ef4f 100644 --- a/pkg/rule_engine/nodes/action_create_alarm_node.go +++ b/pkg/rule_engine/nodes/action_create_alarm_node.go @@ -29,16 +29,16 @@ func (f createAlarmNodeFactory) Create(id string, meta Metadata) (Node, error) { return decodePath(meta, node) } -func (n *createAlarmNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *createAlarmNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) created := n.GetLinkedNode("Created") updated := n.GetLinkedNode("Updated") failure := n.GetLinkedNode("Failure") - alarm := services.DeviceAlarmModelDao.FindOneByType(msg.GetMetadata().GetKeyValue("deviceId").(string), n.AlarmType, "0") + alarm := services.DeviceAlarmModelDao.FindOneByType(msg.Metadata.GetValue("deviceId").(string), n.AlarmType, "0") if alarm.DeviceId != "" { - marshal, _ := json.Marshal(msg.GetMsg()) + marshal, _ := json.Marshal(msg.Msg) alarm.Details = string(marshal) err := services.DeviceAlarmModelDao.Update(*alarm) if err != nil { @@ -53,14 +53,14 @@ func (n *createAlarmNode) Handle(msg message.Message) error { } else { alarm = &entity.DeviceAlarm{} alarm.Id = kgo.KStr.Uniqid("a") - alarm.DeviceId = msg.GetMetadata().GetKeyValue("deviceId").(string) - alarm.ProductId = msg.GetMetadata().GetKeyValue("productId").(string) - alarm.Name = msg.GetMetadata().GetKeyValue("deviceName").(string) + alarm.DeviceId = msg.Metadata.GetValue("deviceId").(string) + alarm.ProductId = msg.Metadata.GetValue("productId").(string) + alarm.Name = msg.Metadata.GetValue("deviceName").(string) alarm.Level = n.AlarmSeverity alarm.State = global.ALARMING alarm.Type = n.AlarmType alarm.Time = time.Now() - marshal, _ := json.Marshal(msg.GetMsg()) + marshal, _ := json.Marshal(msg.Msg) alarm.Details = string(marshal) err := services.DeviceAlarmModelDao.Insert(*alarm) if err != nil { diff --git a/pkg/rule_engine/nodes/action_delay_node.go b/pkg/rule_engine/nodes/action_delay_node.go index 2105669..f0e35b0 100644 --- a/pkg/rule_engine/nodes/action_delay_node.go +++ b/pkg/rule_engine/nodes/action_delay_node.go @@ -13,11 +13,11 @@ const DelayNodeName = "DelayNode" type delayNode struct { bareNode - PeriodTs int `json:"periodTs" yaml:"periodTs" jpath:"periodTs"` //周期时间 - MaxPendingMessages int `json:"maxPendingMessages" yaml:"maxPendingMessages" jpath:"maxPendingMessages"` //最大等待消息数 - messageQueue []message.Message `jpath:"-"` - delayTimer *time.Timer `jpath:"-"` - lock sync.Mutex `jpath:"-"` + PeriodTs int `json:"periodTs" yaml:"periodTs" jpath:"periodTs"` //周期时间 + MaxPendingMessages int `json:"maxPendingMessages" yaml:"maxPendingMessages" jpath:"maxPendingMessages"` //最大等待消息数 + messageQueue []*message.Message `jpath:"-"` + delayTimer *time.Timer `jpath:"-"` + lock sync.Mutex `jpath:"-"` } type delayNodeFactory struct{} @@ -31,12 +31,12 @@ func (f delayNodeFactory) Create(id string, meta Metadata) (Node, error) { lock: sync.Mutex{}, } _, err := decodePath(meta, node) - node.messageQueue = make([]message.Message, node.MaxPendingMessages) + node.messageQueue = make([]*message.Message, node.MaxPendingMessages) return node, err } -func (n *delayNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *delayNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") diff --git a/pkg/rule_engine/nodes/action_generator_node.go b/pkg/rule_engine/nodes/action_generator_node.go index 4cffe8c..84ea52c 100644 --- a/pkg/rule_engine/nodes/action_generator_node.go +++ b/pkg/rule_engine/nodes/action_generator_node.go @@ -25,8 +25,8 @@ func (f messageGeneratorNodeFactory) Create(id string, meta Metadata) (Node, err return decodePath(meta, node) } -func (n *messageGeneratorNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *messageGeneratorNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") @@ -42,7 +42,7 @@ func (n *messageGeneratorNode) Handle(msg message.Message) error { ticker.Stop() return } - scriptEngine := NewScriptEngine(msg, "Generate", n.Script) + scriptEngine := NewScriptEngine(*msg, "Generate", n.Script) generate, err := scriptEngine.ScriptGenerate() if err != nil { if failureLabelNode != nil { @@ -50,9 +50,9 @@ func (n *messageGeneratorNode) Handle(msg message.Message) error { } return } - msg.SetMsg(generate["msg"].(map[string]interface{})) - msg.SetType(generate["msgType"].(string)) - msg.SetMetadata(message.NewDefaultMetadata(generate["metadata"].(map[string]interface{}))) + msg.Msg = generate["msg"].(message.Msg) + msg.Metadata = generate["metadata"].(message.Metadata) + msg.MsgType = generate["msgType"].(string) if successLabelNode != nil { go successLabelNode.Handle(msg) } diff --git a/pkg/rule_engine/nodes/action_log_node.go b/pkg/rule_engine/nodes/action_log_node.go index 2939cf5..5cf3471 100644 --- a/pkg/rule_engine/nodes/action_log_node.go +++ b/pkg/rule_engine/nodes/action_log_node.go @@ -24,11 +24,11 @@ func (f logNodeFactory) Create(id string, meta Metadata) (Node, error) { return decodePath(meta, node) } -func (n *logNode) Handle(msg message.Message) error { +func (n *logNode) Handle(msg *message.Message) error { successLableNode := n.GetLinkedNode("Success") failureLableNode := n.GetLinkedNode("Failure") - scriptEngine := NewScriptEngine(msg, "ToString", n.Script) + scriptEngine := NewScriptEngine(*msg, "ToString", n.Script) logMessage, err := scriptEngine.ScriptToString() if err != nil { if failureLableNode != nil { @@ -38,10 +38,10 @@ func (n *logNode) Handle(msg message.Message) error { } } services.RuleChainMsgLogModelDao.Insert(entity.RuleChainMsgLog{ - MessageId: msg.GetId(), - MsgType: msg.GetType(), - DeviceName: msg.GetMetadata().GetValues()["deviceName"].(string), - Ts: msg.GetTs(), + MessageId: msg.Id, + MsgType: msg.MsgType, + DeviceName: msg.Metadata["deviceName"].(string), + Ts: msg.Ts, Content: logMessage, }) global.Log.Info(logMessage) diff --git a/pkg/rule_engine/nodes/action_rpc_request_node.go b/pkg/rule_engine/nodes/action_rpc_request_node.go new file mode 100644 index 0000000..e709505 --- /dev/null +++ b/pkg/rule_engine/nodes/action_rpc_request_node.go @@ -0,0 +1,48 @@ +package nodes + +import ( + "pandax/pkg/global" + "pandax/pkg/mqtt" + "pandax/pkg/rule_engine/message" +) + +type rpcRequestNode struct { + bareNode + Timeout int `json:"timeout"` + Payload mqtt.RpcPayload `json:"payload"` +} + +type rpcRequestNodeFactory struct{} + +func (f rpcRequestNodeFactory) Name() string { return "RpcRequestNode" } +func (f rpcRequestNodeFactory) Category() string { return NODE_CATEGORY_ACTION } +func (f rpcRequestNodeFactory) Labels() []string { return []string{"Success", "Failure"} } +func (f rpcRequestNodeFactory) Create(id string, meta Metadata) (Node, error) { + node := &rpcRequestNode{ + bareNode: newBareNode(f.Name(), id, meta, f.Labels()), + } + return decodePath(meta, node) +} + +func (n *rpcRequestNode) Handle(msg *message.Message) error { + successLableNode := n.GetLinkedNode("Success") + failureLableNode := n.GetLinkedNode("Failure") + + var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "double", Timeout: n.Timeout} + rpc.GetRequestId() + respPayload, err := rpc.RequestCmd(n.Payload) + if err != nil { + if failureLableNode != nil { + return failureLableNode.Handle(msg) + } else { + return err + } + } + msgM := msg.Msg + msgM["payload"] = respPayload + msg.Msg = msgM + if successLableNode != nil { + return successLableNode.Handle(msg) + } + return nil +} diff --git a/pkg/rule_engine/nodes/action_rpc_respond_node.go b/pkg/rule_engine/nodes/action_rpc_respond_node.go new file mode 100644 index 0000000..871988e --- /dev/null +++ b/pkg/rule_engine/nodes/action_rpc_respond_node.go @@ -0,0 +1,50 @@ +package nodes + +import ( + "pandax/pkg/global" + "pandax/pkg/mqtt" + "pandax/pkg/rule_engine/message" +) + +type rpcRespondNode struct { + bareNode + RequestId int `json:"requestId"` +} + +type rpcRespondFactory struct{} + +func (f rpcRespondFactory) Name() string { return "RpcRespondNode" } +func (f rpcRespondFactory) Category() string { return NODE_CATEGORY_ACTION } +func (f rpcRespondFactory) Labels() []string { return []string{"Success", "Failure"} } +func (f rpcRespondFactory) Create(id string, meta Metadata) (Node, error) { + node := &rpcRespondNode{ + bareNode: newBareNode(f.Name(), id, meta, f.Labels()), + } + return decodePath(meta, node) +} + +func (n *rpcRespondNode) Handle(msg *message.Message) error { + successLableNode := n.GetLinkedNode("Success") + failureLableNode := n.GetLinkedNode("Failure") + RequestId := n.RequestId + if RequestId == 0 { + RequestId = int(msg.Metadata.GetValue("requestId").(float64)) + } + var datas = mqtt.RpcPayload{ + Method: msg.Msg.GetValue("method").(string), + Params: msg.Msg.GetValue("params"), + } + rpc := &mqtt.RpcRequest{Client: global.MqttClient, RequestId: RequestId} + err := rpc.RespondTpc(datas) + if err != nil { + if failureLableNode != nil { + return failureLableNode.Handle(msg) + } else { + return err + } + } + if successLableNode != nil { + return successLableNode.Handle(msg) + } + return nil +} diff --git a/pkg/rule_engine/nodes/action_save_attributes_node.go b/pkg/rule_engine/nodes/action_save_attributes_node.go index d7cbc80..302121e 100644 --- a/pkg/rule_engine/nodes/action_save_attributes_node.go +++ b/pkg/rule_engine/nodes/action_save_attributes_node.go @@ -22,11 +22,11 @@ func (f saveAttributesNodeFactory) Create(id string, meta Metadata) (Node, error return decodePath(meta, node) } -func (n *saveAttributesNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *saveAttributesNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") - if msg.GetType() != message.AttributesMes { + if msg.MsgType != message.AttributesMes { if failureLabelNode != nil { return failureLabelNode.Handle(msg) } else { @@ -34,8 +34,8 @@ func (n *saveAttributesNode) Handle(msg message.Message) error { } } //deviceId := msg.GetMetadata().GetValues()["deviceId"].(string) - deviceName := msg.GetMetadata().GetValues()["deviceName"].(string) - err := global.TdDb.InsertDevice(deviceName+"_attributes", msg.GetMsg()) + deviceName := msg.Metadata["deviceName"].(string) + err := global.TdDb.InsertDevice(deviceName+"_attributes", msg.Msg) if err != nil { if failureLabelNode != nil { return failureLabelNode.Handle(msg) diff --git a/pkg/rule_engine/nodes/action_save_timeseries_node.go b/pkg/rule_engine/nodes/action_save_timeseries_node.go index 1cbd4b7..10a387c 100644 --- a/pkg/rule_engine/nodes/action_save_timeseries_node.go +++ b/pkg/rule_engine/nodes/action_save_timeseries_node.go @@ -23,11 +23,11 @@ func (f saveTimeSeriesNodeFactory) Create(id string, meta Metadata) (Node, error return decodePath(meta, node) } -func (n *saveTimeSeriesNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *saveTimeSeriesNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") - if msg.GetType() != message.TelemetryMes { + if msg.MsgType != message.TelemetryMes { if failureLabelNode != nil { return failureLabelNode.Handle(msg) } else { @@ -35,9 +35,10 @@ func (n *saveTimeSeriesNode) Handle(msg message.Message) error { } } //deviceId := msg.GetMetadata().GetValues()["deviceId"].(string) - deviceName := msg.GetMetadata().GetValues()["deviceName"].(string) - log.Println("telemetry", msg.GetMsg()) - err := global.TdDb.InsertDevice(deviceName+"_telemetry", msg.GetMsg()) + deviceName := msg.Metadata["deviceName"].(string) + log.Println(msg.Msg) + log.Println(msg.Metadata) + err := global.TdDb.InsertDevice(deviceName+"_telemetry", msg.Msg) log.Println(err) if err != nil { if failureLabelNode != nil { diff --git a/pkg/rule_engine/nodes/external_ding_node.go b/pkg/rule_engine/nodes/external_ding_node.go index 5f2fe38..cfd80a2 100644 --- a/pkg/rule_engine/nodes/external_ding_node.go +++ b/pkg/rule_engine/nodes/external_ding_node.go @@ -6,7 +6,7 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/XM-GO/PandaKit/httpclient" + "github.com/PandaXGO/PandaKit/httpclient" "github.com/sirupsen/logrus" "net/url" "pandax/pkg/rule_engine/message" @@ -35,8 +35,8 @@ func (f externalDingNodeFactory) Create(id string, meta Metadata) (Node, error) return decodePath(meta, node) } -func (n *externalDingNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalDingNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") diff --git a/pkg/rule_engine/nodes/external_kafka_node.go b/pkg/rule_engine/nodes/external_kafka_node.go index 6bff75a..a235425 100644 --- a/pkg/rule_engine/nodes/external_kafka_node.go +++ b/pkg/rule_engine/nodes/external_kafka_node.go @@ -45,20 +45,20 @@ func (f externalKafkaNodeFactory) Create(id string, meta Metadata) (Node, error) return node, nil } -func (n *externalKafkaNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalKafkaNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) defer n.KafkaCli.Close() successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") value := sarama.ByteEncoder("") if n.KeyPattern == "metadataKey" { - marshal, err := json.Marshal(msg.GetMetadata().GetValues()) + marshal, err := json.Marshal(msg.Metadata) if err != nil { return err } value = marshal } else { - marshal, err := json.Marshal(msg.GetMsg()) + marshal, err := json.Marshal(msg.Msg) if err != nil { return err } diff --git a/pkg/rule_engine/nodes/external_mqtt_node.go b/pkg/rule_engine/nodes/external_mqtt_node.go index f47835c..48527a9 100644 --- a/pkg/rule_engine/nodes/external_mqtt_node.go +++ b/pkg/rule_engine/nodes/external_mqtt_node.go @@ -59,13 +59,13 @@ func (f externalMqttNodeFactory) Create(id string, meta Metadata) (Node, error) return node, nil } -func (n *externalMqttNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalMqttNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) defer n.MqttCli.Disconnect(1000) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") topic := n.TopicPattern //need fix add msg.metadata in it - sendmqttmsg, err := json.Marshal(msg.GetMsg()) + sendmqttmsg, err := json.Marshal(msg.Msg) if err != nil { return err } diff --git a/pkg/rule_engine/nodes/external_nats_node.go b/pkg/rule_engine/nodes/external_nats_node.go index e52c270..5298f10 100644 --- a/pkg/rule_engine/nodes/external_nats_node.go +++ b/pkg/rule_engine/nodes/external_nats_node.go @@ -35,8 +35,8 @@ func (f externalNatsNodeFactory) Create(id string, meta Metadata) (Node, error) return node, nil } -func (n *externalNatsNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalNatsNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) defer n.client.Close() successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") diff --git a/pkg/rule_engine/nodes/external_restapi_node.go b/pkg/rule_engine/nodes/external_restapi_node.go index cffcd88..9dff45b 100644 --- a/pkg/rule_engine/nodes/external_restapi_node.go +++ b/pkg/rule_engine/nodes/external_restapi_node.go @@ -3,7 +3,7 @@ package nodes import ( "encoding/json" "errors" - "github.com/XM-GO/PandaKit/httpclient" + "github.com/PandaXGO/PandaKit/httpclient" "github.com/sirupsen/logrus" "pandax/pkg/rule_engine/message" ) @@ -27,8 +27,8 @@ func (f externalRestapiNodeFactory) Create(id string, meta Metadata) (Node, erro return decodePath(meta, node) } -func (n *externalRestapiNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalRestapiNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLableNode := n.GetLinkedNode("Success") failureLableNode := n.GetLinkedNode("Failure") if n.RequestMethod == "GET" { @@ -42,11 +42,11 @@ func (n *externalRestapiNode) Handle(msg message.Message) error { return failureLableNode.Handle(msg) } else { if successLableNode != nil { - metadata := msg.GetMetadata() + metadata := msg.Metadata for key, value := range response { - metadata.SetKeyValue(key, value) + metadata.SetValue(key, value) } - msg.SetMetadata(metadata) + msg.Metadata = metadata return successLableNode.Handle(msg) } } diff --git a/pkg/rule_engine/nodes/external_rule_chain_node.go b/pkg/rule_engine/nodes/external_rule_chain_node.go index c762a78..d099c71 100644 --- a/pkg/rule_engine/nodes/external_rule_chain_node.go +++ b/pkg/rule_engine/nodes/external_rule_chain_node.go @@ -27,8 +27,8 @@ func (f externalRuleChainNodeFactory) Create(id string, meta Metadata) (Node, er return decodePath(meta, node) } -func (n *externalRuleChainNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalRuleChainNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) data := services.RuleChainModelDao.FindOne(n.RuleId) if data == nil { return errors.New(fmt.Sprintf("节点 %s ,获取规则链失败", n.Name())) diff --git a/pkg/rule_engine/nodes/external_send_email_node.go b/pkg/rule_engine/nodes/external_send_email_node.go index a5b4ede..167b954 100644 --- a/pkg/rule_engine/nodes/external_send_email_node.go +++ b/pkg/rule_engine/nodes/external_send_email_node.go @@ -38,8 +38,8 @@ func (f externalSendEmailNodeFactory) Create(id string, meta Metadata) (Node, er return decodePath(meta, node) } -func (n *externalSendEmailNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalSendEmailNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") @@ -48,7 +48,7 @@ func (n *externalSendEmailNode) Handle(msg message.Message) error { if tos[len(tos)-1] == "" { // 判断切片的最后一个元素是否为空,为空则移除 tos = tos[:len(tos)-1] } - err := n.send(tos, msg) + err := n.send(tos, *msg) if err != nil { if failureLabelNode != nil { return failureLabelNode.Handle(msg) @@ -73,7 +73,7 @@ func (m *externalSendEmailNode) send(to []string, msg message.Message) error { } e.To = to e.Subject = m.Subject - template, err := ParseTemplate(m.Body, msg.GetMetadata().GetValues()) + template, err := ParseTemplate(m.Body, msg.Metadata) if err != nil { return err } diff --git a/pkg/rule_engine/nodes/external_send_sms_node.go b/pkg/rule_engine/nodes/external_send_sms_node.go index ff854dc..e0a6e5a 100644 --- a/pkg/rule_engine/nodes/external_send_sms_node.go +++ b/pkg/rule_engine/nodes/external_send_sms_node.go @@ -27,8 +27,8 @@ func (f externalSendSmsNodeFactory) Create(id string, meta Metadata) (Node, erro return decodePath(meta, node) } -func (n *externalSendSmsNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalSendSmsNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") //failureLabelNode := n.GetLinkedNode("Failure") diff --git a/pkg/rule_engine/nodes/external_wechat_node.go b/pkg/rule_engine/nodes/external_wechat_node.go index 0600ae6..5bf4a3e 100644 --- a/pkg/rule_engine/nodes/external_wechat_node.go +++ b/pkg/rule_engine/nodes/external_wechat_node.go @@ -2,7 +2,7 @@ package nodes import ( "encoding/json" - "github.com/XM-GO/PandaKit/httpclient" + "github.com/PandaXGO/PandaKit/httpclient" "github.com/sirupsen/logrus" "pandax/pkg/rule_engine/message" ) @@ -28,8 +28,8 @@ func (f externalWechatNodeFactory) Create(id string, meta Metadata) (Node, error return decodePath(meta, node) } -func (n *externalWechatNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *externalWechatNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") diff --git a/pkg/rule_engine/nodes/factory.go b/pkg/rule_engine/nodes/factory.go index 8360126..042b241 100644 --- a/pkg/rule_engine/nodes/factory.go +++ b/pkg/rule_engine/nodes/factory.go @@ -22,10 +22,10 @@ type Factory interface { } var ( - // allNodeFactories hold all node's factory + // 所有节点对应关系 allNodeFactories map[string]Factory = make(map[string]Factory) - // allNodeCategories hold node's metadata by category + // 所有节点的类型MAP allNodeCategories map[string][]map[string]interface{} = make(map[string][]map[string]interface{}) allCategories []map[string]interface{} = make([]map[string]interface{}, 0) ) @@ -48,7 +48,7 @@ func NewNode(nodeType string, id string, meta Metadata) (Node, error) { return nil, fmt.Errorf("invalid node type '%s'", nodeType) } -// GetCategoryNodes return specified category's all nodes +// GetCategoryNodes 获取所有分类节点 func GetCategoryNodes() map[string][]map[string]interface{} { return allNodeCategories } func GetCategory() []map[string]interface{} { return allCategories } diff --git a/pkg/rule_engine/nodes/filter_device_type_switch_node.go b/pkg/rule_engine/nodes/filter_device_type_switch_node.go index ea38b28..b0b821e 100644 --- a/pkg/rule_engine/nodes/filter_device_type_switch_node.go +++ b/pkg/rule_engine/nodes/filter_device_type_switch_node.go @@ -5,8 +5,8 @@ import ( "pandax/pkg/rule_engine/message" ) -//检查关联关系 -//该消息来自与哪个实体或到那个实体 +// 检查关联关系 +// 该消息来自与哪个实体或到那个实体 type deviceTypeSwitchNode struct { bareNode } @@ -25,18 +25,18 @@ func (f deviceTypeSwitchNodeFactory) Create(id string, meta Metadata) (Node, err return decodePath(meta, node) } -func (n *deviceTypeSwitchNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *deviceTypeSwitchNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) deviceLabelNode := n.GetLinkedNode(message.DEVICE) gatewayLabelNode := n.GetLinkedNode(message.GATEWAY) - if msg.GetMetadata().GetKeyValue("deviceType") == message.DEVICE { + if msg.Metadata.GetValue("deviceType").(string) == message.DEVICE { if deviceLabelNode != nil { return deviceLabelNode.Handle(msg) } } - if msg.GetMetadata().GetKeyValue("deviceType") == message.GATEWAY { + if msg.Metadata.GetValue("deviceType").(string) == message.GATEWAY { if gatewayLabelNode != nil { return gatewayLabelNode.Handle(msg) } diff --git a/pkg/rule_engine/nodes/filter_message_type_node.go b/pkg/rule_engine/nodes/filter_message_type_node.go index 31bfa5c..30b2ac2 100644 --- a/pkg/rule_engine/nodes/filter_message_type_node.go +++ b/pkg/rule_engine/nodes/filter_message_type_node.go @@ -24,12 +24,12 @@ func (f messageTypeFilterNodeFactory) Create(id string, meta Metadata) (Node, er return decodePath(meta, node) } -func (n *messageTypeFilterNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *messageTypeFilterNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) trueLabelNode := n.GetLinkedNode("True") falseLabelNode := n.GetLinkedNode("False") - messageType := msg.GetType() + messageType := msg.MsgType for _, filterType := range n.MessageTypes { if filterType == messageType && trueLabelNode != nil { diff --git a/pkg/rule_engine/nodes/filter_message_type_switch_node.go b/pkg/rule_engine/nodes/filter_message_type_switch_node.go index 18a2ce6..0797117 100644 --- a/pkg/rule_engine/nodes/filter_message_type_switch_node.go +++ b/pkg/rule_engine/nodes/filter_message_type_switch_node.go @@ -32,11 +32,11 @@ func (f messageTypeSwitchNodeFactory) Create(id string, meta Metadata) (Node, er return decodePath(meta, node) } -func (n *messageTypeSwitchNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) - +func (n *messageTypeSwitchNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) + msg.Metadata = map[string]interface{}{"AA": "BB", "deviceName": "fff"} nodes := n.GetLinkedNodes() - messageType := msg.GetType() + messageType := msg.MsgType for label, node := range nodes { if messageType == label { return node.Handle(msg) diff --git a/pkg/rule_engine/nodes/filter_script_node.go b/pkg/rule_engine/nodes/filter_script_node.go index aa77322..369b48a 100644 --- a/pkg/rule_engine/nodes/filter_script_node.go +++ b/pkg/rule_engine/nodes/filter_script_node.go @@ -24,12 +24,12 @@ func (f scriptFilterNodeFactory) Create(id string, meta Metadata) (Node, error) return decodePath(meta, node) } -func (n *scriptFilterNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *scriptFilterNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) trueLabelNode := n.GetLinkedNode("True") falseLabelNode := n.GetLinkedNode("False") - scriptEngine := NewScriptEngine(msg, "Filter", n.Script) + scriptEngine := NewScriptEngine(*msg, "Filter", n.Script) isTrue, error := scriptEngine.ScriptOnFilter() if isTrue == true && error == nil && trueLabelNode != nil { return trueLabelNode.Handle(msg) diff --git a/pkg/rule_engine/nodes/filter_switch_node.go b/pkg/rule_engine/nodes/filter_switch_node.go index a4f0181..b128ed1 100644 --- a/pkg/rule_engine/nodes/filter_switch_node.go +++ b/pkg/rule_engine/nodes/filter_switch_node.go @@ -34,10 +34,10 @@ func (f switchFilterNodeFactory) Create(id string, meta Metadata) (Node, error) return decodePath(meta, node) } -func (n *switchFilterNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *switchFilterNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) - scriptEngine := NewScriptEngine(msg, "Switch", n.Script) + scriptEngine := NewScriptEngine(*msg, "Switch", n.Script) SwitchResults, err := scriptEngine.ScriptOnSwitch() if err != nil { return err diff --git a/pkg/rule_engine/nodes/init.go b/pkg/rule_engine/nodes/init.go index 722b905..529c779 100644 --- a/pkg/rule_engine/nodes/init.go +++ b/pkg/rule_engine/nodes/init.go @@ -28,5 +28,6 @@ func init() { RegisterFactory(externalSendEmailNodeFactory{}) RegisterFactory(externalSendSmsNodeFactory{}) RegisterFactory(externalRuleChainNodeFactory{}) - + RegisterFactory(rpcRespondFactory{}) + RegisterFactory(rpcRequestNodeFactory{}) } diff --git a/pkg/rule_engine/nodes/input_node.go b/pkg/rule_engine/nodes/input_node.go index 89f794e..34e1211 100644 --- a/pkg/rule_engine/nodes/input_node.go +++ b/pkg/rule_engine/nodes/input_node.go @@ -23,8 +23,8 @@ func (f inputNodeFactory) Create(id string, meta Metadata) (Node, error) { return node, nil } -func (n *inputNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *inputNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) nodes := n.GetLinkedNodes() for _, node := range nodes { diff --git a/pkg/rule_engine/nodes/metadata.go b/pkg/rule_engine/nodes/metadata.go index 84c38c6..a723021 100644 --- a/pkg/rule_engine/nodes/metadata.go +++ b/pkg/rule_engine/nodes/metadata.go @@ -10,6 +10,7 @@ const ( NODE_CONFIG_ORIGINATOR_TYPE_KEY = "originatorTypeKey" ) +// Metadata 前端 参数 Properties type Metadata interface { Keys() []string With(key string, val interface{}) Metadata diff --git a/pkg/rule_engine/nodes/node.go b/pkg/rule_engine/nodes/node.go index ed12f8f..a290850 100644 --- a/pkg/rule_engine/nodes/node.go +++ b/pkg/rule_engine/nodes/node.go @@ -13,7 +13,7 @@ type Node interface { Id() string Metadata() Metadata MustLabels() []string - Handle(message.Message) error + Handle(*message.Message) error AddLinkedNode(label string, node Node) GetLinkedNode(label string) Node @@ -55,7 +55,7 @@ func (n *bareNode) GetLinkedNodes() map[string]Node { return n.nodes } func (n *bareNode) Metadata() Metadata { return n.meta } -func (n *bareNode) Handle(message.Message) error { return errors.New("not implemented") } +func (n *bareNode) Handle(*message.Message) error { return errors.New("not implemented") } func decodePath(meta Metadata, n Node) (Node, error) { if err := meta.DecodePath(n); err != nil { diff --git a/pkg/rule_engine/nodes/script_engine.go b/pkg/rule_engine/nodes/script_engine.go index 52a4537..63ae1ae 100644 --- a/pkg/rule_engine/nodes/script_engine.go +++ b/pkg/rule_engine/nodes/script_engine.go @@ -8,7 +8,7 @@ import ( ) type ScriptEngine interface { - ScriptOnMessage() (message.Message, error) + ScriptOnMessage() (*message.Message, error) ScriptOnSwitch() ([]string, error) ScriptOnFilter() (bool, error) ScriptToString() (string, error) @@ -29,7 +29,7 @@ func NewScriptEngine(msg message.Message, fun string, script string) ScriptEngin } } -func (bse *baseScriptEngine) ScriptOnMessage() (message.Message, error) { +func (bse *baseScriptEngine) ScriptOnMessage() (*message.Message, error) { msg := bse.Msg vm := goja.New() _, err := vm.RunString(bse.Script) @@ -43,11 +43,11 @@ func (bse *baseScriptEngine) ScriptOnMessage() (message.Message, error) { logrus.Info("Js函数映射到 Go 函数失败!") return nil, err } - datas := fn(msg.GetMsg(), msg.GetMetadata().GetValues(), msg.GetType()) - msg.SetMsg(datas["msg"].(map[string]interface{})) - msg.SetMetadata(message.NewDefaultMetadata(datas["metadata"].(map[string]interface{}))) - msg.SetType(datas["msgType"].(string)) - return msg, nil + datas := fn(msg.Msg, msg.Metadata, msg.MsgType) + msg.Msg = datas["msg"].(map[string]interface{}) + msg.Metadata = datas["metadata"].(map[string]interface{}) + msg.MsgType = datas["msgType"].(string) + return &msg, nil } func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, error) { @@ -64,7 +64,7 @@ func (bse *baseScriptEngine) ScriptOnSwitch() ([]string, error) { logrus.Info("Js函数映射到 Go 函数失败!") return nil, err } - datas := fn(msg.GetMsg(), msg.GetMetadata().GetValues(), msg.GetType()) + datas := fn(msg.Msg, msg.Metadata, msg.MsgType) return datas, nil } @@ -82,7 +82,7 @@ func (bse *baseScriptEngine) ScriptOnFilter() (bool, error) { logrus.Info("Js函数映射到 Go 函数失败!") return false, err } - datas := fn(msg.GetMsg(), msg.GetMetadata().GetValues(), msg.GetType()) + datas := fn(msg.Msg, msg.Metadata, msg.MsgType) return datas, nil } @@ -100,7 +100,7 @@ func (bse *baseScriptEngine) ScriptToString() (string, error) { logrus.Info("Js函数映射到 Go 函数失败!") return "", err } - data := fn(msg.GetMsg(), msg.GetMetadata().GetValues(), msg.GetType()) + data := fn(msg.Msg, msg.Metadata, msg.MsgType) return data, nil } @@ -118,6 +118,6 @@ func (bse *baseScriptEngine) ScriptGenerate() (map[string]interface{}, error) { logrus.Info("Js函数映射到 Go 函数失败!") return nil, err } - datas := fn(msg.GetMsg(), msg.GetMetadata().GetValues(), msg.GetType()) + datas := fn(msg.Msg, msg.Metadata, msg.MsgType) return datas, nil } diff --git a/pkg/rule_engine/nodes/transform_delete_key_node.go b/pkg/rule_engine/nodes/transform_delete_key_node.go index f20e418..7e45be5 100644 --- a/pkg/rule_engine/nodes/transform_delete_key_node.go +++ b/pkg/rule_engine/nodes/transform_delete_key_node.go @@ -23,27 +23,26 @@ func (f transformDeleteKeyNodeFactory) Create(id string, meta Metadata) (Node, e return decodePath(meta, node) } -func (n *transformDeleteKeyNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *transformDeleteKeyNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") keys := strings.Split(n.Keys, ",") if n.FormType == "msg" { - data := msg.GetMsg() + data := msg.Msg for _, key := range keys { if _, found := data[key]; found { delete(data, key) - msg.SetMsg(data) + msg.Msg = data } } } else if n.FormType == "metadata" { - data := msg.GetMetadata() + data := msg.Metadata for _, key := range keys { - if data.GetKeyValue(key) != nil { - values := data.GetValues() - delete(values, key) - msg.SetMetadata(message.NewDefaultMetadata(values)) + if data.GetValue(key) != nil { + delete(data, key) + msg.Metadata = data } } } else { diff --git a/pkg/rule_engine/nodes/transform_rename_key_node.go b/pkg/rule_engine/nodes/transform_rename_key_node.go index ebbc62e..6730d7e 100644 --- a/pkg/rule_engine/nodes/transform_rename_key_node.go +++ b/pkg/rule_engine/nodes/transform_rename_key_node.go @@ -26,28 +26,27 @@ func (f transformRenameKeyNodeFactory) Create(id string, meta Metadata) (Node, e return decodePath(meta, node) } -func (n *transformRenameKeyNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *transformRenameKeyNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") if n.FormType == "msg" { - data := msg.GetMsg() + data := msg.Msg for _, key := range n.Keys { if _, found := data[key.OldName]; found { data[key.NewName] = data[key.OldName] delete(data, key.OldName) - msg.SetMsg(data) + msg.Msg = data } } } else if n.FormType == "metadata" { - data := msg.GetMetadata() + data := msg.Metadata for _, key := range n.Keys { - if data.GetKeyValue(key.OldName) != nil { - values := data.GetValues() - values[key.NewName] = values[key.OldName] - delete(values, key.OldName) - msg.SetMetadata(message.NewDefaultMetadata(values)) + if data.GetValue(key.OldName) != nil { + data[key.NewName] = data[key.OldName] + delete(data, key.OldName) + msg.Metadata = data } } } else { diff --git a/pkg/rule_engine/nodes/transform_script_node.go b/pkg/rule_engine/nodes/transform_script_node.go index ed86083..ea12a73 100644 --- a/pkg/rule_engine/nodes/transform_script_node.go +++ b/pkg/rule_engine/nodes/transform_script_node.go @@ -22,13 +22,13 @@ func (f transformScriptNodeFactory) Create(id string, meta Metadata) (Node, erro return decodePath(meta, node) } -func (n *transformScriptNode) Handle(msg message.Message) error { - logrus.Infof("%s handle message '%s'", n.Name(), msg.GetType()) +func (n *transformScriptNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) successLabelNode := n.GetLinkedNode("Success") failureLabelNode := n.GetLinkedNode("Failure") - scriptEngine := NewScriptEngine(msg, "Transform", n.Script) + scriptEngine := NewScriptEngine(*msg, "Transform", n.Script) newMessage, err := scriptEngine.ScriptOnMessage() if err != nil { if failureLabelNode != nil { diff --git a/pkg/tool/conv.go b/pkg/tool/conv.go index 4e6ff8a..bf9348e 100644 --- a/pkg/tool/conv.go +++ b/pkg/tool/conv.go @@ -78,3 +78,17 @@ func MapToStruct(m map[string]interface{}, s interface{}) error { return nil } + +func InterfaceToStruct(m interface{}, s interface{}) error { + data, err := json.Marshal(m) + if err != nil { + return err + } + + err = json.Unmarshal(data, s) + if err != nil { + return err + } + + return nil +} diff --git a/pkg/transport/http_server.go b/pkg/transport/http_server.go index ab08496..b3283c6 100644 --- a/pkg/transport/http_server.go +++ b/pkg/transport/http_server.go @@ -2,7 +2,7 @@ package transport import ( "context" - "github.com/XM-GO/PandaKit/logger" + "github.com/PandaXGO/PandaKit/logger" "github.com/emicklei/go-restful/v3" "net/http" "pandax/pkg/global" diff --git a/pkg/ys/device.go b/pkg/ys/device.go new file mode 100644 index 0000000..e6e5a09 --- /dev/null +++ b/pkg/ys/device.go @@ -0,0 +1,57 @@ +package ys + +import ( + "pandax/pkg/tool" +) + +const ( + //设备列表 + DEVICELIST = "https://open.ys7.com/api/lapp/device/list" + //获取指定设备的通道信息 + DEVICECHANNELLIST = "https://open.ys7.com/api/lapp/device/camera/list" + // 获取播放地址 + DEVICELIVEADDRESS = "https://open.ys7.com/api/lapp/v2/live/address/get" +) + +// GetDeviceList 获取设备列表 +func (ys *Ys) GetDeviceList(pageNum, pageSize int) (devices []Device, total int64, err error) { + params := make(map[string]interface{}) + params["pageStart"] = pageNum + params["pageSize"] = pageSize + status, err := ys.authorizeRequset("POST", DEVICELIST, params, &devices) //获取用户下的设备列表 + if err != nil { + return nil, 0, err + } + var page Page + err = tool.InterfaceToStruct(status.Page, &page) + if err != nil { + return nil, 0, err + } + return devices, int64(page.Total), nil +} + +// GetDeviceChannelList 获取指定设备的通道信息 +func (ys *Ys) GetDeviceChannelList(deviceSerial string) (cameras []Channel, err error) { + params := make(map[string]interface{}) + params["deviceSerial"] = deviceSerial + _, err = ys.authorizeRequset("POST", DEVICECHANNELLIST, params, &cameras) + if err != nil { + return nil, err + } + return cameras, nil +} + +// GetDeviceLiveAddress 获取指定设备通道的播放地址 +func (ys *Ys) GetDeviceLiveAddress(deviceSerial string, channelNo int) (live []LiveAddress, err error) { + params := make(map[string]interface{}) + params["deviceSerial"] = deviceSerial + params["channelNo"] = channelNo + params["protocol"] = 1 //流播放协议,1-ezopen、2-hls、3-rtmp、4-flv,默认为1 + params["type"] = "1" //地址的类型,1-预览,2-本地录像回放,3-云存储录像回放,非必选,默认为1;回放仅支持rtmp、ezopen、flv协议 + params["quality"] = 1 //视频清晰度,1-高清(主码流)、2-流畅(子码流) + _, err = ys.authorizeRequset("POST", DEVICELIVEADDRESS, params, &live) + if err != nil { + return nil, err + } + return live, nil +} diff --git a/pkg/ys/ptz.go b/pkg/ys/ptz.go new file mode 100644 index 0000000..7123824 --- /dev/null +++ b/pkg/ys/ptz.go @@ -0,0 +1,37 @@ +package ys + +const ( + //云台控制开始 + URLPTZSTAR = "https://open.ys7.com/api/lapp/device/ptz/start" + //云台控制结束 + URLPTZSTOP = "https://open.ys7.com/api/lapp/device/ptz/stop" +) + +// StartPtz 开始云台控制 +func (ys *Ys) StartPtz(deviceSerial string, channelNo, direction, speed int) (err error) { + params := make(map[string]interface{}) + params["deviceSerial"] = deviceSerial + params["channelNo"] = channelNo + params["direction"] = direction + params["speed"] = speed + + _, err = ys.authorizeRequset("POST", URLPTZSTAR, params, nil) + if err != nil { + return + } + return nil +} + +// StopPtz 停止云台转动 +func (ys *Ys) StopPtz(deviceSerial string, channelNo, direction int) (err error) { + params := make(map[string]interface{}) + params["deviceSerial"] = deviceSerial + params["channelNo"] = channelNo + params["direction"] = direction + + _, err = ys.authorizeRequset("POST", URLPTZSTOP, params, nil) + if err != nil { + return + } + return nil +} diff --git a/pkg/ys/type.go b/pkg/ys/type.go new file mode 100644 index 0000000..1ec5141 --- /dev/null +++ b/pkg/ys/type.go @@ -0,0 +1,49 @@ +package ys + +type AccessToken struct { + AccessToken string `json:"accessToken"` + ExpireTime int64 `json:"expireTime"` +} + +type Status struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` + Page interface{} `json:"page"` +} + +type Page struct { + Total float64 `json:"total"` + Page float64 `json:"page"` + Size float64 `json:"size"` +} + +// Device 萤石设备数据结构 +type Device struct { + DeviceSerial string `json:"deviceSerial"` + DeviceName string `json:"deviceName"` + DeviceType string `json:"deviceType"` + Status int `json:"status"` + Defence int `json:"defence"` + DeviceVersion string `json:"deviceVersion"` +} + +// Channel 萤石摄像头通道数据结构 +type Channel struct { + DeviceSerial string `json:"deviceSerial"` + IpcSerial string `json:"ipcSerial"` + ChannelNo int `json:"channelNo"` + ChannelName string `json:"channelName"` + PicURL string `json:"picUrl"` + IsShared string `json:"isShared"` + VideoLevel int `json:"videoLevel"` + IsEncrypt int `json:"isEncrypt"` + Status int `json:"status"` +} + +// LiveAddress 播放地址 +type LiveAddress struct { + Id string `json:"id"` + Url string `json:"url"` + ExpireTime string `json:"expireTime"` +} diff --git a/pkg/ys/ys.go b/pkg/ys/ys.go new file mode 100644 index 0000000..6422454 --- /dev/null +++ b/pkg/ys/ys.go @@ -0,0 +1,94 @@ +package ys + +import ( + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "strings" + "time" +) + +const ( + //[用户]获取accessToken + ACCESSTOKEN = "https://open.ys7.com/api/lapp/token/get" +) + +type Ys struct { + AppKey string + Secret string + AccessToken string + ExpireTime int64 +} + +func (ys *Ys) GetAccessToken() error { + params := make(map[string]interface{}) + params["appKey"] = ys.AppKey + params["appSecret"] = ys.Secret + ac := &AccessToken{} + _, err := ys.requset("POST", ACCESSTOKEN, params, &ac) + if err != nil { + return err + } + ys.AccessToken = ac.AccessToken + ys.ExpireTime = ac.ExpireTime + return nil +} + +func (ys *Ys) requset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) { + defer func() { + if Rerr := recover(); Rerr != nil { + err = errors.New("recover error") + return + } + }() + var r http.Request + r.ParseForm() + for k, v := range params { + r.Form.Add(k, fmt.Sprint(v)) + } + req, err := http.NewRequest(method, url, strings.NewReader(r.Form.Encode())) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + client := &http.Client{Timeout: 60 * time.Second} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + buf, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var res = Status{ + Data: data, + } + err = json.Unmarshal(buf, &res) + if err != nil { + return nil, err + } + if res.Code != "200" { + return status, errors.New(res.Msg) + } + return status, nil +} + +func (ys *Ys) authorizeRequset(method, url string, params map[string]interface{}, data interface{}) (status *Status, err error) { + exTime := time.Unix(ys.ExpireTime/1000, 0) + if exTime.Unix() < time.Now().Unix() || ys.AccessToken == "" { + ys.GetAccessToken() + } + defer func() { + if Rerr := recover(); Rerr != nil { + err = errors.New("recover error") + return + } + }() + params["accessToken"] = ys.AccessToken + status, err = ys.requset(method, url, params, data) + return +} diff --git a/resource/template/go/api.template b/resource/template/go/api.template index 78bb145..809a525 100644 --- a/resource/template/go/api.template +++ b/resource/template/go/api.template @@ -5,12 +5,12 @@ package api // 生成人:{{.FunctionAuthor}} // ========================================================================== import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/{{.PackageName}}/entity" "pandax/apps/{{.PackageName}}/services" - "github.com/XM-GO/PandaKit/utils" + "github.com/PandaXGO/PandaKit/utils" ) type {{.ClassName}}Api struct { diff --git a/resource/template/go/router.template b/resource/template/go/router.template index 621698b..039dcfc 100644 --- a/resource/template/go/router.template +++ b/resource/template/go/router.template @@ -6,8 +6,8 @@ package router import ( - "github.com/XM-GO/PandaKit/model" - "github.com/XM-GO/PandaKit/restfulx" + "github.com/PandaXGO/PandaKit/model" + "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/{{.PackageName}}/api" "pandax/apps/{{.PackageName}}/entity" "pandax/apps/{{.PackageName}}/services" diff --git a/resource/template/go/service.template b/resource/template/go/service.template index 3113f13..3a82e33 100644 --- a/resource/template/go/service.template +++ b/resource/template/go/service.template @@ -8,7 +8,7 @@ package services import ( "pandax/apps/{{.PackageName}}/entity" - "github.com/XM-GO/PandaKit/biz" + "github.com/PandaXGO/PandaKit/biz" "pandax/pkg/global" ) diff --git a/shutdown.bat b/shutdown.bat index 54b60e7..2807d7f 100644 --- a/shutdown.bat +++ b/shutdown.bat @@ -1 +1 @@ -taskkill /pid 25952 -t -f \ No newline at end of file +taskkill /pid 31288 -t -f \ No newline at end of file