diff --git a/README.md b/README.md
index 5de0d3e..b7aaec3 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
* 成熟的规则引擎: 项目针对数据处理使用了规则链进行处理,简化开发及配置。
* 前端采用VUE3.0+ TypeScript + vite3 + Element-plus:[PandaUI](https://gitee.com/XM-GO/PandaUi),适配手机、平板、pc 内置多种ui功能减少开发量
* 高效率的开发,使用代码生成器可以一键生成前后端代码,可在线预览代码,减少代码开发量。。
-* 完善的权限认证系统:完善的权限认证系统,包含,菜单按钮权限,api权限,部门权限。
+* 完善的权限认证系统:完善的权限认证系统,包含,菜单按钮权限,api权限,组织权限。
* 多数据库:项目同时支持MySQL,PostgreSql等数据库根据自身需求更改。
## 🏭在线体验
@@ -49,7 +49,7 @@
## ⚡ 内置功能
- ✔ **`用户管理`** - _用户是系统操作者,该功能主要完成系统用户配置。._
-- ✔ **`部门管理`** - _配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。_
+- ✔ **`组织管理`** - _配置系统组织机构(公司、组织、小组),树结构展现支持数据权限。_
- ✔ **`岗位管理`** - _配置系统用户所属担任职务。_
- ✔ **`菜单管理`** - _配置系统菜单,操作权限,按钮权限标识等。_
- ✔ **`角色管理`** - _角色菜单,API权限分配、设置角色按机构进行数据范围权限划分。_
diff --git a/apps/develop/api/table.go b/apps/develop/api/table.go
index 2fb09b7..800cc83 100644
--- a/apps/develop/api/table.go
+++ b/apps/develop/api/table.go
@@ -18,39 +18,44 @@ type GenTableApi struct {
// GetDBTableList 分页列表数据 / page list data
func (g *GenTableApi) GetDBTableList(rc *restfulx.ReqCtx) {
+ dbt := entity.DBTables{}
pageNum := restfulx.QueryInt(rc, "pageNum", 1)
pageSize := restfulx.QueryInt(rc, "pageSize", 10)
- tableName := restfulx.QueryParam(rc, "tableName")
+ dbt.TableName = restfulx.QueryParam(rc, "tableName")
- list, total := g.GenTableApp.FindDbTablesListPage(pageNum, pageSize, entity.DBTables{TableName: tableName})
+ list, total := g.GenTableApp.FindDbTablesListPage(pageNum, pageSize, dbt)
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
// GetTablePage 分页列表数据
func (g *GenTableApi) GetTablePage(rc *restfulx.ReqCtx) {
+ dgt := entity.DevGenTable{}
pageNum := restfulx.QueryInt(rc, "pageNum", 1)
pageSize := restfulx.QueryInt(rc, "pageSize", 10)
- tableName := restfulx.QueryParam(rc, "tableName")
- tableComment := restfulx.QueryParam(rc, "tableComment")
+ dgt.TableName = restfulx.QueryParam(rc, "tableName")
+ dgt.TableComment = restfulx.QueryParam(rc, "tableComment")
+ dgt.RoleId = rc.LoginAccount.RoleId
- list, total := g.GenTableApp.FindListPage(pageNum, pageSize, entity.DevGenTable{TableName: tableName, TableComment: tableComment})
+ list, total := g.GenTableApp.FindListPage(pageNum, pageSize, dgt)
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
// GetTableInfo 获取表信息
func (g *GenTableApi) GetTableInfo(rc *restfulx.ReqCtx) {
- tableId := restfulx.PathParamInt(rc, "tableId")
- result := g.GenTableApp.FindOne(entity.DevGenTable{TableId: int64(tableId)}, true)
+ dgt := entity.DevGenTable{}
+ dgt.TableId = int64(restfulx.PathParamInt(rc, "tableId"))
+ dgt.RoleId = rc.LoginAccount.RoleId
+ result := g.GenTableApp.FindOne(dgt, true)
rc.ResData = vo.TableInfoVo{
List: result.Columns,
Info: *result,
@@ -59,8 +64,10 @@ func (g *GenTableApi) GetTableInfo(rc *restfulx.ReqCtx) {
// GetTableInfoByName 获取表信息
func (g *GenTableApi) GetTableInfoByName(rc *restfulx.ReqCtx) {
- tableName := restfulx.QueryParam(rc, "tableName")
- result := g.GenTableApp.FindOne(entity.DevGenTable{TableName: tableName}, true)
+ dgt := entity.DevGenTable{}
+ dgt.TableName = restfulx.QueryParam(rc, "tableName")
+ dgt.RoleId = rc.LoginAccount.RoleId
+ result := g.GenTableApp.FindOne(dgt, true)
rc.ResData = vo.TableInfoVo{
List: result.Columns,
Info: *result,
@@ -69,7 +76,9 @@ func (g *GenTableApi) GetTableInfoByName(rc *restfulx.ReqCtx) {
// GetTableTree 获取树表信息
func (g *GenTableApi) GetTableTree(rc *restfulx.ReqCtx) {
- rc.ResData = g.GenTableApp.FindTree(entity.DevGenTable{})
+ dgt := entity.DevGenTable{}
+ dgt.RoleId = rc.LoginAccount.RoleId
+ rc.ResData = g.GenTableApp.FindTree(dgt)
}
// Insert 添加表结构
@@ -82,6 +91,7 @@ func (g *GenTableApi) Insert(rc *restfulx.ReqCtx) {
wg.Add(1)
go func(wg *sync.WaitGroup, index int) {
genTable := gen.ToolsGenTableColumn.GenTableInit(tablesList[index])
+ genTable.OrgId = rc.LoginAccount.OrganizationId
g.GenTableApp.Insert(genTable)
wg.Done()
}(&wg, index)
diff --git a/apps/develop/entity/dev_gen_table.go b/apps/develop/entity/dev_gen_table.go
index 2a61572..d24ee3d 100644
--- a/apps/develop/entity/dev_gen_table.go
+++ b/apps/develop/entity/dev_gen_table.go
@@ -4,22 +4,25 @@ import "github.com/PandaXGO/PandaKit/model"
type DevGenTable struct {
TableId int64 `gorm:"primaryKey;autoIncrement" json:"tableId"` // 编号
- TableName string `gorm:"table_name" json:"tableName"` // 表名称
- TableComment string `gorm:"table_comment" json:"tableComment"` // 表描述
- ClassName string `gorm:"class_name" json:"className"` // 实体类名称
- TplCategory string `gorm:"tpl_category" json:"tplCategory"` // 使用的模板(crud单表操作 tree树表操作)
- PackageName string `gorm:"package_name" json:"packageName"` // 生成包路径
- ModuleName string `gorm:"module_name" json:"moduleName"` // 生成模块名
- BusinessName string `gorm:"business_name" json:"businessName"` // 生成业务名
- FunctionName string `gorm:"function_name" json:"functionName"` // 生成功能名
- FunctionAuthor string `gorm:"function_author" json:"functionAuthor"` // 生成功能作者
- Options string `gorm:"options" json:"options"` // 其它生成选项
- Remark string `gorm:"remark" json:"remark"` // 备注
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
+ TableName string `gorm:"table_name" json:"tableName"` // 表名称
+ TableComment string `gorm:"table_comment" json:"tableComment"` // 表描述
+ ClassName string `gorm:"class_name" json:"className"` // 实体类名称
+ TplCategory string `gorm:"tpl_category" json:"tplCategory"` // 使用的模板(crud单表操作 tree树表操作)
+ PackageName string `gorm:"package_name" json:"packageName"` // 生成包路径
+ ModuleName string `gorm:"module_name" json:"moduleName"` // 生成模块名
+ BusinessName string `gorm:"business_name" json:"businessName"` // 生成业务名
+ FunctionName string `gorm:"function_name" json:"functionName"` // 生成功能名
+ FunctionAuthor string `gorm:"function_author" json:"functionAuthor"` // 生成功能作者
+ Options string `gorm:"options" json:"options"` // 其它生成选项
+ Remark string `gorm:"remark" json:"remark"` // 备注
PkColumn string `gorm:"pk_column;" json:"pkColumn"`
PkGoField string `gorm:"pk_go_field" json:"pkGoField"`
PkJsonField string `gorm:"pk_json_field" json:"pkJsonField"`
Columns []DevGenTableColumn `gorm:"-" json:"columns"` // 字段信息
model.BaseModel
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type DBTables struct {
diff --git a/apps/develop/entity/dev_gen_table_column.go b/apps/develop/entity/dev_gen_table_column.go
index b3542a9..3cfd40a 100644
--- a/apps/develop/entity/dev_gen_table_column.go
+++ b/apps/develop/entity/dev_gen_table_column.go
@@ -2,7 +2,8 @@ package entity
type DevGenTableColumn struct {
ColumnId int64 `gorm:"primaryKey;autoIncrement" json:"columnId"` // 编号
- TableId int64 `gorm:"table_id" json:"tableId"` // 归属表编号
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
+ TableId int64 `gorm:"table_id" json:"tableId"` // 归属表编号
TableName string `gorm:"table_name" json:"tableName"`
ColumnName string `gorm:"column_name" json:"columnName"` // 列名称
ColumnComment string `gorm:"column_comment" json:"columnComment"` // 列描述
@@ -28,6 +29,8 @@ type DevGenTableColumn struct {
LinkTablePackage string `gorm:"link_table_package" json:"linkTablePackage"` // 关联表包名
LinkLabelId string `gorm:"link_label_id" json:"linkLabelId"` // 关联表键名
LinkLabelName string `gorm:"link_label_name" json:"linkLabelName"` // 关联表字段值
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type DBColumns struct {
diff --git a/apps/develop/services/gen_table.go b/apps/develop/services/gen_table.go
index dc0f24b..1d6e040 100644
--- a/apps/develop/services/gen_table.go
+++ b/apps/develop/services/gen_table.go
@@ -6,6 +6,7 @@ import (
"github.com/PandaXGO/PandaKit/utils"
"pandax/apps/develop/entity"
"pandax/pkg/global"
+ "pandax/pkg/tool"
)
/**
@@ -94,7 +95,9 @@ func (m *devGenTableModelImpl) Insert(dgt entity.DevGenTable) {
biz.ErrIsNil(err, "新增生成代码表失败")
for i := 0; i < len(dgt.Columns); i++ {
dgt.Columns[i].TableId = dgt.TableId
- DevTableColumnModelDao.Insert(dgt.Columns[i])
+ columns := dgt.Columns[i]
+ columns.OrgId = dgt.OrgId
+ DevTableColumnModelDao.Insert(columns)
}
}
@@ -130,11 +133,14 @@ func (m *devGenTableModelImpl) FindTree(data entity.DevGenTable) *[]entity.DevGe
if data.TableComment != "" {
db = db.Where("table_comment = ?", data.TableComment)
}
+ // 组织数据访问权限
+ tool.OrgAuthSet(db, data.RoleId)
err := db.Find(&resData).Error
biz.ErrIsNil(err, "获取TableTree失败")
for i := 0; i < len(resData); i++ {
var col entity.DevGenTableColumn
col.TableId = resData[i].TableId
+ col.RoleId = data.RoleId
columns := DevTableColumnModelDao.FindList(col, false)
resData[i].Columns = *columns
}
@@ -154,6 +160,8 @@ func (m *devGenTableModelImpl) FindListPage(page, pageSize int, data entity.DevG
if data.TableComment != "" {
db = db.Where("table_comment = ?", data.TableComment)
}
+ // 组织数据访问权限
+ tool.OrgAuthSet(db, data.RoleId)
db.Where("delete_time IS NULL")
err := db.Count(&total).Error
err = db.Limit(pageSize).Offset(offset).Find(&list).Error
diff --git a/apps/device/api/device.go b/apps/device/api/device.go
index 2681d9c..de4a48f 100644
--- a/apps/device/api/device.go
+++ b/apps/device/api/device.go
@@ -39,13 +39,14 @@ func (p *DeviceApi) GetDeviceList(rc *restfulx.ReqCtx) {
data.DeviceType = restfulx.QueryParam(rc, "deviceType")
data.ParentId = restfulx.QueryParam(rc, "parentId")
data.LinkStatus = restfulx.QueryParam(rc, "linkStatus")
-
+ // 权限检查
+ data.RoleId = rc.LoginAccount.RoleId
list, total := p.DeviceApp.FindListPage(pageNum, pageSize, data)
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -135,6 +136,7 @@ func (p *DeviceApi) InsertDevice(rc *restfulx.ReqCtx) {
biz.IsTrue(!(list != nil && len(*list) > 0), fmt.Sprintf("名称%s已存在,设置其他命名", data.Name))
data.Id = kgo.KStr.Uniqid("d_")
data.Owner = rc.LoginAccount.UserName
+ data.OrgId = rc.LoginAccount.OrganizationId
data.LinkStatus = global.INACTIVE
data.LastAt = time.Now()
p.DeviceApp.Insert(data)
diff --git a/apps/device/api/device_alarm.go b/apps/device/api/device_alarm.go
index 9da0be7..02235db 100644
--- a/apps/device/api/device_alarm.go
+++ b/apps/device/api/device_alarm.go
@@ -31,7 +31,7 @@ func (p *DeviceAlarmApi) GetDeviceAlarmList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/device/api/device_cmd.go b/apps/device/api/device_cmd.go
index ad2f289..e891488 100644
--- a/apps/device/api/device_cmd.go
+++ b/apps/device/api/device_cmd.go
@@ -33,7 +33,7 @@ func (p *DeviceCmdLogApi) GetDeviceCmdLogList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/device/api/device_group.go b/apps/device/api/device_group.go
index d5f62ed..6961af0 100644
--- a/apps/device/api/device_group.go
+++ b/apps/device/api/device_group.go
@@ -60,6 +60,7 @@ func (p *DeviceGroupApi) InsertDeviceGroup(rc *restfulx.ReqCtx) {
restfulx.BindJsonAndValid(rc, &data)
data.Id = kgo.KStr.Uniqid("dg_")
data.Owner = rc.LoginAccount.UserName
+ data.OrgId = rc.LoginAccount.OrganizationId
p.DeviceGroupApp.Insert(data)
}
diff --git a/apps/device/api/product.go b/apps/device/api/product.go
index c39d65e..861f1c9 100644
--- a/apps/device/api/product.go
+++ b/apps/device/api/product.go
@@ -40,7 +40,7 @@ func (p *ProductApi) GetProductList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -68,6 +68,7 @@ func (p *ProductApi) InsertProduct(rc *restfulx.ReqCtx) {
restfulx.BindJsonAndValid(rc, &data)
data.Id = kgo.KStr.Uniqid("p_")
data.Owner = rc.LoginAccount.UserName
+ data.OrgId = rc.LoginAccount.OrganizationId
p.ProductApp.Insert(data)
}
diff --git a/apps/device/api/product_category.go b/apps/device/api/product_category.go
index bdbb1a4..21436e8 100644
--- a/apps/device/api/product_category.go
+++ b/apps/device/api/product_category.go
@@ -61,6 +61,7 @@ func (p *ProductCategoryApi) InsertProductCategory(rc *restfulx.ReqCtx) {
restfulx.BindJsonAndValid(rc, &data)
data.Id = kgo.KStr.Uniqid("pc_")
data.Owner = rc.LoginAccount.UserName
+ data.OrgId = rc.LoginAccount.OrganizationId
p.ProductCategoryApp.Insert(data)
}
diff --git a/apps/device/api/product_ota.go b/apps/device/api/product_ota.go
index 9e32354..b4bccbf 100644
--- a/apps/device/api/product_ota.go
+++ b/apps/device/api/product_ota.go
@@ -28,7 +28,7 @@ func (p *ProductOtaApi) GetProductOtaList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/device/api/product_template.go b/apps/device/api/product_template.go
index b254b85..5412cc1 100644
--- a/apps/device/api/product_template.go
+++ b/apps/device/api/product_template.go
@@ -31,7 +31,7 @@ func (p *ProductTemplateApi) GetProductTemplateList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -57,6 +57,7 @@ func (p *ProductTemplateApi) InsertProductTemplate(rc *restfulx.ReqCtx) {
var data entity.ProductTemplate
restfulx.BindJsonAndValid(rc, &data)
data.Id = kgo.KStr.Uniqid("tm_")
+ data.OrgId = rc.LoginAccount.OrganizationId
p.ProductTemplateApp.Insert(data)
// 向超级表中添加字段
if data.Classify == entity.ATTRIBUTES_TSL {
diff --git a/apps/device/entity/device.go b/apps/device/entity/device.go
index f1099ce..f67d26d 100644
--- a/apps/device/entity/device.go
+++ b/apps/device/entity/device.go
@@ -19,6 +19,8 @@ type DeviceGroup struct {
Status string `gorm:"status;type:varchar(1);comment:状态" json:"status"`
Ext Ext `json:"ext" gorm:"type:json;comment:扩展"` //可扩展的kv map,承载设备组的外围信息
Children []DeviceGroup `json:"children" gorm:"-"` //子节点
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type DeviceGroupLabel struct {
@@ -42,7 +44,10 @@ type Device struct {
LastAt time.Time `gorm:"column:last_time;comment:最后一次在线时间" json:"lastTime"`
OtaVersion string `json:"otaVersion" gorm:"type:varchar(64);comment:固件版本" ` //上一次固件升级的版本
Ext Ext `json:"ext" gorm:"type:json;comment:扩展"` //可扩展的kv map,承载设备组的外围信息
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
+
type DeviceRes struct {
Device
DeviceGroup DeviceGroup `json:"deviceGroup" gorm:"foreignKey:Gid;references:Id"`
diff --git a/apps/device/entity/device_exp.go b/apps/device/entity/device_exp.go
index 1c840c1..3fe3b72 100644
--- a/apps/device/entity/device_exp.go
+++ b/apps/device/entity/device_exp.go
@@ -9,6 +9,7 @@ import "time"
// DeviceAlarm 设备告警表 需要更改告警状态不能存在时序数据库中
type DeviceAlarm struct {
Id string `json:"id" gorm:"primary_key;"`
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
Time time.Time `gorm:"comment:告警时间" json:"time"`
Name string `gorm:"type:varchar(64);comment:告警名称" json:"name"`
DeviceId string `gorm:"type:varchar(64);comment:所属设备" json:"deviceId"`
@@ -17,6 +18,8 @@ type DeviceAlarm struct {
Level string `gorm:"type:varchar(64);comment:告警级别" json:"level"` // 危险 重要 次要 警告 不确定
State string `gorm:"type:varchar(1);comment:告警状态" json:"state"` // 告警中 0 已确认 1 已清除 2 已关闭 3
Details string `gorm:"type:varchar(255);comment:告警详情" json:"details"`
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type DeviceAlarmForm struct {
diff --git a/apps/device/entity/product.go b/apps/device/entity/product.go
index 56429f1..c64c8be 100644
--- a/apps/device/entity/product.go
+++ b/apps/device/entity/product.go
@@ -49,6 +49,8 @@ type Product struct {
SelfLearn bool `json:"selfLearn" gorm:"default:0;comment:自学习开关"`
RuleChainId string `json:"ruleChainId" gorm:"type:varchar(64);comment:规则链Id"` //可空,如果空就走根规则链
Status string `gorm:"status;type:varchar(1);comment:状态" json:"status"`
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type ProductRes struct {
diff --git a/apps/device/services/device.go b/apps/device/services/device.go
index 45ac7fb..e4cf3d7 100644
--- a/apps/device/services/device.go
+++ b/apps/device/services/device.go
@@ -36,6 +36,7 @@ func (m *deviceModelImpl) Insert(data entity.Device) *entity.Device {
biz.IsTrue(list != nil && len(*list) == 0, "设备名称已经存在")
//2 创建认证TOKEN IOTHUB使用
etoken := getDeviceToken(&data)
+ // 子网关不需要设置token
if data.DeviceType != global.GATEWAYS {
data.Token = etoken.Token
}
@@ -56,6 +57,7 @@ func getDeviceToken(data *entity.Device) *tool.DeviceAuth {
now := time.Now()
etoken := &tool.DeviceAuth{
DeviceId: data.Id,
+ OrgId: data.OrgId,
User: data.Owner,
Name: data.Name,
DeviceType: data.DeviceType,
@@ -93,9 +95,6 @@ func (m *deviceModelImpl) FindListPage(page, pageSize int, data entity.Device) (
if data.Gid != "" {
db = db.Where("gid = ?", data.Gid)
}
- if data.OrgId != "" {
- db = db.Where("org_id = ?", data.OrgId)
- }
if data.Name != "" {
db = db.Where("name like ?", "%"+data.Name+"%")
}
@@ -114,6 +113,9 @@ func (m *deviceModelImpl) FindListPage(page, pageSize int, data entity.Device) (
if data.ParentId != "" {
db = db.Where("parent_id = ?", data.ParentId)
}
+ // 组织数据访问权限
+ tool.OrgAuthSet(db, data.RoleId)
+
err := db.Count(&total).Error
err = db.Order("create_time").Preload("Product").Preload("DeviceGroup").Limit(pageSize).Offset(offset).Find(&list).Error
biz.ErrIsNil(err, "查询设备分页列表失败")
@@ -130,9 +132,6 @@ func (m *deviceModelImpl) FindList(data entity.Device) *[]entity.DeviceRes {
if data.Gid != "" {
db = db.Where("gid = ?", data.Gid)
}
- if data.OrgId != "" {
- db = db.Where("org_id = ?", data.OrgId)
- }
if data.Name != "" {
db = db.Where("name like ?", "%"+data.Name+"%")
}
@@ -154,6 +153,7 @@ func (m *deviceModelImpl) FindList(data entity.Device) *[]entity.DeviceRes {
if data.ParentId != "" {
db = db.Where("parent_id = ?", data.ParentId)
}
+ tool.OrgAuthSet(db, data.RoleId)
db.Preload("Product").Preload("DeviceGroup")
biz.ErrIsNil(db.Order("create_time").Find(&list).Error, "查询设备列表失败")
return &list
diff --git a/apps/device/services/device_group.go b/apps/device/services/device_group.go
index af9ccff..f6bfbef 100644
--- a/apps/device/services/device_group.go
+++ b/apps/device/services/device_group.go
@@ -129,20 +129,20 @@ func (m *deviceGroupModelImpl) SelectDeviceGroup(data entity.DeviceGroup) []enti
}
func (m *deviceGroupModelImpl) SelectDeviceGroupLabel(data entity.DeviceGroup) []entity.DeviceGroupLabel {
- deptlist := m.FindList(data)
+ organizationlist := m.FindList(data)
dl := make([]entity.DeviceGroupLabel, 0)
- deptl := *deptlist
- for i := 0; i < len(deptl); i++ {
- if deptl[i].Pid != "0" {
+ organizationl := *organizationlist
+ for i := 0; i < len(organizationl); i++ {
+ if organizationl[i].Pid != "0" {
continue
}
e := entity.DeviceGroupLabel{}
- e.Id = deptl[i].Id
- e.Name = deptl[i].Name
- deptsInfo := DiGuiDeviceGroupLabel(deptlist, e)
+ e.Id = organizationl[i].Id
+ e.Name = organizationl[i].Name
+ organizationsInfo := DiGuiDeviceGroupLabel(organizationlist, e)
- dl = append(dl, deptsInfo)
+ dl = append(dl, organizationsInfo)
}
return dl
}
@@ -170,12 +170,12 @@ func DiGuiDeviceGroup(sglist *[]entity.DeviceGroup, menu entity.DeviceGroup) ent
menu.Children = min
return menu
}
-func DiGuiDeviceGroupLabel(sglist *[]entity.DeviceGroup, dept entity.DeviceGroupLabel) entity.DeviceGroupLabel {
+func DiGuiDeviceGroupLabel(sglist *[]entity.DeviceGroup, organization entity.DeviceGroupLabel) entity.DeviceGroupLabel {
list := *sglist
min := make([]entity.DeviceGroupLabel, 0)
for j := 0; j < len(list); j++ {
- if dept.Id != list[j].Pid {
+ if organization.Id != list[j].Pid {
continue
}
sg := entity.DeviceGroupLabel{list[j].Id, list[j].Name, []entity.DeviceGroupLabel{}}
@@ -183,6 +183,6 @@ func DiGuiDeviceGroupLabel(sglist *[]entity.DeviceGroup, dept entity.DeviceGroup
min = append(min, ms)
}
- dept.Children = min
- return dept
+ organization.Children = min
+ return organization
}
diff --git a/apps/device/services/product.go b/apps/device/services/product.go
index 3da253b..8953e80 100644
--- a/apps/device/services/product.go
+++ b/apps/device/services/product.go
@@ -77,7 +77,7 @@ func (m *productModelImpl) FindListPage(page, pageSize int, data entity.Product)
if data.Name != "" {
db = db.Where("name like ?", "%"+data.Name+"%")
}
- if data.OrgId != "" {
+ if data.OrgId != 0 {
db = db.Where("org_id = ?", data.OrgId)
}
if data.RuleChainId != "" {
@@ -114,7 +114,7 @@ func (m *productModelImpl) FindList(data entity.Product) *[]entity.ProductRes {
if data.Name != "" {
db = db.Where("name like ?", "%"+data.Name+"%")
}
- if data.OrgId != "" {
+ if data.OrgId != 0 {
db = db.Where("org_id = ?", data.OrgId)
}
if data.RuleChainId != "" {
diff --git a/apps/device/services/product_category.go b/apps/device/services/product_category.go
index c1da14c..0236890 100644
--- a/apps/device/services/product_category.go
+++ b/apps/device/services/product_category.go
@@ -132,17 +132,17 @@ func (m *productCategoryModelImpl) SelectProductCategoryLabel(data entity.Produc
list := m.FindList(data)
dl := make([]entity.ProductCategoryLabel, 0)
- deptl := *list
- for i := 0; i < len(deptl); i++ {
- if deptl[i].Pid != "0" {
+ organizationl := *list
+ for i := 0; i < len(organizationl); i++ {
+ if organizationl[i].Pid != "0" {
continue
}
e := entity.ProductCategoryLabel{}
- e.Id = deptl[i].Id
- e.Name = deptl[i].Name
- deptsInfo := DiGuiProductCategoryLabel(list, e)
+ e.Id = organizationl[i].Id
+ e.Name = organizationl[i].Name
+ organizationsInfo := DiGuiProductCategoryLabel(list, e)
- dl = append(dl, deptsInfo)
+ dl = append(dl, organizationsInfo)
}
return dl
}
@@ -170,12 +170,12 @@ func DiGuiProductCategory(sglist *[]entity.ProductCategory, menu entity.ProductC
menu.Children = min
return menu
}
-func DiGuiProductCategoryLabel(sglist *[]entity.ProductCategory, dept entity.ProductCategoryLabel) entity.ProductCategoryLabel {
+func DiGuiProductCategoryLabel(sglist *[]entity.ProductCategory, organization entity.ProductCategoryLabel) entity.ProductCategoryLabel {
list := *sglist
min := make([]entity.ProductCategoryLabel, 0)
for j := 0; j < len(list); j++ {
- if dept.Id != list[j].Pid {
+ if organization.Id != list[j].Pid {
continue
}
sg := entity.ProductCategoryLabel{}
@@ -185,6 +185,6 @@ func DiGuiProductCategoryLabel(sglist *[]entity.ProductCategory, dept entity.Pro
min = append(min, ms)
}
- dept.Children = min
- return dept
+ organization.Children = min
+ return organization
}
diff --git a/apps/job/api/job.go b/apps/job/api/job.go
index 9a17629..0feca3b 100644
--- a/apps/job/api/job.go
+++ b/apps/job/api/job.go
@@ -22,6 +22,7 @@ func (j *JobApi) CreateJob(rc *restfulx.ReqCtx) {
restfulx.BindQuery(rc, &job)
job.Id = kgo.KStr.Uniqid("")
job.Owner = rc.LoginAccount.UserName
+ job.OrgId = rc.LoginAccount.OrganizationId
j.JobApp.Insert(job)
}
@@ -35,7 +36,7 @@ func (j *JobApi) GetJobList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -78,6 +79,7 @@ func (l *JobApi) StartJobForService(rc *restfulx.ReqCtx) {
j.Name = job.JobName
j.Args = job.TargetArgs
j.MisfirePolicy = job.MisfirePolicy
+ j.OrgId = job.OrgId
job.EntryId, err = jobs.AddJob(jobs.Crontab, j)
log.Println(err)
biz.ErrIsNil(err, "添加JOB失败")
diff --git a/apps/job/api/log_job.go b/apps/job/api/log_job.go
index 5c24242..16dba64 100644
--- a/apps/job/api/log_job.go
+++ b/apps/job/api/log_job.go
@@ -23,7 +23,7 @@ func (l *JobLogApi) GetJobLogList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/job/entity/job.go b/apps/job/entity/job.go
index ba52970..e65b2b8 100644
--- a/apps/job/entity/job.go
+++ b/apps/job/entity/job.go
@@ -14,4 +14,6 @@ type SysJob struct {
MisfirePolicy string `json:"misfirePolicy" gorm:"type:varchar(1);"` // 执行策略
Status string `json:"status" gorm:"type:varchar(1);"` // 状态
EntryId int `json:"entryId" gorm:"type:int;"` // job启动时返回的id
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
diff --git a/apps/job/entity/log_job.go b/apps/job/entity/log_job.go
index 462c261..47b9623 100644
--- a/apps/job/entity/log_job.go
+++ b/apps/job/entity/log_job.go
@@ -11,4 +11,6 @@ type JobLog struct {
TargetInvoke string `json:"targetInvoke" gorm:"type:varchar(128);comment:调用方法"`
LogInfo string `json:"logInfo" gorm:"type:varchar(255);comment:日志信息"`
Status string `json:"status" gorm:"type:varchar(1);comment:状态"`
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
diff --git a/apps/job/jobs/jobbase.go b/apps/job/jobs/jobbase.go
index 806d6bf..5c48e5c 100644
--- a/apps/job/jobs/jobbase.go
+++ b/apps/job/jobs/jobbase.go
@@ -37,6 +37,7 @@ type JobCore struct {
InvokeTarget string
Name string
JobId string
+ OrgId int64
EntryId int
CronExpression string // 任务表达式
MisfirePolicy string
@@ -53,6 +54,7 @@ func (e *ExecJob) Run() {
startTime := time.Now()
jobLog := logEntity.JobLog{Name: e.Name, EntryId: e.EntryId, TargetInvoke: e.InvokeTarget, Status: "0"}
jobLog.Id = kgo.KStr.Uniqid("")
+ jobLog.OrgId = e.OrgId
var obj = jobList[e.InvokeTarget]
err := CallExec(obj.(JobsExec), e.Args, e.Content)
diff --git a/apps/log/api/log_login.go b/apps/log/api/log_login.go
index 400f8c9..cd94206 100644
--- a/apps/log/api/log_login.go
+++ b/apps/log/api/log_login.go
@@ -21,7 +21,7 @@ func (l *LogLoginApi) GetLoginLogList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/log/api/log_oper.go b/apps/log/api/log_oper.go
index 903059d..733b17e 100644
--- a/apps/log/api/log_oper.go
+++ b/apps/log/api/log_oper.go
@@ -23,7 +23,7 @@ func (l *LogOperApi) GetOperLogList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/log/entity/log_login.go b/apps/log/entity/log_login.go
index 2f6d7ea..2cf5157 100644
--- a/apps/log/entity/log_login.go
+++ b/apps/log/entity/log_login.go
@@ -20,5 +20,8 @@ type LogLogin struct {
Params string `json:"params" gorm:"-"`
Remark string `json:"remark" gorm:"type:varchar(255);"` //备注
Msg string `json:"msg" gorm:"type:varchar(255);"`
+ OrgId int64 `json:"orgId" gorm:"type:int;"`
model.BaseModel
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
diff --git a/apps/log/entity/log_oper.go b/apps/log/entity/log_oper.go
index fdee662..e61ee9b 100644
--- a/apps/log/entity/log_oper.go
+++ b/apps/log/entity/log_oper.go
@@ -6,6 +6,7 @@ import (
type LogOper struct {
OperId int64 `json:"operId" gorm:"primary_key;AUTO_INCREMENT"` //主键
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
Title string `json:"title" gorm:"type:varchar(128);comment:操作的模块"`
BusinessType string `json:"businessType" gorm:"type:varchar(1);comment:0其它 1新增 2修改 3删除"`
Method string `json:"method" gorm:"type:varchar(255);comment:请求方法"`
@@ -16,4 +17,6 @@ type LogOper struct {
OperParam string `json:"operParam" gorm:"type:varchar(255);comment:请求参数"` //
Status string `json:"status" gorm:"type:varchar(1);comment:0=正常,1=异常"`
model.BaseModel
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
diff --git a/apps/rule/api/rulechain.go b/apps/rule/api/rulechain.go
index b95172b..c46c1da 100644
--- a/apps/rule/api/rulechain.go
+++ b/apps/rule/api/rulechain.go
@@ -40,7 +40,7 @@ func (p *RuleChainApi) GetRuleChainList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -64,6 +64,7 @@ func (p *RuleChainApi) InsertRuleChain(rc *restfulx.ReqCtx) {
restfulx.BindJsonAndValid(rc, &data)
data.Id = kgo.KStr.Uniqid("rule_")
data.Owner = rc.LoginAccount.UserName
+ data.OrgId = rc.LoginAccount.OrganizationId
p.RuleChainApp.Insert(data)
}
diff --git a/apps/rule/api/rulechain_log.go b/apps/rule/api/rulechain_log.go
index e25184c..674f6ec 100644
--- a/apps/rule/api/rulechain_log.go
+++ b/apps/rule/api/rulechain_log.go
@@ -28,7 +28,7 @@ func (p *RuleChainMsgLogApi) GetRuleChainMsgLogList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/rule/entity/rulechain.go b/apps/rule/entity/rulechain.go
index d643975..ba75040 100644
--- a/apps/rule/entity/rulechain.go
+++ b/apps/rule/entity/rulechain.go
@@ -17,6 +17,8 @@ type RuleChainBase struct {
RuleName string `gorm:"ruleName;type:varchar(50);comment:名称" json:"ruleName"`
RuleBase64 string `gorm:"ruleBase64;type:longtext;comment:Base64缩略图" json:"ruleBase64"` //缩略图 base64
RuleRemark string `gorm:"ruleRemark;type:varchar(256);comment:说明" json:"ruleRemark"`
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
type RuleChain struct {
@@ -30,12 +32,15 @@ func (RuleChain) TableName() string {
type RuleChainMsgLog struct {
MessageId string `gorm:"message_id;type:varchar(64);comment:消息Id" json:"messageId"`
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
MsgType string `gorm:"msg_type;type:varchar(64);comment:消息类型" json:"msgType"`
DeviceId string `gorm:"device_id;type:varchar(64);comment:设备ID" json:"deviceId"`
DeviceName string `gorm:"device_name;type:varchar(255);comment:设备名称" json:"deviceName"`
Ts time.Time `gorm:"ts;type:varchar(64);comment:时间" json:"ts"`
Content string `gorm:"content;type:varchar(1024);comment:内容" json:"content"`
CreatedAt time.Time `gorm:"column:create_at" json:"create_at"` // 创建时间
+
+ RoleId int64 `gorm:"-"` // 角色数据权限
}
func (RuleChainMsgLog) TableName() string {
diff --git a/apps/system/api/api.go b/apps/system/api/api.go
index f2b8bc7..b96b005 100644
--- a/apps/system/api/api.go
+++ b/apps/system/api/api.go
@@ -37,7 +37,7 @@ func (s *SystemApiApi) GetApiList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/config.go b/apps/system/api/config.go
index 9f5878f..24cc8be 100644
--- a/apps/system/api/config.go
+++ b/apps/system/api/config.go
@@ -25,7 +25,7 @@ func (p *ConfigApi) GetConfigList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/dept.go b/apps/system/api/dept.go
deleted file mode 100644
index befa3f7..0000000
--- a/apps/system/api/dept.go
+++ /dev/null
@@ -1,105 +0,0 @@
-package api
-
-import (
- "errors"
- "fmt"
- "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"
- "pandax/pkg/global"
-)
-
-type DeptApi struct {
- DeptApp services.SysDeptModel
- UserApp services.SysUserModel
- RoleApp services.SysRoleModel
-}
-
-func (m *DeptApi) GetDeptTreeRoleSelect(rc *restfulx.ReqCtx) {
- roleId := restfulx.PathParamInt(rc, "roleId")
- var dept entity.SysDept
- result := m.DeptApp.SelectDeptLable(dept)
-
- deptIds := make([]int64, 0)
- if roleId != 0 {
- deptIds = m.RoleApp.GetRoleDeptId(entity.SysRole{RoleId: int64(roleId)})
- }
- rc.ResData = vo.DeptTreeVo{
- Depts: result,
- CheckedKeys: deptIds,
- }
-}
-
-func (a *DeptApi) GetDeptList(rc *restfulx.ReqCtx) {
- //pageNum := restfulx.QueryInt(rc.GinCtx, "pageNum", 1)
- //pageSize := restfulx.QueryInt(rc.GinCtx, "pageSize", 10)
- deptName := restfulx.QueryParam(rc, "deptName")
- status := restfulx.QueryParam(rc, "status")
- deptId := restfulx.QueryInt(rc, "deptId", 0)
- dept := entity.SysDept{DeptName: deptName, Status: status, DeptId: int64(deptId)}
-
- if dept.DeptName == "" {
- rc.ResData = a.DeptApp.SelectDept(dept)
- } else {
- rc.ResData = a.DeptApp.FindList(dept)
- }
-}
-
-func (a *DeptApi) GetOrdinaryDeptList(rc *restfulx.ReqCtx) {
- var dept entity.SysDept
-
- rc.ResData = a.DeptApp.FindList(dept)
-}
-
-func (a *DeptApi) GetDeptTree(rc *restfulx.ReqCtx) {
- deptName := restfulx.QueryParam(rc, "deptName")
- status := restfulx.QueryParam(rc, "status")
- deptId := restfulx.QueryInt(rc, "deptId", 0)
- dept := entity.SysDept{DeptName: deptName, Status: status, DeptId: int64(deptId)}
-
- rc.ResData = a.DeptApp.SelectDept(dept)
-}
-
-func (a *DeptApi) GetDept(rc *restfulx.ReqCtx) {
- deptId := restfulx.PathParamInt(rc, "deptId")
- rc.ResData = a.DeptApp.FindOne(int64(deptId))
-}
-
-func (a *DeptApi) InsertDept(rc *restfulx.ReqCtx) {
- var dept entity.SysDept
- restfulx.BindJsonAndValid(rc, &dept)
- dept.CreateBy = rc.LoginAccount.UserName
- a.DeptApp.Insert(dept)
-}
-
-func (a *DeptApi) UpdateDept(rc *restfulx.ReqCtx) {
- var dept entity.SysDept
- restfulx.BindJsonAndValid(rc, &dept)
-
- dept.UpdateBy = rc.LoginAccount.UserName
- a.DeptApp.Update(dept)
-}
-
-func (a *DeptApi) DeleteDept(rc *restfulx.ReqCtx) {
- deptId := restfulx.PathParam(rc, "deptId")
- deptIds := utils.IdsStrToIdsIntGroup(deptId)
-
- deList := make([]int64, 0)
- for _, id := range deptIds {
- user := entity.SysUser{}
- user.DeptId = id
- list := a.UserApp.FindList(user)
- if len(*list) == 0 {
- deList = append(deList, id)
- } else {
- global.Log.Info(fmt.Sprintf("dictId: %d 存在用户绑定无法删除", id))
- }
- }
- if len(deList) == 0 {
- biz.ErrIsNil(errors.New("所有部门都已绑定用户无法删除"), "所有部门都已绑定用户,无法删除")
- }
- a.DeptApp.Delete(deList)
-}
diff --git a/apps/system/api/dict.go b/apps/system/api/dict.go
index d74fefd..84d44d9 100644
--- a/apps/system/api/dict.go
+++ b/apps/system/api/dict.go
@@ -27,7 +27,7 @@ func (p *DictApi) GetDictTypeList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/form/user.go b/apps/system/api/form/user.go
index 7d3023b..d8b41d4 100644
--- a/apps/system/api/form/user.go
+++ b/apps/system/api/form/user.go
@@ -25,10 +25,10 @@ type ChangePasswordStruct struct {
}
type UserSearch struct {
- Username string `json:"username"` // 用户UUID
- NickName string `json:"nickName"` // 角色ID
- Status int64 `json:"status"` // 角色ID
- Phone string `json:"phone"` // 角色ID
- PostId int64 `json:"postId"` // 角色ID
- DeptId int64 `json:"deptId"` // 角色ID
+ Username string `json:"username"` // 用户UUID
+ NickName string `json:"nickName"` // 角色ID
+ Status int64 `json:"status"` // 角色ID
+ Phone string `json:"phone"` // 角色ID
+ PostId int64 `json:"postId"` // 角色ID
+ OrganizationId int64 `json:"organizationId"` // 角色ID
}
diff --git a/apps/system/api/menu.go b/apps/system/api/menu.go
index e65e46f..fc90a53 100644
--- a/apps/system/api/menu.go
+++ b/apps/system/api/menu.go
@@ -10,8 +10,8 @@ import (
)
type MenuApi struct {
- MenuApp services.SysMenuModel
- DeptApp services.SysDeptModel
+ MenuApp services.SysMenuModel
+ OrganizationApp services.SysOrganizationModel
RoleMenuApp services.SysRoleMenuModel
RoleApp services.SysRoleModel
diff --git a/apps/system/api/notice.go b/apps/system/api/notice.go
index de1f1fa..7a0a6d9 100644
--- a/apps/system/api/notice.go
+++ b/apps/system/api/notice.go
@@ -10,8 +10,8 @@ import (
)
type NoticeApi struct {
- DeptApp services.SysDeptModel
- NoticeApp services.SysNoticeModel
+ OrganizationApp services.SysOrganizationModel
+ NoticeApp services.SysNoticeModel
}
// GetNoticeList 通知列表数据
@@ -21,18 +21,18 @@ func (p *NoticeApi) GetNoticeList(rc *restfulx.ReqCtx) {
noticeType := restfulx.QueryParam(rc, "noticeType")
title := restfulx.QueryParam(rc, "title")
- // 获取部门的子部门id
- one := p.DeptApp.FindOne(rc.LoginAccount.DeptId)
- split := strings.Split(strings.Trim(one.DeptPath, "/"), "/")
- // 获取所有父部门id
- ids := utils.DeptPCIds(split, rc.LoginAccount.DeptId, true)
- notice := entity.SysNotice{NoticeType: noticeType, Title: title, DeptIds: ids}
+ // 获取组织的子组织id
+ one := p.OrganizationApp.FindOne(rc.LoginAccount.OrganizationId)
+ split := strings.Split(strings.Trim(one.OrganizationPath, "/"), "/")
+ // 获取所有父组织id
+ ids := utils.OrganizationPCIds(split, rc.LoginAccount.OrganizationId, true)
+ notice := entity.SysNotice{NoticeType: noticeType, Title: title, OrganizationIds: ids}
list, total := p.NoticeApp.FindListPage(pageNum, pageSize, notice)
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/organization.go b/apps/system/api/organization.go
new file mode 100644
index 0000000..be6aafb
--- /dev/null
+++ b/apps/system/api/organization.go
@@ -0,0 +1,105 @@
+package api
+
+import (
+ "errors"
+ "fmt"
+ "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"
+ "pandax/pkg/global"
+)
+
+type OrganizationApi struct {
+ OrganizationApp services.SysOrganizationModel
+ UserApp services.SysUserModel
+ RoleApp services.SysRoleModel
+}
+
+func (m *OrganizationApi) GetOrganizationTreeRoleSelect(rc *restfulx.ReqCtx) {
+ roleId := restfulx.PathParamInt(rc, "roleId")
+ var organization entity.SysOrganization
+ result := m.OrganizationApp.SelectOrganizationLable(organization)
+
+ organizationIds := make([]int64, 0)
+ if roleId != 0 {
+ organizationIds = m.RoleApp.GetRoleOrganizationId(entity.SysRole{RoleId: int64(roleId)})
+ }
+ rc.ResData = vo.OrganizationTreeVo{
+ Organizations: result,
+ CheckedKeys: organizationIds,
+ }
+}
+
+func (a *OrganizationApi) GetOrganizationList(rc *restfulx.ReqCtx) {
+ //pageNum := restfulx.QueryInt(rc.GinCtx, "pageNum", 1)
+ //pageSize := restfulx.QueryInt(rc.GinCtx, "pageSize", 10)
+ organizationName := restfulx.QueryParam(rc, "organizationName")
+ status := restfulx.QueryParam(rc, "status")
+ organizationId := restfulx.QueryInt(rc, "organizationId", 0)
+ organization := entity.SysOrganization{OrganizationName: organizationName, Status: status, OrganizationId: int64(organizationId)}
+
+ if organization.OrganizationName == "" {
+ rc.ResData = a.OrganizationApp.SelectOrganization(organization)
+ } else {
+ rc.ResData = a.OrganizationApp.FindList(organization)
+ }
+}
+
+func (a *OrganizationApi) GetOrdinaryOrganizationList(rc *restfulx.ReqCtx) {
+ var organization entity.SysOrganization
+
+ rc.ResData = a.OrganizationApp.FindList(organization)
+}
+
+func (a *OrganizationApi) GetOrganizationTree(rc *restfulx.ReqCtx) {
+ organizationName := restfulx.QueryParam(rc, "organizationName")
+ status := restfulx.QueryParam(rc, "status")
+ organizationId := restfulx.QueryInt(rc, "organizationId", 0)
+ organization := entity.SysOrganization{OrganizationName: organizationName, Status: status, OrganizationId: int64(organizationId)}
+
+ rc.ResData = a.OrganizationApp.SelectOrganization(organization)
+}
+
+func (a *OrganizationApi) GetOrganization(rc *restfulx.ReqCtx) {
+ organizationId := restfulx.PathParamInt(rc, "organizationId")
+ rc.ResData = a.OrganizationApp.FindOne(int64(organizationId))
+}
+
+func (a *OrganizationApi) InsertOrganization(rc *restfulx.ReqCtx) {
+ var organization entity.SysOrganization
+ restfulx.BindJsonAndValid(rc, &organization)
+ organization.CreateBy = rc.LoginAccount.UserName
+ a.OrganizationApp.Insert(organization)
+}
+
+func (a *OrganizationApi) UpdateOrganization(rc *restfulx.ReqCtx) {
+ var organization entity.SysOrganization
+ restfulx.BindJsonAndValid(rc, &organization)
+
+ organization.UpdateBy = rc.LoginAccount.UserName
+ a.OrganizationApp.Update(organization)
+}
+
+func (a *OrganizationApi) DeleteOrganization(rc *restfulx.ReqCtx) {
+ organizationId := restfulx.PathParam(rc, "organizationId")
+ organizationIds := utils.IdsStrToIdsIntGroup(organizationId)
+
+ deList := make([]int64, 0)
+ for _, id := range organizationIds {
+ user := entity.SysUser{}
+ user.OrganizationId = id
+ list := a.UserApp.FindList(user)
+ if len(*list) == 0 {
+ deList = append(deList, id)
+ } else {
+ global.Log.Info(fmt.Sprintf("dictId: %d 存在用户绑定无法删除", id))
+ }
+ }
+ if len(deList) == 0 {
+ biz.ErrIsNil(errors.New("所有组织都已绑定用户无法删除"), "所有组织都已绑定用户,无法删除")
+ }
+ a.OrganizationApp.Delete(deList)
+}
diff --git a/apps/system/api/post.go b/apps/system/api/post.go
index 0e289a5..eacf3ba 100644
--- a/apps/system/api/post.go
+++ b/apps/system/api/post.go
@@ -33,7 +33,7 @@ func (p *PostApi) GetPostList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/role.go b/apps/system/api/role.go
index fc02fb6..306baab 100644
--- a/apps/system/api/role.go
+++ b/apps/system/api/role.go
@@ -14,10 +14,11 @@ import (
)
type RoleApi struct {
- RoleApp services.SysRoleModel
- UserApp services.SysUserModel
- RoleMenuApp services.SysRoleMenuModel
- RoleDeptApp services.SysRoleDeptModel
+ RoleApp services.SysRoleModel
+ UserApp services.SysUserModel
+ RoleMenuApp services.SysRoleMenuModel
+ OrganizationApp services.SysOrganizationModel
+ RoleOrganizationApp services.SysRoleOrganizationModel
}
// GetRoleList角色列表数据
@@ -33,7 +34,7 @@ func (r *RoleApi) GetRoleList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -52,6 +53,10 @@ func (r *RoleApi) InsertRole(rc *restfulx.ReqCtx) {
var role entity.SysRole
restfulx.BindJsonAndValid(rc, &role)
role.CreateBy = rc.LoginAccount.UserName
+ if role.DataScope == "" {
+ role.DataScope = "0"
+ }
+ // 添加角色对应的菜单
insert := r.RoleApp.Insert(role)
role.RoleId = insert.RoleId
r.RoleMenuApp.Insert(insert.RoleId, role.MenuIds)
@@ -85,19 +90,38 @@ func (r *RoleApi) UpdateRoleStatus(rc *restfulx.ReqCtx) {
r.RoleApp.Update(role)
}
-// UpdateRoleDataScope 修改用户角色部门
+// UpdateRoleDataScope 修改用户角色组织
func (r *RoleApi) UpdateRoleDataScope(rc *restfulx.ReqCtx) {
var role entity.SysRole
restfulx.BindJsonAndValid(rc, &role)
role.UpdateBy = rc.LoginAccount.UserName
// 修改角色
update := r.RoleApp.Update(role)
- if role.DataScope == "2" {
- // 删除角色的部门绑定
- r.RoleDeptApp.Delete(entity.SysRoleDept{RoleId: update.RoleId})
- // 添加角色部门绑定
- r.RoleDeptApp.Insert(role.RoleId, role.DeptIds)
- }
+ go func() {
+ if role.DataScope != entity.SELFDATASCOPE {
+ organizationIds := make([]int64, 0)
+ if role.DataScope == entity.ALLDATASCOPE {
+ for _, organization := range *r.OrganizationApp.FindList(entity.SysOrganization{}) {
+ organizationIds = append(organizationIds, organization.OrganizationId)
+ }
+ }
+ if role.DataScope == entity.DIYDATASCOPE {
+ organizationIds = role.OrganizationIds
+ }
+ if role.DataScope == entity.ORGDATASCOPE {
+ organizationIds = append(organizationIds, rc.LoginAccount.OrganizationId)
+ }
+ if role.DataScope == entity.ORGALLDATASCOPE {
+ //organizationIds = append(organizationIds, rc.LoginAccount.OrganizationId)
+ organizationIds = r.OrganizationApp.SelectOrganizationIds(entity.SysOrganization{OrganizationId: rc.LoginAccount.OrganizationId})
+ }
+ // 删除角色的组织绑定
+ r.RoleOrganizationApp.Delete(entity.SysRoleOrganization{RoleId: update.RoleId})
+ // 添加角色组织绑定
+ r.RoleOrganizationApp.Insert(role.RoleId, organizationIds)
+ }
+ }()
+
}
// DeleteRole 删除用户角色
diff --git a/apps/system/api/tenant.go b/apps/system/api/tenant.go
index 19e1d20..fc125e8 100644
--- a/apps/system/api/tenant.go
+++ b/apps/system/api/tenant.go
@@ -27,7 +27,7 @@ func (p *SysTenantsApi) GetSysTenantsList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/apps/system/api/user.go b/apps/system/api/user.go
index e6f30fa..a7c84ad 100644
--- a/apps/system/api/user.go
+++ b/apps/system/api/user.go
@@ -28,13 +28,13 @@ import (
)
type UserApi struct {
- UserApp services.SysUserModel
- MenuApp services.SysMenuModel
- PostApp services.SysPostModel
- RoleApp services.SysRoleModel
- RoleMenuApp services.SysRoleMenuModel
- DeptApp services.SysDeptModel
- LogLogin logServices.LogLoginModel
+ UserApp services.SysUserModel
+ MenuApp services.SysMenuModel
+ PostApp services.SysPostModel
+ RoleApp services.SysRoleModel
+ RoleMenuApp services.SysRoleMenuModel
+ OrganizationApp services.SysOrganizationModel
+ LogLogin logServices.LogLoginModel
}
// GenerateCaptcha 获取验证码
@@ -66,12 +66,12 @@ func (u *UserApi) Login(rc *restfulx.ReqCtx) {
role := u.RoleApp.FindOne(login.RoleId)
j := token.NewJWT("", []byte(global.Conf.Jwt.Key), jwt.SigningMethodHS256)
token, err := j.CreateToken(token.Claims{
- UserId: login.UserId,
- UserName: login.Username,
- RoleId: login.RoleId,
- RoleKey: role.RoleKey,
- DeptId: login.DeptId,
- PostId: login.PostId,
+ UserId: login.UserId,
+ UserName: login.Username,
+ RoleId: login.RoleId,
+ RoleKey: role.RoleKey,
+ OrganizationId: login.OrganizationId,
+ PostId: login.PostId,
StandardClaims: jwt.StandardClaims{
NotBefore: time.Now().Unix() - 1000, // 签名生效时间
ExpiresAt: time.Now().Unix() + global.Conf.Jwt.ExpireTime, // 过期时间 7天 配置文件
@@ -90,6 +90,7 @@ func (u *UserApi) Login(rc *restfulx.ReqCtx) {
loginLog.Ipaddr = rc.Request.Request.RemoteAddr
loginLog.LoginLocation = utils.GetRealAddressByIP(rc.Request.Request.RemoteAddr)
loginLog.LoginTime = time.Now()
+ loginLog.OrgId = login.OrganizationId
loginLog.Status = "0"
loginLog.Remark = rc.Request.Request.UserAgent()
browserName, browserVersion := ua.Browser()
@@ -130,6 +131,7 @@ func (u *UserApi) LogOut(rc *restfulx.ReqCtx) {
loginLog.Ipaddr = rc.Request.Request.RemoteAddr
loginLog.LoginTime = time.Now()
loginLog.Status = "0"
+ loginLog.OrgId = rc.LoginAccount.OrganizationId
loginLog.Remark = rc.Request.Request.UserAgent()
browserName, browserVersion := ua.Browser()
loginLog.Browser = browserName + " " + browserVersion
@@ -148,19 +150,19 @@ func (u *UserApi) GetSysUserList(rc *restfulx.ReqCtx) {
username := restfulx.QueryParam(rc, "username")
phone := restfulx.QueryParam(rc, "phone")
- deptId := restfulx.QueryInt(rc, "deptId", 0)
+ organizationId := restfulx.QueryInt(rc, "organizationId", 0)
var user entity.SysUser
user.Status = status
user.Username = username
user.Phone = phone
- user.DeptId = int64(deptId)
+ user.OrganizationId = int64(organizationId)
list, total := u.UserApp.FindListPage(pageNum, pageSize, user)
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
@@ -176,8 +178,8 @@ func (u *UserApi) GetSysUserProfile(rc *restfulx.ReqCtx) {
roleList := u.RoleApp.FindList(entity.SysRole{RoleId: rc.LoginAccount.RoleId})
//岗位列表
postList := u.PostApp.FindList(entity.SysPost{PostId: rc.LoginAccount.PostId})
- //获取部门列表
- deptList := u.DeptApp.FindList(entity.SysDept{DeptId: rc.LoginAccount.DeptId})
+ //获取组织列表
+ organizationList := u.OrganizationApp.FindList(entity.SysOrganization{OrganizationId: rc.LoginAccount.OrganizationId})
postIds := make([]int64, 0)
postIds = append(postIds, rc.LoginAccount.PostId)
@@ -186,12 +188,12 @@ func (u *UserApi) GetSysUserProfile(rc *restfulx.ReqCtx) {
roleIds = append(roleIds, rc.LoginAccount.RoleId)
rc.ResData = vo.UserProfileVo{
- Data: user,
- PostIds: postIds,
- RoleIds: roleIds,
- Roles: *roleList,
- Posts: *postList,
- Dept: *deptList,
+ Data: user,
+ PostIds: postIds,
+ RoleIds: roleIds,
+ Roles: *roleList,
+ Posts: *postList,
+ Organization: *organizationList,
}
}
@@ -235,15 +237,15 @@ func (u *UserApi) GetSysUser(rc *restfulx.ReqCtx) {
var role entity.SysRole
var post entity.SysPost
- var dept entity.SysDept
+ var organization entity.SysOrganization
rc.ResData = vo.UserVo{
- Data: result,
- PostIds: result.PostIds,
- RoleIds: result.RoleIds,
- Roles: *u.RoleApp.FindList(role),
- Posts: *u.PostApp.FindList(post),
- Depts: u.DeptApp.SelectDept(dept),
+ Data: result,
+ PostIds: result.PostIds,
+ RoleIds: result.RoleIds,
+ Roles: *u.RoleApp.FindList(role),
+ Posts: *u.PostApp.FindList(post),
+ Organizations: u.OrganizationApp.SelectOrganization(organization),
}
}
diff --git a/apps/system/api/vo/systemVo.go b/apps/system/api/vo/systemVo.go
index 7d9d480..f33d1ca 100644
--- a/apps/system/api/vo/systemVo.go
+++ b/apps/system/api/vo/systemVo.go
@@ -8,9 +8,9 @@ import "pandax/apps/system/entity"
* @Date 2022/8/4 15:25
**/
-type DeptTreeVo struct {
- Depts []entity.DeptLable `json:"depts"`
- CheckedKeys []int64 `json:"checkedKeys"`
+type OrganizationTreeVo struct {
+ Organizations []entity.OrganizationLable `json:"organizations"`
+ CheckedKeys []int64 `json:"checkedKeys"`
}
type MenuTreeVo struct {
@@ -41,21 +41,21 @@ type AuthVo struct {
}
type UserProfileVo struct {
- Data any `json:"data"`
- PostIds []int64 `json:"postIds"`
- RoleIds []int64 `json:"roleIds"`
- Roles []entity.SysRole `json:"roles"`
- Posts []entity.SysPost `json:"posts"`
- Dept []entity.SysDept `json:"dept"`
+ Data any `json:"data"`
+ PostIds []int64 `json:"postIds"`
+ RoleIds []int64 `json:"roleIds"`
+ Roles []entity.SysRole `json:"roles"`
+ Posts []entity.SysPost `json:"posts"`
+ Organization []entity.SysOrganization `json:"organization"`
}
type UserVo struct {
- Data any `json:"data"`
- PostIds string `json:"postIds"`
- RoleIds string `json:"roleIds"`
- Roles []entity.SysRole `json:"roles"`
- Posts []entity.SysPost `json:"posts"`
- Depts []entity.SysDept `json:"depts"`
+ Data any `json:"data"`
+ PostIds string `json:"postIds"`
+ RoleIds string `json:"roleIds"`
+ Roles []entity.SysRole `json:"roles"`
+ Posts []entity.SysPost `json:"posts"`
+ Organizations []entity.SysOrganization `json:"organizations"`
}
type UserRolePost struct {
diff --git a/apps/system/entity/dept.go b/apps/system/entity/dept.go
deleted file mode 100644
index a82343e..0000000
--- a/apps/system/entity/dept.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package entity
-
-import "github.com/PandaXGO/PandaKit/model"
-
-// 部门组织
-type SysDept struct {
- DeptId int64 `json:"deptId" gorm:"primary_key;AUTO_INCREMENT"` //部门编码
- ParentId int64 `json:"parentId" gorm:"type:int;comment:上级部门"`
- DeptPath string `json:"deptPath" gorm:"type:varchar(255);comment:部门路径"`
- DeptName string `json:"deptName" gorm:"type:varchar(128);comment:部门名称"`
- Sort int64 `json:"sort" gorm:"type:int;comment:排序"`
- Leader string `json:"leader" gorm:"type:varchar(64);comment:负责人"` // userId
- Phone string `json:"phone" gorm:"type:varchar(11);comment:手机"`
- Email string `json:"email" gorm:"type:varchar(64);comment:邮箱"`
- Status string `json:"status" gorm:"type:varchar(1);comment:状态"`
- CreateBy string `json:"createBy" gorm:"type:varchar(64);comment:创建人"`
- UpdateBy string `json:"updateBy" gorm:"type:varchar(64);comment:修改人"`
- Children []SysDept `json:"children" gorm:"-"`
- model.BaseModel
-}
-
-type DeptLable struct {
- DeptId int64 `gorm:"-" json:"deptId"`
- DeptName string `gorm:"-" json:"deptName"`
- Children []DeptLable `gorm:"-" json:"children"`
-}
diff --git a/apps/system/entity/notice.go b/apps/system/entity/notice.go
index d19186d..67141c7 100644
--- a/apps/system/entity/notice.go
+++ b/apps/system/entity/notice.go
@@ -3,13 +3,13 @@ package entity
import "github.com/PandaXGO/PandaKit/model"
type SysNotice struct {
- NoticeId int64 `json:"noticeId" gorm:"primary_key;AUTO_INCREMENT"`
- Title string `json:"title" gorm:"type:varchar(128);comment:标题"`
- Content string `json:"content" gorm:"type:text;comment:标题"`
- NoticeType string `json:"noticeType" gorm:"type:varchar(1);comment:通知类型"`
- DeptId int64 `json:"deptId" gorm:"type:int;comment:部门Id,部门及子部门"`
- UserName string `json:"userName" gorm:"type:varchar(64);comment:发布人"`
+ NoticeId int64 `json:"noticeId" gorm:"primary_key;AUTO_INCREMENT"`
+ Title string `json:"title" gorm:"type:varchar(128);comment:标题"`
+ Content string `json:"content" gorm:"type:text;comment:标题"`
+ NoticeType string `json:"noticeType" gorm:"type:varchar(1);comment:通知类型"`
+ OrganizationId int64 `json:"organizationId" gorm:"type:int;comment:组织Id,组织及子组织"`
+ UserName string `json:"userName" gorm:"type:varchar(64);comment:发布人"`
- DeptIds []int64 `json:"deptIds" gorm:"-"`
+ OrganizationIds []int64 `json:"organizationIds" gorm:"-"`
model.BaseModel
}
diff --git a/apps/system/entity/organization.go b/apps/system/entity/organization.go
new file mode 100644
index 0000000..b27ea1c
--- /dev/null
+++ b/apps/system/entity/organization.go
@@ -0,0 +1,26 @@
+package entity
+
+import "github.com/PandaXGO/PandaKit/model"
+
+// 组织组织
+type SysOrganization struct {
+ OrganizationId int64 `json:"organizationId" gorm:"primary_key;AUTO_INCREMENT"` //组织编码
+ ParentId int64 `json:"parentId" gorm:"type:int;comment:上级组织"`
+ OrganizationPath string `json:"organizationPath" gorm:"type:varchar(255);comment:组织路径"`
+ OrganizationName string `json:"organizationName" gorm:"type:varchar(128);comment:组织名称"`
+ Sort int64 `json:"sort" gorm:"type:int;comment:排序"`
+ Leader string `json:"leader" gorm:"type:varchar(64);comment:负责人"` // userId
+ Phone string `json:"phone" gorm:"type:varchar(11);comment:手机"`
+ Email string `json:"email" gorm:"type:varchar(64);comment:邮箱"`
+ Status string `json:"status" gorm:"type:varchar(1);comment:状态"`
+ CreateBy string `json:"createBy" gorm:"type:varchar(64);comment:创建人"`
+ UpdateBy string `json:"updateBy" gorm:"type:varchar(64);comment:修改人"`
+ Children []SysOrganization `json:"children" gorm:"-"`
+ model.BaseModel
+}
+
+type OrganizationLable struct {
+ OrganizationId int64 `gorm:"-" json:"organizationId"`
+ OrganizationName string `gorm:"-" json:"organizationName"`
+ Children []OrganizationLable `gorm:"-" json:"children"`
+}
diff --git a/apps/system/entity/role.go b/apps/system/entity/role.go
index 72a4d04..bd01704 100644
--- a/apps/system/entity/role.go
+++ b/apps/system/entity/role.go
@@ -5,26 +5,34 @@ import (
"github.com/PandaXGO/PandaKit/model"
)
+const (
+ SELFDATASCOPE = "0"
+ ALLDATASCOPE = "1"
+ DIYDATASCOPE = "2"
+ ORGDATASCOPE = "3"
+ ORGALLDATASCOPE = "4"
+)
+
type SysRole struct {
model.BaseModel
- RoleId int64 `json:"roleId" gorm:"primary_key;AUTO_INCREMENT"`
- RoleName string `json:"roleName" gorm:"type:varchar(128);comment:角色名称"`
- Status string `json:"status" gorm:"type:varchar(1);comment:状态"`
- RoleKey string `json:"roleKey" gorm:"type:varchar(128);comment:角色代码"`
- RoleSort int64 `json:"roleSort" gorm:"type:int;comment:角色排序"`
- DataScope string `json:"dataScope" gorm:"type:varchar(1);comment:数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)"`
- CreateBy string `json:"createBy" gorm:"type:varchar(128);comment:创建人"`
- UpdateBy string `json:"updateBy" gorm:"type:varchar(128);comment:修改人"`
- Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
- ApiIds []casbin.CasbinRule `json:"apiIds" gorm:"-"`
- MenuIds []int64 `json:"menuIds" gorm:"-"`
- DeptIds []int64 `json:"deptIds" gorm:"-"`
+ RoleId int64 `json:"roleId" gorm:"primary_key;AUTO_INCREMENT"`
+ RoleName string `json:"roleName" gorm:"type:varchar(128);comment:角色名称"`
+ Status string `json:"status" gorm:"type:varchar(1);comment:状态"`
+ RoleKey string `json:"roleKey" gorm:"type:varchar(128);comment:角色代码"`
+ RoleSort int64 `json:"roleSort" gorm:"type:int;comment:角色排序"`
+ DataScope string `json:"dataScope" gorm:"type:varchar(1);comment:数据范围(0: 本人数据 1:全部数据权限 2:自定数据权限 3:本组织数据权限 4:本组织及以下数据权限)"`
+ CreateBy string `json:"createBy" gorm:"type:varchar(128);comment:创建人"`
+ UpdateBy string `json:"updateBy" gorm:"type:varchar(128);comment:修改人"`
+ Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
+ ApiIds []casbin.CasbinRule `json:"apiIds" gorm:"-"`
+ MenuIds []int64 `json:"menuIds" gorm:"-"`
+ OrganizationIds []int64 `json:"organizationIds" gorm:"-"`
}
type MenuIdList struct {
MenuId int64 `json:"menuId"`
}
-type DeptIdList struct {
- DeptId int64 `json:"deptId"`
+type OrganizationIdList struct {
+ OrganizationId int64 `json:"organizationId"`
}
diff --git a/apps/system/entity/role_dept.go b/apps/system/entity/role_dept.go
deleted file mode 100644
index def7f7a..0000000
--- a/apps/system/entity/role_dept.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package entity
-
-type SysRoleDept struct {
- RoleId int64 `gorm:"type:int"`
- DeptId int64 `gorm:"type:int"`
- Id int64 `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"id" form:"id"`
-}
diff --git a/apps/system/entity/role_organization.go b/apps/system/entity/role_organization.go
new file mode 100644
index 0000000..3c1eafc
--- /dev/null
+++ b/apps/system/entity/role_organization.go
@@ -0,0 +1,7 @@
+package entity
+
+type SysRoleOrganization struct {
+ RoleId int64 `gorm:"type:int"`
+ OrganizationId int64 `gorm:"type:int"`
+ Id int64 `gorm:"primary_key;AUTO_INCREMENT;column:id" json:"id" form:"id"`
+}
diff --git a/apps/system/entity/user.go b/apps/system/entity/user.go
index b674f76..467917f 100644
--- a/apps/system/entity/user.go
+++ b/apps/system/entity/user.go
@@ -12,21 +12,21 @@ type SysUserId struct {
}
type SysUserB struct {
- NickName string `gorm:"type:varchar(128)" json:"nickName"` // 昵称
- Phone string `gorm:"type:varchar(11)" json:"phone"` // 手机号
- RoleId int64 `gorm:"type:int" json:"roleId"` // 角色编码
- Salt string `gorm:"type:varchar(255)" json:"salt"` //盐
- Avatar string `gorm:"type:varchar(255)" json:"avatar"` //头像
- Sex string `gorm:"type:varchar(255)" json:"sex"` //性别
- Email string `gorm:"type:varchar(128)" json:"email"` //邮箱
- DeptId int64 `gorm:"type:int" json:"deptId"` //部门编码
- PostId int64 `gorm:"type:int" json:"postId"` //职位编码
- RoleIds string `gorm:"type:varchar(255)" json:"roleIds"` //多角色
- PostIds string `gorm:"type:varchar(255)" json:"postIds"` // 多岗位
- CreateBy string `gorm:"type:varchar(128)" json:"createBy"` //
- UpdateBy string `gorm:"type:varchar(128)" json:"updateBy"` //
- Remark string `gorm:"type:varchar(255)" json:"remark"` //备注
- Status string `gorm:"type:varchar(1);" json:"status"`
+ NickName string `gorm:"type:varchar(128)" json:"nickName"` // 昵称
+ Phone string `gorm:"type:varchar(11)" json:"phone"` // 手机号
+ RoleId int64 `gorm:"type:int" json:"roleId"` // 角色编码
+ Salt string `gorm:"type:varchar(255)" json:"salt"` //盐
+ Avatar string `gorm:"type:varchar(255)" json:"avatar"` //头像
+ Sex string `gorm:"type:varchar(255)" json:"sex"` //性别
+ Email string `gorm:"type:varchar(128)" json:"email"` //邮箱
+ OrganizationId int64 `gorm:"type:int" json:"organizationId"` //组织编码
+ PostId int64 `gorm:"type:int" json:"postId"` //职位编码
+ RoleIds string `gorm:"type:varchar(255)" json:"roleIds"` //多角色
+ PostIds string `gorm:"type:varchar(255)" json:"postIds"` // 多岗位
+ CreateBy string `gorm:"type:varchar(128)" json:"createBy"` //
+ UpdateBy string `gorm:"type:varchar(128)" json:"updateBy"` //
+ Remark string `gorm:"type:varchar(255)" json:"remark"` //备注
+ Status string `gorm:"type:varchar(1);" json:"status"`
model.BaseModel
}
@@ -45,7 +45,7 @@ type SysUserPage struct {
SysUserId
SysUserB
LoginM
- DeptName string `gorm:"-" json:"deptName"`
+ OrganizationName string `gorm:"-" json:"organizationName"`
}
type Login struct {
diff --git a/apps/system/router/dept.go b/apps/system/router/dept.go
deleted file mode 100644
index 1723c24..0000000
--- a/apps/system/router/dept.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package router
-
-import (
- "github.com/PandaXGO/PandaKit/restfulx"
- restfulspec "github.com/emicklei/go-restful-openapi/v2"
- "github.com/emicklei/go-restful/v3"
- "pandax/apps/system/api"
- "pandax/apps/system/api/vo"
- "pandax/apps/system/entity"
- "pandax/apps/system/services"
-)
-
-func InitDeptRouter(container *restful.Container) {
- s := &api.DeptApi{
- DeptApp: services.SysDeptModelDao,
- RoleApp: services.SysRoleModelDao,
- UserApp: services.SysUserModelDao,
- }
-
- ws := new(restful.WebService)
- ws.Path("/system/dept").Produces(restful.MIME_JSON)
- tags := []string{"dept"}
-
- ws.Route(ws.GET("/roleDeptTreeSelect/{roleId}").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("获取角色部门树").Handle(s.GetDeptTreeRoleSelect)
- }).
- Doc("获取角色部门树").
- Param(ws.PathParameter("roleId", "角色Id").DataType("int").DefaultValue("1")).
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Writes(vo.DeptTreeVo{}).
- Returns(200, "OK", vo.DeptTreeVo{}).
- Returns(404, "Not Found", nil))
-
- ws.Route(ws.GET("/deptTree").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("获取所有部门树").Handle(s.GetDeptTree)
- }).
- Doc("获取所有部门树").
- Param(ws.QueryParameter("deptName", "deptName").DataType("string")).
- Param(ws.QueryParameter("status", "status").DataType("string")).
- Param(ws.QueryParameter("deptId", "deptId").DataType("int")).
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Writes([]entity.SysDept{}).
- Returns(200, "OK", []entity.SysDept{}).
- Returns(404, "Not Found", nil))
-
- ws.Route(ws.GET("/list").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("获取部门列表").Handle(s.GetDeptList)
- }).
- Doc("获取部门列表").
- Param(ws.QueryParameter("deptName", "deptName").DataType("string")).
- Param(ws.QueryParameter("status", "status").DataType("string")).
- Param(ws.QueryParameter("deptId", "deptId").DataType("int")).
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Writes([]entity.SysDept{}).
- Returns(200, "OK", []entity.SysDept{}))
-
- ws.Route(ws.GET("/{deptId}").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("获取部门信息").Handle(s.GetDept)
- }).
- Doc("获取部门信息").
- Param(ws.PathParameter("deptId", "部门Id").DataType("int").DefaultValue("1")).
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Writes(entity.SysDept{}). // on the response
- Returns(200, "OK", entity.SysDept{}).
- Returns(404, "Not Found", nil))
-
- ws.Route(ws.POST("").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("添加部门信息").Handle(s.InsertDept)
- }).
- Doc("添加部门信息").
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Reads(entity.SysDept{}))
-
- ws.Route(ws.PUT("").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("修改部门信息").Handle(s.UpdateDept)
- }).
- Doc("修改部门信息").
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Reads(entity.SysDept{}))
-
- ws.Route(ws.DELETE("/{deptId}").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("删除部门信息").Handle(s.DeleteDept)
- }).
- Doc("删除部门信息").
- Metadata(restfulspec.KeyOpenAPITags, tags).
- Param(ws.PathParameter("deptId", "多id 1,2,3").DataType("int")))
-
- container.Add(ws)
-
-}
diff --git a/apps/system/router/menu.go b/apps/system/router/menu.go
index dbd0f92..3b353c6 100644
--- a/apps/system/router/menu.go
+++ b/apps/system/router/menu.go
@@ -12,10 +12,10 @@ import (
func InitMenuRouter(container *restful.Container) {
s := &api.MenuApi{
- MenuApp: services.SysMenuModelDao,
- RoleApp: services.SysRoleModelDao,
- RoleMenuApp: services.SysRoleMenuModelDao,
- DeptApp: services.SysDeptModelDao,
+ MenuApp: services.SysMenuModelDao,
+ RoleApp: services.SysRoleModelDao,
+ RoleMenuApp: services.SysRoleMenuModelDao,
+ OrganizationApp: services.SysOrganizationModelDao,
}
ws := new(restful.WebService)
ws.Path("/system/menu").Produces(restful.MIME_JSON)
diff --git a/apps/system/router/notice.go b/apps/system/router/notice.go
index 62e8605..4c9dd7c 100644
--- a/apps/system/router/notice.go
+++ b/apps/system/router/notice.go
@@ -12,8 +12,8 @@ import (
func InitNoticeRouter(container *restful.Container) {
s := &api.NoticeApi{
- DeptApp: services.SysDeptModelDao,
- NoticeApp: services.SysNoticeModelDao,
+ OrganizationApp: services.SysOrganizationModelDao,
+ NoticeApp: services.SysNoticeModelDao,
}
ws := new(restful.WebService)
ws.Path("/system/notice").Produces(restful.MIME_JSON)
diff --git a/apps/system/router/organization.go b/apps/system/router/organization.go
new file mode 100644
index 0000000..e51898a
--- /dev/null
+++ b/apps/system/router/organization.go
@@ -0,0 +1,90 @@
+package router
+
+import (
+ "github.com/PandaXGO/PandaKit/restfulx"
+ restfulspec "github.com/emicklei/go-restful-openapi/v2"
+ "github.com/emicklei/go-restful/v3"
+ "pandax/apps/system/api"
+ "pandax/apps/system/api/vo"
+ "pandax/apps/system/entity"
+ "pandax/apps/system/services"
+)
+
+func InitOrganizationRouter(container *restful.Container) {
+ s := &api.OrganizationApi{
+ OrganizationApp: services.SysOrganizationModelDao,
+ RoleApp: services.SysRoleModelDao,
+ UserApp: services.SysUserModelDao,
+ }
+
+ ws := new(restful.WebService)
+ ws.Path("/system/organization").Produces(restful.MIME_JSON)
+ tags := []string{"organization"}
+
+ ws.Route(ws.GET("/roleOrganizationTreeSelect/{roleId}").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("获取角色组织树").Handle(s.GetOrganizationTreeRoleSelect)
+ }).
+ Doc("获取角色组织树").
+ Param(ws.PathParameter("roleId", "角色Id").DataType("int").DefaultValue("1")).
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Writes(vo.OrganizationTreeVo{}).
+ Returns(200, "OK", vo.OrganizationTreeVo{}).
+ Returns(404, "Not Found", nil))
+
+ ws.Route(ws.GET("/organizationTree").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("获取所有组织树").Handle(s.GetOrganizationTree)
+ }).
+ Doc("获取所有组织树").
+ Param(ws.QueryParameter("organizationName", "organizationName").DataType("string")).
+ Param(ws.QueryParameter("status", "status").DataType("string")).
+ Param(ws.QueryParameter("organizationId", "organizationId").DataType("int")).
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Writes([]entity.SysOrganization{}).
+ Returns(200, "OK", []entity.SysOrganization{}).
+ Returns(404, "Not Found", nil))
+
+ ws.Route(ws.GET("/list").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("获取组织列表").Handle(s.GetOrganizationList)
+ }).
+ Doc("获取组织列表").
+ Param(ws.QueryParameter("organizationName", "organizationName").DataType("string")).
+ Param(ws.QueryParameter("status", "status").DataType("string")).
+ Param(ws.QueryParameter("organizationId", "organizationId").DataType("int")).
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Writes([]entity.SysOrganization{}).
+ Returns(200, "OK", []entity.SysOrganization{}))
+
+ ws.Route(ws.GET("/{organizationId}").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("获取组织信息").Handle(s.GetOrganization)
+ }).
+ Doc("获取组织信息").
+ Param(ws.PathParameter("organizationId", "组织Id").DataType("int").DefaultValue("1")).
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Writes(entity.SysOrganization{}). // on the response
+ Returns(200, "OK", entity.SysOrganization{}).
+ Returns(404, "Not Found", nil))
+
+ ws.Route(ws.POST("").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("添加组织信息").Handle(s.InsertOrganization)
+ }).
+ Doc("添加组织信息").
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Reads(entity.SysOrganization{}))
+
+ ws.Route(ws.PUT("").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("修改组织信息").Handle(s.UpdateOrganization)
+ }).
+ Doc("修改组织信息").
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Reads(entity.SysOrganization{}))
+
+ ws.Route(ws.DELETE("/{organizationId}").To(func(request *restful.Request, response *restful.Response) {
+ restfulx.NewReqCtx(request, response).WithLog("删除组织信息").Handle(s.DeleteOrganization)
+ }).
+ Doc("删除组织信息").
+ Metadata(restfulspec.KeyOpenAPITags, tags).
+ Param(ws.PathParameter("organizationId", "多id 1,2,3").DataType("int")))
+
+ container.Add(ws)
+
+}
diff --git a/apps/system/router/role.go b/apps/system/router/role.go
index 5645fab..09b45d0 100644
--- a/apps/system/router/role.go
+++ b/apps/system/router/role.go
@@ -12,10 +12,11 @@ import (
func InitRoleRouter(container *restful.Container) {
s := &api.RoleApi{
- RoleApp: services.SysRoleModelDao,
- RoleMenuApp: services.SysRoleMenuModelDao,
- RoleDeptApp: services.SysRoleDeptModelDao,
- UserApp: services.SysUserModelDao,
+ RoleApp: services.SysRoleModelDao,
+ RoleMenuApp: services.SysRoleMenuModelDao,
+ OrganizationApp: services.SysOrganizationModelDao,
+ RoleOrganizationApp: services.SysRoleOrganizationModelDao,
+ UserApp: services.SysUserModelDao,
}
ws := new(restful.WebService)
ws.Path("/system/role").Produces(restful.MIME_JSON)
@@ -66,9 +67,9 @@ func InitRoleRouter(container *restful.Container) {
Reads(entity.SysRole{}))
ws.Route(ws.PUT("/dataScope").To(func(request *restful.Request, response *restful.Response) {
- restfulx.NewReqCtx(request, response).WithLog("修改角色部门权限").Handle(s.UpdateRoleDataScope)
+ restfulx.NewReqCtx(request, response).WithLog("修改角色组织权限").Handle(s.UpdateRoleDataScope)
}).
- Doc("修改角色部门权限").
+ Doc("修改角色组织权限").
Metadata(restfulspec.KeyOpenAPITags, tags).
Reads(entity.SysRole{}))
diff --git a/apps/system/router/user.go b/apps/system/router/user.go
index d45a106..4de61da 100644
--- a/apps/system/router/user.go
+++ b/apps/system/router/user.go
@@ -16,13 +16,13 @@ import (
func InitUserRouter(container *restful.Container) {
s := &api.UserApi{
- RoleApp: services.SysRoleModelDao,
- MenuApp: services.SysMenuModelDao,
- RoleMenuApp: services.SysRoleMenuModelDao,
- UserApp: services.SysUserModelDao,
- LogLogin: logServices.LogLoginModelDao,
- DeptApp: services.SysDeptModelDao,
- PostApp: services.SysPostModelDao,
+ RoleApp: services.SysRoleModelDao,
+ MenuApp: services.SysMenuModelDao,
+ RoleMenuApp: services.SysRoleMenuModelDao,
+ UserApp: services.SysUserModelDao,
+ LogLogin: logServices.LogLoginModelDao,
+ OrganizationApp: services.SysOrganizationModelDao,
+ PostApp: services.SysPostModelDao,
}
ws := new(restful.WebService)
ws.Path("/system/user").Produces(restful.MIME_JSON)
diff --git a/apps/system/services/dept.go b/apps/system/services/dept.go
deleted file mode 100644
index 30ff5ac..0000000
--- a/apps/system/services/dept.go
+++ /dev/null
@@ -1,203 +0,0 @@
-package services
-
-import (
- "errors"
- "github.com/PandaXGO/PandaKit/biz"
- "github.com/kakuilan/kgo"
- "pandax/apps/system/entity"
- "pandax/pkg/global"
-)
-
-type (
- SysDeptModel interface {
- Insert(data entity.SysDept) *entity.SysDept
- FindOne(deptId int64) *entity.SysDept
- FindListPage(page, pageSize int, data entity.SysDept) (*[]entity.SysDept, int64)
- FindList(data entity.SysDept) *[]entity.SysDept
- Update(data entity.SysDept) *entity.SysDept
- Delete(deptId []int64)
- SelectDept(data entity.SysDept) []entity.SysDept
- SelectDeptLable(data entity.SysDept) []entity.DeptLable
- }
-
- sysDeptModelImpl struct {
- table string
- }
-)
-
-var SysDeptModelDao SysDeptModel = &sysDeptModelImpl{
- table: `sys_depts`,
-}
-
-func (m *sysDeptModelImpl) Insert(data entity.SysDept) *entity.SysDept {
- biz.ErrIsNil(global.Db.Table(m.table).Create(&data).Error, "新增部门信息失败")
- deptPath := "/" + kgo.KConv.Int2Str(data.DeptId)
- if int(data.ParentId) != 0 {
- deptP := m.FindOne(data.ParentId)
- deptPath = deptP.DeptPath + deptPath
- } else {
- deptPath = "/0" + deptPath
- }
- data.DeptPath = deptPath
- biz.ErrIsNil(global.Db.Table(m.table).Model(&data).Updates(&data).Error, "修改部门信息失败")
- return &data
-}
-
-func (m *sysDeptModelImpl) FindOne(deptId int64) *entity.SysDept {
- resData := new(entity.SysDept)
- err := global.Db.Table(m.table).Where("dept_id = ?", deptId).First(resData).Error
- biz.ErrIsNil(err, "查询部门信息失败")
- return resData
-}
-
-func (m *sysDeptModelImpl) FindListPage(page, pageSize int, data entity.SysDept) (*[]entity.SysDept, int64) {
- list := make([]entity.SysDept, 0)
- var total int64 = 0
- offset := pageSize * (page - 1)
-
- db := global.Db.Table(m.table)
- // 此处填写 where参数判断
- if data.DeptId != 0 {
- db = db.Where("dept_id = ?", data.DeptId)
- }
- if data.DeptName != "" {
- db = db.Where("dept_name like ?", "%"+data.DeptName+"%")
- }
- if data.Status != "" {
- db = db.Where("status = ?", data.Status)
- }
- if data.DeptPath != "" {
- db = db.Where("deptPath like %?%", data.DeptPath)
- }
- db.Where("delete_time IS NULL")
- err := db.Count(&total).Error
- err = db.Limit(pageSize).Offset(offset).Find(&list).Error
- biz.ErrIsNil(err, "查询部门分页列表信息失败")
- return &list, total
-}
-
-func (m *sysDeptModelImpl) FindList(data entity.SysDept) *[]entity.SysDept {
- list := make([]entity.SysDept, 0)
-
- db := global.Db.Table(m.table)
- // 此处填写 where参数判断
- if data.DeptId != 0 {
- db = db.Where("dept_id = ?", data.DeptId)
- }
- if data.DeptName != "" {
- db = db.Where("dept_name like ?", "%"+data.DeptName+"%")
- }
- if data.Status != "" {
- db = db.Where("status = ?", data.Status)
- }
- db.Where("delete_time IS NULL")
- err := db.Order("sort").Find(&list).Error
- biz.ErrIsNil(err, "查询部门列表信息失败")
- return &list
-}
-
-func (m *sysDeptModelImpl) Update(data entity.SysDept) *entity.SysDept {
- one := m.FindOne(data.DeptId)
-
- deptPath := "/" + kgo.KConv.Int2Str(data.DeptId)
- if int(data.ParentId) != 0 {
- deptP := m.FindOne(data.ParentId)
- deptPath = deptP.DeptPath + deptPath
- } else {
- deptPath = "/0" + deptPath
- }
- data.DeptPath = deptPath
-
- if data.DeptPath != "" && data.DeptPath != one.DeptPath {
- biz.ErrIsNil(errors.New("上级部门不允许修改!"), "上级部门不允许修改")
- }
- biz.ErrIsNil(global.Db.Table(m.table).Model(&data).Updates(&data).Error, "修改部门信息失败")
- return &data
-}
-
-func (m *sysDeptModelImpl) Delete(deptIds []int64) {
- err := global.Db.Table(m.table).Delete(&entity.SysDept{}, "dept_id in (?)", deptIds).Error
- biz.ErrIsNil(err, "删除部门信息失败")
- return
-}
-
-func (m *sysDeptModelImpl) SelectDept(data entity.SysDept) []entity.SysDept {
- list := m.FindList(data)
-
- sd := make([]entity.SysDept, 0)
- li := *list
- for i := 0; i < len(li); i++ {
- if li[i].ParentId != 0 {
- continue
- }
- info := Digui(list, li[i])
-
- sd = append(sd, info)
- }
- return sd
-}
-
-func (m *sysDeptModelImpl) SelectDeptLable(data entity.SysDept) []entity.DeptLable {
- deptlist := m.FindList(data)
-
- dl := make([]entity.DeptLable, 0)
- deptl := *deptlist
- for i := 0; i < len(deptl); i++ {
- if deptl[i].ParentId != 0 {
- continue
- }
- e := entity.DeptLable{}
- e.DeptId = deptl[i].DeptId
- e.DeptName = deptl[i].DeptName
- deptsInfo := DiguiDeptLable(deptlist, e)
-
- dl = append(dl, deptsInfo)
- }
- return dl
-}
-
-func Digui(deptlist *[]entity.SysDept, menu entity.SysDept) entity.SysDept {
- list := *deptlist
-
- min := make([]entity.SysDept, 0)
- for j := 0; j < len(list); j++ {
-
- if menu.DeptId != list[j].ParentId {
- continue
- }
- mi := entity.SysDept{}
- mi.DeptId = list[j].DeptId
- mi.ParentId = list[j].ParentId
- mi.DeptPath = list[j].DeptPath
- mi.DeptName = list[j].DeptName
- mi.Sort = list[j].Sort
- mi.Leader = list[j].Leader
- mi.Phone = list[j].Phone
- mi.Email = list[j].Email
- mi.Status = list[j].Status
- mi.CreatedAt = list[j].CreatedAt
- mi.UpdatedAt = list[j].UpdatedAt
- mi.Children = []entity.SysDept{}
- ms := Digui(deptlist, mi)
- min = append(min, ms)
- }
- menu.Children = min
- return menu
-}
-func DiguiDeptLable(deptlist *[]entity.SysDept, dept entity.DeptLable) entity.DeptLable {
- list := *deptlist
-
- min := make([]entity.DeptLable, 0)
- for j := 0; j < len(list); j++ {
-
- if dept.DeptId != list[j].ParentId {
- continue
- }
- mi := entity.DeptLable{list[j].DeptId, list[j].DeptName, []entity.DeptLable{}}
- ms := DiguiDeptLable(deptlist, mi)
- min = append(min, ms)
-
- }
- dept.Children = min
- return dept
-}
diff --git a/apps/system/services/dict_data.go b/apps/system/services/dict_data.go
index dbaad3b..e1166ca 100644
--- a/apps/system/services/dict_data.go
+++ b/apps/system/services/dict_data.go
@@ -88,7 +88,7 @@ func (m *sysDictDataModelImpl) Update(data entity.SysDictData) *entity.SysDictDa
}
func (m *sysDictDataModelImpl) Delete(codeIds []int64) {
- err := global.Db.Table(m.table).Delete(&entity.SysDept{}, "dict_code in (?)", codeIds).Error
+ err := global.Db.Table(m.table).Delete(&entity.SysOrganization{}, "dict_code in (?)", codeIds).Error
biz.ErrIsNil(err, "删除字典数据信息失败")
return
}
diff --git a/apps/system/services/dict_type.go b/apps/system/services/dict_type.go
index edc4c2b..c27de4c 100644
--- a/apps/system/services/dict_type.go
+++ b/apps/system/services/dict_type.go
@@ -9,11 +9,11 @@ import (
type (
SysDictTypeModel interface {
Insert(data entity.SysDictType) *entity.SysDictType
- FindOne(deptId int64) *entity.SysDictType
+ FindOne(organizationId int64) *entity.SysDictType
FindListPage(page, pageSize int, data entity.SysDictType) (*[]entity.SysDictType, int64)
FindList(data entity.SysDictType) *[]entity.SysDictType
Update(data entity.SysDictType) *entity.SysDictType
- Delete(deptId []int64)
+ Delete(organizationId []int64)
}
sysDictTypeModelImpl struct {
diff --git a/apps/system/services/notice.go b/apps/system/services/notice.go
index 62b14e5..12af623 100644
--- a/apps/system/services/notice.go
+++ b/apps/system/services/notice.go
@@ -49,8 +49,8 @@ func (m *sysNoticeModelImpl) FindListPage(page, pageSize int, data entity.SysNot
if data.NoticeType != "" {
db = db.Where("notice_type = ?", data.NoticeType)
}
- if len(data.DeptIds) > 0 {
- db = db.Where("dept_id in (?)", data.DeptIds)
+ if len(data.OrganizationIds) > 0 {
+ db = db.Where("organization_id in (?)", data.OrganizationIds)
}
db.Where("delete_time IS NULL")
err := db.Count(&total).Error
diff --git a/apps/system/services/organization.go b/apps/system/services/organization.go
new file mode 100644
index 0000000..d5dca96
--- /dev/null
+++ b/apps/system/services/organization.go
@@ -0,0 +1,237 @@
+package services
+
+import (
+ "errors"
+ "github.com/PandaXGO/PandaKit/biz"
+ "github.com/kakuilan/kgo"
+ "pandax/apps/system/entity"
+ "pandax/pkg/global"
+)
+
+type (
+ SysOrganizationModel interface {
+ Insert(data entity.SysOrganization) *entity.SysOrganization
+ FindOne(organizationId int64) *entity.SysOrganization
+ FindListPage(page, pageSize int, data entity.SysOrganization) (*[]entity.SysOrganization, int64)
+ FindList(data entity.SysOrganization) *[]entity.SysOrganization
+ Update(data entity.SysOrganization) *entity.SysOrganization
+ Delete(organizationId []int64)
+ SelectOrganization(data entity.SysOrganization) []entity.SysOrganization
+ SelectOrganizationLable(data entity.SysOrganization) []entity.OrganizationLable
+ SelectOrganizationIds(data entity.SysOrganization) []int64
+ }
+
+ sysOrganizationModelImpl struct {
+ table string
+ }
+)
+
+var SysOrganizationModelDao SysOrganizationModel = &sysOrganizationModelImpl{
+ table: `sys_organizations`,
+}
+
+func (m *sysOrganizationModelImpl) Insert(data entity.SysOrganization) *entity.SysOrganization {
+ biz.ErrIsNil(global.Db.Table(m.table).Create(&data).Error, "新增组织信息失败")
+ organizationPath := "/" + kgo.KConv.Int2Str(data.OrganizationId)
+ if int(data.ParentId) != 0 {
+ organizationP := m.FindOne(data.ParentId)
+ organizationPath = organizationP.OrganizationPath + organizationPath
+ } else {
+ organizationPath = "/0" + organizationPath
+ }
+ data.OrganizationPath = organizationPath
+ biz.ErrIsNil(global.Db.Table(m.table).Model(&data).Updates(&data).Error, "修改组织信息失败")
+ return &data
+}
+
+func (m *sysOrganizationModelImpl) FindOne(organizationId int64) *entity.SysOrganization {
+ resData := new(entity.SysOrganization)
+ err := global.Db.Table(m.table).Where("organization_id = ?", organizationId).First(resData).Error
+ biz.ErrIsNil(err, "查询组织信息失败")
+ return resData
+}
+
+func (m *sysOrganizationModelImpl) FindListPage(page, pageSize int, data entity.SysOrganization) (*[]entity.SysOrganization, int64) {
+ list := make([]entity.SysOrganization, 0)
+ var total int64 = 0
+ offset := pageSize * (page - 1)
+
+ db := global.Db.Table(m.table)
+ // 此处填写 where参数判断
+ if data.OrganizationId != 0 {
+ db = db.Where("organization_id = ?", data.OrganizationId)
+ }
+ if data.OrganizationName != "" {
+ db = db.Where("organization_name like ?", "%"+data.OrganizationName+"%")
+ }
+ if data.Status != "" {
+ db = db.Where("status = ?", data.Status)
+ }
+ if data.OrganizationPath != "" {
+ db = db.Where("organizationPath like %?%", data.OrganizationPath)
+ }
+ db.Where("delete_time IS NULL")
+ err := db.Count(&total).Error
+ err = db.Limit(pageSize).Offset(offset).Find(&list).Error
+ biz.ErrIsNil(err, "查询组织分页列表信息失败")
+ return &list, total
+}
+
+func (m *sysOrganizationModelImpl) FindList(data entity.SysOrganization) *[]entity.SysOrganization {
+ list := make([]entity.SysOrganization, 0)
+
+ db := global.Db.Table(m.table)
+ // 此处填写 where参数判断
+ if data.OrganizationId != 0 {
+ db = db.Where("organization_id = ?", data.OrganizationId)
+ }
+ if data.OrganizationName != "" {
+ db = db.Where("organization_name like ?", "%"+data.OrganizationName+"%")
+ }
+ if data.Status != "" {
+ db = db.Where("status = ?", data.Status)
+ }
+ db.Where("delete_time IS NULL")
+ err := db.Order("sort").Find(&list).Error
+ biz.ErrIsNil(err, "查询组织列表信息失败")
+ return &list
+}
+
+func (m *sysOrganizationModelImpl) Update(data entity.SysOrganization) *entity.SysOrganization {
+ one := m.FindOne(data.OrganizationId)
+
+ organizationPath := "/" + kgo.KConv.Int2Str(data.OrganizationId)
+ if int(data.ParentId) != 0 {
+ organizationP := m.FindOne(data.ParentId)
+ organizationPath = organizationP.OrganizationPath + organizationPath
+ } else {
+ organizationPath = "/0" + organizationPath
+ }
+ data.OrganizationPath = organizationPath
+
+ if data.OrganizationPath != "" && data.OrganizationPath != one.OrganizationPath {
+ biz.ErrIsNil(errors.New("上级组织不允许修改!"), "上级组织不允许修改")
+ }
+ biz.ErrIsNil(global.Db.Table(m.table).Model(&data).Updates(&data).Error, "修改组织信息失败")
+ return &data
+}
+
+func (m *sysOrganizationModelImpl) Delete(organizationIds []int64) {
+ err := global.Db.Table(m.table).Delete(&entity.SysOrganization{}, "organization_id in (?)", organizationIds).Error
+ biz.ErrIsNil(err, "删除组织信息失败")
+ return
+}
+
+func (m *sysOrganizationModelImpl) SelectOrganization(data entity.SysOrganization) []entity.SysOrganization {
+ list := m.FindList(data)
+
+ sd := make([]entity.SysOrganization, 0)
+ li := *list
+ for i := 0; i < len(li); i++ {
+ if li[i].ParentId != 0 {
+ continue
+ }
+ info := Digui(list, li[i])
+
+ sd = append(sd, info)
+ }
+ return sd
+}
+
+func (m *sysOrganizationModelImpl) SelectOrganizationLable(data entity.SysOrganization) []entity.OrganizationLable {
+ organizationlist := m.FindList(data)
+
+ dl := make([]entity.OrganizationLable, 0)
+ organizationl := *organizationlist
+ for i := 0; i < len(organizationl); i++ {
+ if organizationl[i].ParentId != 0 {
+ continue
+ }
+ e := entity.OrganizationLable{}
+ e.OrganizationId = organizationl[i].OrganizationId
+ e.OrganizationName = organizationl[i].OrganizationName
+ organizationsInfo := DiguiOrganizationLable(organizationlist, e)
+
+ dl = append(dl, organizationsInfo)
+ }
+ return dl
+}
+
+func (m *sysOrganizationModelImpl) SelectOrganizationIds(data entity.SysOrganization) []int64 {
+ organizationlist := m.FindList(data)
+ dl := make([]int64, 0)
+ organizationl := *organizationlist
+ for i := 0; i < len(organizationl); i++ {
+ if organizationl[i].ParentId != 0 {
+ continue
+ }
+ dl = append(dl, organizationl[i].OrganizationId)
+ e := entity.OrganizationLable{}
+ e.OrganizationId = organizationl[i].OrganizationId
+ e.OrganizationName = organizationl[i].OrganizationName
+ id := DiguiOrganizationId(organizationlist, e)
+ dl = append(dl, id...)
+ }
+ return dl
+}
+
+func Digui(organizationlist *[]entity.SysOrganization, menu entity.SysOrganization) entity.SysOrganization {
+ list := *organizationlist
+
+ min := make([]entity.SysOrganization, 0)
+ for j := 0; j < len(list); j++ {
+
+ if menu.OrganizationId != list[j].ParentId {
+ continue
+ }
+ mi := entity.SysOrganization{}
+ mi.OrganizationId = list[j].OrganizationId
+ mi.ParentId = list[j].ParentId
+ mi.OrganizationPath = list[j].OrganizationPath
+ mi.OrganizationName = list[j].OrganizationName
+ mi.Sort = list[j].Sort
+ mi.Leader = list[j].Leader
+ mi.Phone = list[j].Phone
+ mi.Email = list[j].Email
+ mi.Status = list[j].Status
+ mi.CreatedAt = list[j].CreatedAt
+ mi.UpdatedAt = list[j].UpdatedAt
+ mi.Children = []entity.SysOrganization{}
+ ms := Digui(organizationlist, mi)
+ min = append(min, ms)
+ }
+ menu.Children = min
+ return menu
+}
+func DiguiOrganizationLable(organizationlist *[]entity.SysOrganization, organization entity.OrganizationLable) entity.OrganizationLable {
+ list := *organizationlist
+
+ min := make([]entity.OrganizationLable, 0)
+ for j := 0; j < len(list); j++ {
+
+ if organization.OrganizationId != list[j].ParentId {
+ continue
+ }
+ mi := entity.OrganizationLable{list[j].OrganizationId, list[j].OrganizationName, []entity.OrganizationLable{}}
+ ms := DiguiOrganizationLable(organizationlist, mi)
+ min = append(min, ms)
+
+ }
+ organization.Children = min
+ return organization
+}
+
+func DiguiOrganizationId(organizationlist *[]entity.SysOrganization, organization entity.OrganizationLable) []int64 {
+ list := *organizationlist
+ min := make([]int64, 0)
+ for j := 0; j < len(list); j++ {
+ if organization.OrganizationId != list[j].ParentId {
+ continue
+ }
+ min = append(min, list[j].OrganizationId)
+ mi := entity.OrganizationLable{list[j].OrganizationId, list[j].OrganizationName, []entity.OrganizationLable{}}
+ id := DiguiOrganizationId(organizationlist, mi)
+ min = append(min, id...)
+ }
+ return min
+}
diff --git a/apps/system/services/role.go b/apps/system/services/role.go
index 52cf316..118ae94 100644
--- a/apps/system/services/role.go
+++ b/apps/system/services/role.go
@@ -16,7 +16,7 @@ type (
Update(data entity.SysRole) *entity.SysRole
Delete(roleId []int64)
GetRoleMeunId(data entity.SysRole) []int64
- GetRoleDeptId(data entity.SysRole) []int64
+ GetRoleOrganizationId(data entity.SysRole) []int64
}
sysRoleModel struct {
@@ -119,14 +119,14 @@ func (m *sysRoleModel) GetRoleMeunId(data entity.SysRole) []int64 {
return menuIds
}
-func (m *sysRoleModel) GetRoleDeptId(data entity.SysRole) []int64 {
- deptIds := make([]int64, 0)
- deptList := make([]entity.DeptIdList, 0)
- err := global.Db.Table("sys_role_depts").Select("sys_role_depts.dept_id").Joins("LEFT JOIN sys_depts on sys_depts.dept_id=sys_role_depts.dept_id").Where("role_id = ? ", data.RoleId).Where(" sys_role_depts.dept_id not in(select sys_depts.parent_id from sys_role_depts LEFT JOIN sys_depts on sys_depts.dept_id=sys_role_depts.dept_id where role_id =? )", data.RoleId).Find(&deptList).Error
- biz.ErrIsNil(err, "查询角色部门列表失败")
+func (m *sysRoleModel) GetRoleOrganizationId(data entity.SysRole) []int64 {
+ organizationIds := make([]int64, 0)
+ organizationList := make([]entity.OrganizationIdList, 0)
+ err := global.Db.Table("sys_role_organizations").Select("sys_role_organizations.organization_id").Joins("LEFT JOIN sys_organizations on sys_organizations.organization_id=sys_role_organizations.organization_id").Where("role_id = ? ", data.RoleId).Where(" sys_role_organizations.organization_id not in(select sys_organizations.parent_id from sys_role_organizations LEFT JOIN sys_organizations on sys_organizations.organization_id=sys_role_organizations.organization_id where role_id =? )", data.RoleId).Find(&organizationList).Error
+ biz.ErrIsNil(err, "查询角色组织列表失败")
- for i := 0; i < len(deptList); i++ {
- deptIds = append(deptIds, deptList[i].DeptId)
+ for i := 0; i < len(organizationList); i++ {
+ organizationIds = append(organizationIds, organizationList[i].OrganizationId)
}
- return deptIds
+ return organizationIds
}
diff --git a/apps/system/services/role_dept.go b/apps/system/services/role_dept.go
deleted file mode 100644
index 15a6ad1..0000000
--- a/apps/system/services/role_dept.go
+++ /dev/null
@@ -1,43 +0,0 @@
-package services
-
-import (
- "fmt"
- "github.com/PandaXGO/PandaKit/biz"
- "pandax/apps/system/entity"
- "pandax/pkg/global"
-)
-
-type (
- SysRoleDeptModel interface {
- Insert(roleId int64, deptIds []int64) bool
- Delete(rm entity.SysRoleDept)
- }
-
- sysRoleDeptImpl struct {
- table string
- }
-)
-
-var SysRoleDeptModelDao SysRoleDeptModel = &sysRoleDeptImpl{
- table: `sys_role_depts`,
-}
-
-func (m *sysRoleDeptImpl) Insert(roleId int64, deptIds []int64) bool {
- sql := "INSERT INTO sys_role_depts (role_id, dept_id) VALUES "
-
- for i := 0; i < len(deptIds); i++ {
- if len(deptIds)-1 == i {
- //最后一条数据 以分号结尾
- sql += fmt.Sprintf("(%d,%d);", roleId, deptIds[i])
- } else {
- sql += fmt.Sprintf("(%d,%d),", roleId, deptIds[i])
- }
- }
- global.Db.Exec(sql)
- return true
-}
-
-func (m *sysRoleDeptImpl) Delete(rm entity.SysRoleDept) {
- biz.ErrIsNil(global.Db.Table(m.table).Where("role_id = ?", rm.RoleId).Delete(&rm).Error, "删除角色失败")
- return
-}
diff --git a/apps/system/services/role_organization.go b/apps/system/services/role_organization.go
new file mode 100644
index 0000000..fca9874
--- /dev/null
+++ b/apps/system/services/role_organization.go
@@ -0,0 +1,50 @@
+package services
+
+import (
+ "fmt"
+ "github.com/PandaXGO/PandaKit/biz"
+ "pandax/apps/system/entity"
+ "pandax/pkg/global"
+)
+
+type (
+ SysRoleOrganizationModel interface {
+ Insert(roleId int64, organizationIds []int64) bool
+ FindOrganizationsByRoleId(roleId int64) ([]int64, error)
+ Delete(rm entity.SysRoleOrganization)
+ }
+
+ sysRoleOrganizationImpl struct {
+ table string
+ }
+)
+
+var SysRoleOrganizationModelDao SysRoleOrganizationModel = &sysRoleOrganizationImpl{
+ table: `sys_role_organizations`,
+}
+
+func (m *sysRoleOrganizationImpl) Insert(roleId int64, organizationIds []int64) bool {
+ sql := "INSERT INTO sys_role_organizations (role_id, organization_id) VALUES "
+
+ for i := 0; i < len(organizationIds); i++ {
+ if len(organizationIds)-1 == i {
+ //最后一条数据 以分号结尾
+ sql += fmt.Sprintf("(%d,%d);", roleId, organizationIds[i])
+ } else {
+ sql += fmt.Sprintf("(%d,%d),", roleId, organizationIds[i])
+ }
+ }
+ global.Db.Exec(sql)
+ return true
+}
+
+func (m *sysRoleOrganizationImpl) FindOrganizationsByRoleId(roleId int64) ([]int64, error) {
+ var result []int64
+ err := global.Db.Table(m.table).Where("role_id = ?", roleId).Pluck("organization_id", &result).Error
+ return result, err
+}
+
+func (m *sysRoleOrganizationImpl) Delete(rm entity.SysRoleOrganization) {
+ biz.ErrIsNil(global.Db.Table(m.table).Where("role_id = ?", rm.RoleId).Delete(&rm).Error, "删除角色失败")
+ return
+}
diff --git a/apps/system/services/user.go b/apps/system/services/user.go
index f013a0c..3c18773 100644
--- a/apps/system/services/user.go
+++ b/apps/system/services/user.go
@@ -72,8 +72,8 @@ func (m *sysUserModelImpl) FindOne(data entity.SysUser) *entity.SysUserView {
if data.RoleId != 0 {
db = db.Where("role_id = ?", data.RoleId)
}
- if data.DeptId != 0 {
- db = db.Where("dept_id = ?", data.DeptId)
+ if data.OrganizationId != 0 {
+ db = db.Where("organization_id = ?", data.OrganizationId)
}
if data.PostId != 0 {
db = db.Where("post_id = ?", data.PostId)
@@ -87,8 +87,8 @@ func (m *sysUserModelImpl) FindListPage(page, pageSize int, data entity.SysUser)
list := make([]entity.SysUserPage, 0)
var total int64 = 0
offset := pageSize * (page - 1)
- db := global.Db.Table(m.table).Select("sys_users.*,sys_depts.dept_name")
- db = db.Joins("left join sys_depts on sys_depts.dept_id = sys_users.dept_id")
+ db := global.Db.Table(m.table).Select("sys_users.*,sys_organizations.organization_name")
+ db = db.Joins("left join sys_organizations on sys_organizations.organization_id = sys_users.organization_id")
// 此处填写 where参数判断
if data.Username != "" {
db = db.Where("sys_users.username = ?", data.Username)
@@ -104,8 +104,8 @@ func (m *sysUserModelImpl) FindListPage(page, pageSize int, data entity.SysUser)
if data.Phone != "" {
db = db.Where("sys_users.phone like ?", "%"+data.Phone+"%")
}
- if data.DeptId != 0 {
- db = db.Where("sys_users.dept_id = ?", data.DeptId)
+ if data.OrganizationId != 0 {
+ db = db.Where("sys_users.organization_id = ?", data.OrganizationId)
}
db.Where("sys_users.delete_time IS NULL")
err := db.Count(&total).Error
@@ -131,21 +131,22 @@ func (m *sysUserModelImpl) FindList(data entity.SysUser) *[]entity.SysUserView {
}
if data.RoleId != 0 {
- db = db.Where("role_id = ?", data.RoleId)
+ db = db.Where("sys_users.role_id = ?", data.RoleId)
}
- if data.DeptId != 0 {
- db = db.Where("dept_id = ?", data.DeptId)
+ if data.OrganizationId != 0 {
+ db = db.Where("sys_users.organization_id = ?", data.OrganizationId)
}
if data.PostId != 0 {
- db = db.Where("post_id = ?", data.PostId)
+ db = db.Where("sys_users.post_id = ?", data.PostId)
}
if data.Status != "" {
- db = db.Where("status = ?", data.Status)
+ db = db.Where("sys_users.status = ?", data.Status)
}
db.Where("sys_users.delete_time IS NULL")
- biz.ErrIsNil(db.Find(&list).Error, "查询用户列表失败")
+
+ biz.ErrIsNilAppendErr(db.Find(&list).Error, "查询用户列表失败")
return &list
}
diff --git a/apps/video/api/ys.go b/apps/video/api/ys.go
index cc04285..7186636 100644
--- a/apps/video/api/ys.go
+++ b/apps/video/api/ys.go
@@ -19,7 +19,7 @@ func (j *YsApi) GetDeviceList(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: devices,
}
}
diff --git a/deploy/redis/conf/redis.conf b/deploy/redis/conf/redis.conf
index a295253..bbd1f62 100644
--- a/deploy/redis/conf/redis.conf
+++ b/deploy/redis/conf/redis.conf
@@ -1933,11 +1933,11 @@ hash-max-listpack-value 64
list-max-listpack-size -2
# Lists may also be compressed.
-# Compress depth is the number of quicklist ziplist nodes from *each* side of
+# Compress organizationh is the number of quicklist ziplist nodes from *each* side of
# the list to *exclude* from compression. The head and tail of the list
# are always uncompressed for fast push/pop operations. Settings are:
# 0: disable all list compression
-# 1: depth 1 means "don't start compressing until after 1 node into the list,
+# 1: organizationh 1 means "don't start compressing until after 1 node into the list,
# going from either the head or tail"
# So: [head]->node->node->...->node->[tail]
# [head], [tail] will always be uncompressed; inner nodes will compress.
@@ -1946,7 +1946,7 @@ list-max-listpack-size -2
# but compress all nodes between them.
# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]
# etc.
-list-compress-depth 0
+list-compress-organizationh 0
# Sets have a special encoding in just one case: when a set is composed
# of just strings that happen to be integers in radix 10 in the range
diff --git a/fatal.log b/fatal.log
index dbf1342..d28e974 100644
--- a/fatal.log
+++ b/fatal.log
@@ -216,3 +216,45 @@ pandax/iothub.(*HookService).handleOne.func1()
D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work.go:61 +0x37f
created by pandax/iothub.(*HookService).handleOne
D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work.go:33 +0xa5
+
+2023-09-14 08:57:51--------------------------------
+
+2023-09-14 10:48:04--------------------------------
+
+2023-09-14 11:22:33--------------------------------
+
+2023-09-14 11:25:57--------------------------------
+
+2023-09-14 11:29:25--------------------------------
+
+2023-09-14 11:32:45--------------------------------
+
+2023-09-14 14:01:33--------------------------------
+
+2023-09-14 15:15:13--------------------------------
+
+2023-09-14 15:43:21--------------------------------
+
+2023-09-14 15:43:53--------------------------------
+
+2023-09-14 15:45:44--------------------------------
+
+2023-09-14 15:48:55--------------------------------
+
+2023-09-14 15:51:40--------------------------------
+
+2023-09-14 15:52:32--------------------------------
+
+2023-09-14 16:06:33--------------------------------
+
+2023-09-14 16:13:58--------------------------------
+
+2023-09-14 16:16:13--------------------------------
+
+2023-09-14 16:21:06--------------------------------
+
+2023-09-14 16:45:25--------------------------------
+
+2023-09-14 17:03:46--------------------------------
+
+2023-09-14 17:16:48--------------------------------
diff --git a/go.mod b/go.mod
index 9fd0b1a..22eb376 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module pandax
go 1.18
require (
- github.com/PandaXGO/PandaKit v0.0.0-20230901074047-e0e8e4bf2bed
+ github.com/PandaXGO/PandaKit v0.0.0-20230914055936-853aa978dda1
github.com/Shopify/sarama v1.38.1
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/didip/tollbooth v4.0.2+incompatible
@@ -37,7 +37,6 @@ require (
require (
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect
github.com/StackExchange/wmi v0.0.0-20210224194228-fe8f1750fd46 // indirect
- github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect
github.com/aliyun/aliyun-oss-go-sdk v2.2.0+incompatible // indirect
github.com/bluenviron/mediacommon v0.7.0 // indirect
github.com/brianvoe/gofakeit/v6 v6.0.2 // indirect
diff --git a/go.sum b/go.sum
index a9ffa24..34dee41 100644
--- a/go.sum
+++ b/go.sum
@@ -5,8 +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/PandaXGO/PandaKit v0.0.0-20230914055936-853aa978dda1 h1:LfDtQriNZcP4Ksx/d2d5kLC4C/SemkMSxQuQZOVuiFw=
+github.com/PandaXGO/PandaKit v0.0.0-20230914055936-853aa978dda1/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=
@@ -14,10 +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/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
-github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
-github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=
-github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
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=
@@ -716,7 +712,6 @@ golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
@@ -802,7 +797,6 @@ gorm.io/plugin/dbresolver v1.1.0/go.mod h1:tpImigFAEejCALOttyhWqsy4vfa2Uh/vAUVnL
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
m7s.live/engine/v4 v4.13.8 h1:pDl8YWxip5aTidw2Q4NuU+8A6irBraLRfoeBi42S6iQ=
m7s.live/engine/v4 v4.13.8/go.mod h1:k/6iFSuJxmhJL8VO45NAga8BbgZHLLfRXOwCcCzk2s8=
m7s.live/plugin/gb28181/v4 v4.3.9 h1:EDvozinlQbXsby5L+1/cxnmo+HnlQlm8JJ6rYEwOvO4=
diff --git a/iothub/hook_message_work.go b/iothub/hook_message_work.go
index f16fe85..3736823 100644
--- a/iothub/hook_message_work.go
+++ b/iothub/hook_message_work.go
@@ -125,6 +125,7 @@ func buildRuleMessage(etoken *tool.DeviceAuth, dei *DeviceEventInfo, msgType str
"deviceName": etoken.Name,
"deviceType": etoken.DeviceType,
"productId": etoken.ProductId,
+ "orgId": etoken.OrgId,
}
msgVals := make(map[string]interface{})
json.Unmarshal([]byte(dei.Datas), &msgVals)
diff --git a/panda_log.log b/panda_log.log
index 87ddd32..c6320a6 100644
--- a/panda_log.log
+++ b/panda_log.log
@@ -277,7 +277,7 @@
2023-09-08 08:27:48.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->10ms
2023-09-08 08:43:11.002 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/notice/list] [uid=1] [uname=panda] : 获取通知分页列表 ->14ms
2023-09-08 10:06:04.902 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
-2023-09-08 10:06:04.910 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dept/list] : 获取部门列表 ->6ms
+2023-09-08 10:06:04.910 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/list] : 获取组织列表 ->6ms
2023-09-08 13:55:41.046 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/list] [uid=1] [uname=panda] : 获取Device分页列表 ->40ms
2023-09-08 13:55:41.046 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->12ms
2023-09-08 13:55:41.048 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->3ms
@@ -816,3 +816,704 @@
2023-09-13 17:44:02.393 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update"]
2023-09-13 17:44:02.774 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$hw/events/device/s7-device/twin/update"]
2023-09-13 17:44:03.091 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"v1/devices/me/rpc/request/+"]
+2023-09-14 08:57:51.223 [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-14 08:57:51.228 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 08:57:51.231 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 08:57:51.231 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 08:57:51.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 08:57:51.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 08:57:51.240 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 08:57:51.245 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 08:57:51 [INFO] JobCore start success.
+2023-09-14 08:57:51.246 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 08:57:51.248 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 08:58:22.357 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 08:58:22.362 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 08:58:23.072 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update"]
+2023-09-14 08:58:23.353 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$hw/events/device/s7-device/twin/update"]
+2023-09-14 08:58:23.615 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"v1/devices/me/rpc/request/+"]
+2023-09-14 09:10:41.275 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->77ms
+2023-09-14 09:10:41.302 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->18ms
+2023-09-14 09:10:58.845 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 09:10:58.851 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 ->16ms
+2023-09-14 09:10:58.852 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/category/list/tree/label] [uid=1] : 获取ProductCategory树 ->4ms
+2023-09-14 09:10:58.907 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms
+2023-09-14 09:11:00.937 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->34ms
+2023-09-14 09:29:52.387 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 09:29:57.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 09:29:57.012 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 09:29:57.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 09:52:27.030 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 09:52:31.992 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 09:52:31.995 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 09:52:32.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:01:32.003 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 10:01:36.997 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 10:01:37.000 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:01:37.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:10:37.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 10:10:42.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 10:10:42.010 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:10:42.035 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:22:42.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 10:22:47.009 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 10:22:47.012 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:22:47.028 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:36:27.720 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/auth] [uid=1] [uname=panda] : 认证信息 ->37ms
+2023-09-14 10:36:33.180 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->10ms
+2023-09-14 10:36:33.185 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 10:36:35.268 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/roleDeptTreeSelect/1] [uid=1] [uname=panda] : 获取角色组织树 ->8ms
+2023-09-14 10:36:35.279 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->11ms
+2023-09-14 10:37:47.026 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 10:37:52.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 10:37:52.012 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:37:52.030 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:43:52.018 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 10:43:57.004 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 10:43:57.007 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:43:57.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 10:47:57.092 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 10:48:04.821 [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-14 10:48:04.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 10:48:04.829 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 10:48:04.829 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 10:48:04.836 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 10:48:04.836 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 10:48:04.837 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 10:48:04.841 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 10:48:04 [INFO] JobCore start success.
+2023-09-14 10:48:09.158 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 10:48:09.161 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 10:48:12.944 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->9ms
+2023-09-14 10:48:13.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/all] [uid=1] : 获取所有api ->8ms
+2023-09-14 10:48:34.605 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [POST=/system/role] [uid=1] [uname=panda] : 添加角色信息
+<-e errCode: 400, errMsg: 存在相同api,添加失败,请联系管理员
+2023-09-14 11:21:27.035 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 11:21:32.002 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 11:21:32.004 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:21:32.024 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 11:22:26.438 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 11:22:33.636 [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-14 11:22:33.640 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 11:22:33.642 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 11:22:33.643 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 11:22:33.649 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 11:22:33.650 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 11:22:33.650 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 11:22:33.654 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 11:22:33 [INFO] JobCore start success.
+2023-09-14 11:22:38.505 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 11:22:38.508 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 11:22:38.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:22:53.322 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->8ms
+2023-09-14 11:22:53.381 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->4ms
+2023-09-14 11:23:28.638 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->29ms
+2023-09-14 11:23:28.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->6ms
+2023-09-14 11:23:32.610 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->6ms
+2023-09-14 11:23:32.622 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/1] [uid=1] : 获取角色菜单树 ->11ms
+2023-09-14 11:23:32.626 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->8ms
+2023-09-14 11:23:32.683 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/getPolicyPathByRoleId] [uid=1] : 获取角色拥有的api权限 ->6ms
+2023-09-14 11:23:35.363 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->28ms
+2023-09-14 11:23:35.375 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->9ms
+2023-09-14 11:24:07.860 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/role] [uid=1] [uname=panda] : 添加角色信息 ->609ms
+2023-09-14 11:24:07.895 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->7ms
+2023-09-14 11:25:48.777 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 11:25:57.333 [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-14 11:25:57.338 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 11:25:57.340 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 11:25:57.340 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 11:25:57.350 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 11:25:57.350 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 11:25:57.350 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 11:25:57.355 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 11:25:57 [INFO] JobCore start success.
+2023-09-14 11:26:00.846 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 11:26:00.848 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 11:26:00.850 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:26:35.528 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [DELETE=/system/role/4] : 删除角色信息
+<-e errCode: 400, errMsg: 查询用户列表失败
+2023-09-14 11:26:45.135 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->8ms
+2023-09-14 11:26:45.150 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->15ms
+2023-09-14 11:27:33.630 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [DELETE=/system/role/4] : 删除角色信息
+<-e errCode: 400, errMsg: 查询用户列表失败
+2023-09-14 11:28:09.493 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [DELETE=/system/role/4] [uid=1] : 删除角色信息
+<-e errCode: 400, errMsg: 查询用户列表失败
+2023-09-14 11:29:18.923 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 11:29:25.313 [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-14 11:29:25.318 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 11:29:25.320 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 11:29:25.320 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 11:29:25.328 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 11:29:25.328 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 11:29:25.328 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 11:29:25.333 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 11:29:25 [INFO] JobCore start success.
+2023-09-14 11:29:25.484 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 11:29:25.485 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 11:29:25.487 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:29:31.488 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [DELETE=/system/role/4] : 删除角色信息
+<-e errCode: 400, errMsg: 查询用户列表失败%!(EXTRA string=Error 1052 (23000): Column 'role_id' in where clause is ambiguous)
+2023-09-14 11:30:28.636 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [DELETE=/system/role/4] : 删除角色信息
+<-e errCode: 400, errMsg: 查询用户列表失败%!(EXTRA string=Error 1052 (23000): Column 'role_id' in where clause is ambiguous)
+2023-09-14 11:32:38.401 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 11:32:45.460 [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-14 11:32:45.465 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 11:32:45.466 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 11:32:45.466 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 11:32:45.474 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 11:32:45.474 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 11:32:45.475 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 11:32:45.482 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 11:32:45 [INFO] JobCore start success.
+2023-09-14 11:32:50.459 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 11:32:50.460 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 11:32:50.464 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:33:32.017 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 11:33:37.009 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 11:33:37.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:33:37.035 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 11:33:38.554 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [DELETE=/system/role/4] [uid=1] [uname=panda] : 删除角色信息 ->288ms
+2023-09-14 11:33:38.583 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->6ms
+2023-09-14 11:34:12.162 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->13ms
+2023-09-14 11:34:12.177 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->13ms
+2023-09-14 11:34:44.642 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/role] : 添加角色信息 ->456ms
+2023-09-14 11:34:44.674 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->7ms
+2023-09-14 11:34:56.136 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/roleDeptTreeSelect/5] : 获取角色组织树 ->9ms
+2023-09-14 11:34:56.142 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/5] : 获取角色信息 ->7ms
+2023-09-14 11:36:02.955 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->12ms
+2023-09-14 11:36:02.960 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 11:36:08.718 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/roleDeptTreeSelect/5] : 获取角色组织树 ->12ms
+2023-09-14 11:36:08.724 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/5] [uid=1] : 获取角色信息 ->7ms
+2023-09-14 11:36:44.676 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/5] : 获取角色菜单树 ->10ms
+2023-09-14 11:36:44.680 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->5ms
+2023-09-14 11:36:44.690 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/5] : 获取角色信息 ->8ms
+2023-09-14 11:36:44.791 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/getPolicyPathByRoleId] [uid=1] [uname=panda] : 获取角色拥有的api权限 ->5ms
+2023-09-14 11:36:47.142 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->5ms
+2023-09-14 11:36:47.152 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/all] : 获取所有api ->9ms
+2023-09-14 11:37:21.478 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/list] [uid=1] : 获取组织列表 ->3ms
+2023-09-14 11:37:21.495 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->12ms
+2023-09-14 11:37:23.605 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 11:37:23.611 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->4ms
+2023-09-14 11:37:28.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/list] [uid=1] [uname=panda] : 获取组织列表 ->2ms
+2023-09-14 11:42:37.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 11:42:42.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 11:42:42.024 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:42:42.038 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 11:50:35.350 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->14ms
+2023-09-14 11:50:35.355 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 11:50:37.002 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->8ms
+2023-09-14 11:50:37.013 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/all] [uid=1] [uname=panda] : 获取所有api ->6ms
+2023-09-14 11:50:52.553 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表 ->11ms
+2023-09-14 11:50:52.555 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->5ms
+2023-09-14 11:50:52.566 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 11:50:52.574 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 11:50:53.881 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->5ms
+2023-09-14 11:50:53.890 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 11:50:53.903 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 11:50:53.916 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/getInit] [uid=1] : 获取初始化角色岗位信息(添加用户初始化) ->12ms
+2023-09-14 11:51:33.054 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->25ms
+2023-09-14 11:51:33.057 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->18ms
+2023-09-14 11:57:42.037 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 11:57:47.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 11:57:47.017 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 11:57:47.038 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:178] : d_1928b99619910dae5a001fa7订阅了[name:"$dz/events/device/s7-device/data/update" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"]
+2023-09-14 12:12:47.034 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 12:12:51.988 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号d_1928b99619910dae5a001fa7,密码YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证
+2023-09-14 12:12:51.991 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 12:14:21.994 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : d_1928b99619910dae5a001fa7断开连接
+2023-09-14 13:47:46.407 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/list] [uid=1] : 获取组织列表 ->6ms
+2023-09-14 13:47:46.417 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 13:48:06.814 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 13:48:06.825 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->8ms
+2023-09-14 13:48:09.056 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/roleDeptTreeSelect/5] : 获取角色组织树 ->10ms
+2023-09-14 13:48:09.065 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/5] : 获取角色信息 ->10ms
+2023-09-14 13:54:56.982 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 14:01:33.423 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 14:01:33.429 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 14:01:33.431 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 14:01:33.431 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 14:01:33.439 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 14:01:33.439 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 14:01:33.440 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 14:01:33.445 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:83] : 2023-09-14 14:01:33 [INFO] JobCore start success.
+2023-09-14 14:01:33.446 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 14:01:33.449 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 14:02:08.829 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:02:08.832 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->8ms
+2023-09-14 14:03:11.980 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:03:11.995 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->10ms
+2023-09-14 14:03:28.392 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->29ms
+2023-09-14 14:03:28.399 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 14:03:28.632 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->17ms
+2023-09-14 14:03:28.643 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 14:04:15.283 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms
+2023-09-14 14:04:15.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->37ms
+2023-09-14 14:04:15.335 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:04:15.354 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:04:21.040 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/system/organization/list] : 获取组织列表
+<-e errCode: 403, errMsg: 没有API接口访问权限,请联系管理员
+2023-09-14 14:04:21.056 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:04:46.727 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->4ms
+2023-09-14 14:04:46.734 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:04:46.742 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:04:46.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:04:56.966 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->5ms
+2023-09-14 14:04:56.973 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 14:04:56.983 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:04:56.993 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:04:57.001 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:05:07.311 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/menu] [uid=1] [uname=panda] : 修改菜单信息 ->290ms
+2023-09-14 14:05:07.358 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->9ms
+2023-09-14 14:05:07.378 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->8ms
+2023-09-14 14:05:15.336 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms
+2023-09-14 14:05:15.343 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 14:05:15.353 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:05:15.362 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:15.370 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:20.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/menu] [uid=1] : 修改菜单信息 ->276ms
+2023-09-14 14:05:20.615 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms
+2023-09-14 14:05:20.630 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->4ms
+2023-09-14 14:05:23.972 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->6ms
+2023-09-14 14:05:23.978 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:05:23.989 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:23.996 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:24.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 14:05:26.341 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/menu] : 修改菜单信息 ->124ms
+2023-09-14 14:05:26.377 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->5ms
+2023-09-14 14:05:26.391 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->6ms
+2023-09-14 14:05:29.881 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/menuTreeSelect] : 获取菜单树 ->4ms
+2023-09-14 14:05:29.892 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:05:29.900 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:29.911 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:29.919 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:05:32.349 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/menu] : 修改菜单信息 ->128ms
+2023-09-14 14:05:32.384 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->8ms
+2023-09-14 14:05:32.399 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->7ms
+2023-09-14 14:05:35.612 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:05:35.623 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->8ms
+2023-09-14 14:05:39.741 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->10ms
+2023-09-14 14:05:42.553 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:05:53.900 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/api] [uid=1] [uname=panda] : 修改api信息 ->642ms
+2023-09-14 14:05:53.934 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->12ms
+2023-09-14 14:05:57.866 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:06:06.213 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/api] [uid=1] [uname=panda] : 修改api信息 ->376ms
+2023-09-14 14:06:06.248 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/list] [uid=1] : 获取api分页列表 ->9ms
+2023-09-14 14:06:09.137 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:06:35.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/api] : 修改api信息 ->394ms
+2023-09-14 14:06:35.096 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->11ms
+2023-09-14 14:06:44.305 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:06:50.879 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/api] [uid=1] : 修改api信息 ->267ms
+2023-09-14 14:06:50.914 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->11ms
+2023-09-14 14:06:53.771 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:07:05.867 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/api] [uid=1] [uname=panda] : 修改api信息 ->495ms
+2023-09-14 14:07:05.898 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->8ms
+2023-09-14 14:07:08.252 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:07:17.856 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/api] : 修改api信息 ->416ms
+2023-09-14 14:07:17.887 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/list] : 获取api分页列表 ->10ms
+2023-09-14 14:07:19.806 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:07:28.308 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/api] : 修改api信息 ->367ms
+2023-09-14 14:07:28.412 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/api/list] [uid=1] [uname=panda] : 获取api分页列表 ->18ms
+2023-09-14 14:07:29.918 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->3ms
+2023-09-14 14:07:41.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/api] [uid=1] [uname=panda] : 修改api信息 ->446ms
+2023-09-14 14:07:41.640 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/list] [uid=1] : 获取api分页列表 ->10ms
+2023-09-14 14:07:44.097 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->7ms
+2023-09-14 14:07:44.101 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->3ms
+2023-09-14 14:07:46.977 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/roleMenuTreeSelect/1] : 获取角色菜单树 ->10ms
+2023-09-14 14:07:46.981 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/all] [uid=1] : 获取所有api ->5ms
+2023-09-14 14:07:46.993 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->10ms
+2023-09-14 14:07:47.104 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/api/getPolicyPathByRoleId] : 获取角色拥有的api权限 ->6ms
+2023-09-14 14:08:07.518 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/system/role] [uid=1] [uname=panda] : 修改角色信息 ->931ms
+2023-09-14 14:08:07.553 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->7ms
+2023-09-14 14:08:23.610 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->71ms
+2023-09-14 14:08:23.635 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->17ms
+2023-09-14 14:08:24.180 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->10ms
+2023-09-14 14:08:24.193 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->16ms
+2023-09-14 14:08:30.826 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->21ms
+2023-09-14 14:08:30.830 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:08:38.252 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->7ms
+2023-09-14 14:08:38.259 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 14:08:38.267 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:08:38.275 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:09:37.537 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/menu/list] : 获取菜单列表 ->15ms
+2023-09-14 14:09:37.563 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->27ms
+2023-09-14 14:09:37.582 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->13ms
+2023-09-14 14:09:37.597 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->11ms
+2023-09-14 14:09:41.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 14:09:41.614 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/list] [uid=1] : 获取组织列表 ->3ms
+2023-09-14 14:10:19.850 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表
+<-e errCode: 400, errMsg: 查询用户分页列表失败
+2023-09-14 14:10:19.862 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 14:10:19.871 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->6ms
+2023-09-14 14:10:19.941 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->54ms
+2023-09-14 14:10:24.854 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:10:24.868 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->10ms
+2023-09-14 14:10:26.462 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 14:10:26.477 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表
+<-e errCode: 400, errMsg: 查询用户分页列表失败
+2023-09-14 14:10:26.488 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->5ms
+2023-09-14 14:10:26.504 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:10:49.691 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->8ms
+2023-09-14 14:10:49.695 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:10:50.743 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:10:50.753 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表 ->8ms
+2023-09-14 14:10:50.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->4ms
+2023-09-14 14:10:50.765 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:10:54.920 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/organizationTree] [uid=1] [uname=panda] : 获取所有组织树 ->6ms
+2023-09-14 14:10:54.980 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->46ms
+2023-09-14 14:10:55.004 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getInit] : 获取初始化角色岗位信息(添加用户初始化) ->17ms
+2023-09-14 14:10:55.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:11:42.173 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/log/logOper/list] [uid=1] : 获取操作日志列表 ->12ms
+2023-09-14 14:11:42.181 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:11:42.190 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:50:38.480 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/list] [uid=1] [uname=panda] : 得到用户分页列表 ->10ms
+2023-09-14 14:50:38.483 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/organizationTree] [uid=1] [uname=panda] : 获取所有组织树 ->3ms
+2023-09-14 14:50:38.493 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:50:38.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:50:39.907 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->3ms
+2023-09-14 14:50:39.917 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:50:39.926 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:50:39.936 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getInit] [uid=1] [uname=panda] : 获取初始化角色岗位信息(添加用户初始化) ->7ms
+2023-09-14 14:52:02.386 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getInit] [uid=1] [uname=panda] : 获取初始化角色岗位信息(添加用户初始化) ->9ms
+2023-09-14 14:52:02.389 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->4ms
+2023-09-14 14:52:02.405 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:52:02.416 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 14:52:12.751 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getInit] [uid=1] [uname=panda] : 获取初始化角色岗位信息(添加用户初始化) ->9ms
+2023-09-14 14:52:12.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:52:12.766 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:52:12.774 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->3ms
+2023-09-14 14:52:42.454 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/getInit] [uid=1] : 获取初始化角色岗位信息(添加用户初始化) ->12ms
+2023-09-14 14:52:42.457 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->7ms
+2023-09-14 14:52:42.474 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 14:52:42.484 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 14:54:21.066 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getInit] : 获取初始化角色岗位信息(添加用户初始化) ->13ms
+2023-09-14 14:54:21.084 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 14:54:21.095 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->7ms
+2023-09-14 14:54:21.098 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 14:58:09.696 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->5ms
+2023-09-14 14:58:09.715 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getInit] [uid=1] [uname=panda] : 获取初始化角色岗位信息(添加用户初始化) ->15ms
+2023-09-14 14:58:09.722 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->11ms
+2023-09-14 14:58:09.744 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->11ms
+2023-09-14 14:58:34.093 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getInit] : 获取初始化角色岗位信息(添加用户初始化) ->11ms
+2023-09-14 14:58:34.094 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->3ms
+2023-09-14 14:58:34.106 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:58:34.112 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 14:58:50.495 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/system/user] : 添加用户信息 ->169ms
+2023-09-14 14:58:50.533 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表 ->12ms
+2023-09-14 14:58:59.858 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->6ms
+2023-09-14 14:58:59.864 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getById/6] [uid=1] [uname=panda] : 获取用户信息 ->22ms
+2023-09-14 14:58:59.868 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:58:59.876 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 14:59:29.771 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->6ms
+2023-09-14 14:59:29.785 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:59:29.796 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:59:29.809 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/getById/6] [uid=1] [uname=panda] : 获取用户信息 ->20ms
+2023-09-14 14:59:36.625 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 14:59:36.641 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/list] [uid=1] [uname=panda] : 得到用户分页列表 ->12ms
+2023-09-14 14:59:36.645 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/organizationTree] [uid=1] [uname=panda] : 获取所有组织树 ->4ms
+2023-09-14 14:59:36.665 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:59:40.966 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 14:59:40.976 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/organizationTree] [uid=1] [uname=panda] : 获取所有组织树 ->5ms
+2023-09-14 14:59:40.985 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 14:59:41.013 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getById/6] : 获取用户信息 ->23ms
+2023-09-14 15:00:11.944 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getInit] : 获取初始化角色岗位信息(添加用户初始化) ->11ms
+2023-09-14 15:00:11.947 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->5ms
+2023-09-14 15:00:11.961 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 15:00:11.971 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:00:18.867 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getInit] : 获取初始化角色岗位信息(添加用户初始化) ->10ms
+2023-09-14 15:00:18.881 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->4ms
+2023-09-14 15:00:18.894 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->10ms
+2023-09-14 15:00:18.900 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 15:00:30.598 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->5ms
+2023-09-14 15:00:30.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/getById/5] [uid=1] : 获取用户信息 ->29ms
+2023-09-14 15:00:30.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 15:00:30.618 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 15:00:35.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/organizationTree] [uid=1] : 获取所有组织树 ->4ms
+2023-09-14 15:00:35.052 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 15:00:35.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getById/6] : 获取用户信息 ->27ms
+2023-09-14 15:00:35.063 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 15:15:05.642 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:15:13.713 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:15:13.723 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:15:13.726 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:15:13.726 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:15:13.737 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:15:13.737 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:15:13.739 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:15:13.745 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:15:13 [INFO] JobCore start success.
+2023-09-14 15:15:17.708 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:15:17.710 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:15:17.712 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:15:22.244 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->8ms
+2023-09-14 15:15:22.250 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:15:23.493 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:15:23.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/user/list] [uid=1] [uname=panda] : 得到用户分页列表 ->11ms
+2023-09-14 15:15:23.513 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->5ms
+2023-09-14 15:15:23.526 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:15:25.473 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:15:25.483 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/api/list] [uid=1] : 获取api分页列表 ->8ms
+2023-09-14 15:15:26.782 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 15:15:26.791 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/menu/list] [uid=1] [uname=panda] : 获取菜单列表 ->5ms
+2023-09-14 15:15:26.798 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 15:15:26.808 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 15:15:34.902 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->4ms
+2023-09-14 15:15:34.904 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 ->15ms
+2023-09-14 15:15:34.911 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 15:15:34.948 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms
+2023-09-14 15:15:37.070 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 15:15:37.091 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->4ms
+2023-09-14 15:15:37.102 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->26ms
+2023-09-14 15:15:37.110 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list/all] [uid=1] : 获取Product分页列表 ->14ms
+2023-09-14 15:15:52.340 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [GET=/video/ys/device/list] [uid=1] [uname=panda] : 获取设备列表
+<-e errCode: 400, errMsg: 设备列表获取失败,可能萤石Token过期,请联系管理员。。
+2023-09-14 15:43:13.616 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:43:21.133 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:43:21.139 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:43:21.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:43:21.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:43:21.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:43:21.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:43:21.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:43:21.156 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:43:21 [INFO] JobCore start success.
+2023-09-14 15:43:25.691 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:43:25.694 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:43:53.323 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:43:53.328 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:43:53.331 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:43:53.331 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:43:53.338 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:43:53.338 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:43:53.339 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:43:53.343 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:43:53 [INFO] JobCore start success.
+2023-09-14 15:43:57.455 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:43:57.456 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:43:57.458 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:44:00.633 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->4ms
+2023-09-14 15:44:00.655 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->18ms
+2023-09-14 15:44:00.656 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 15:44:00.663 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->42ms
+2023-09-14 15:45:37.406 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:45:44.187 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:45:44.193 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:45:44.196 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:45:44.196 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:45:44.203 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:45:44.203 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:45:44.204 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:45:44.208 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:45:44 [INFO] JobCore start success.
+2023-09-14 15:45:44.478 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:45:44.481 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:45:44.484 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:45:50.480 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list] [uid=1] : 获取DeviceGroup列表 ->4ms
+2023-09-14 15:45:50.487 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 15:45:51.855 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->49ms
+2023-09-14 15:45:51.874 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->5ms
+2023-09-14 15:45:51.888 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->10ms
+2023-09-14 15:45:51.897 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->41ms
+2023-09-14 15:48:47.119 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:48:55.593 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:48:55.599 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:48:55.601 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:48:55.601 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:48:55.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:48:55.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:48:55.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:48:55.614 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:48:55 [INFO] JobCore start success.
+2023-09-14 15:48:59.181 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:48:59.183 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:48:59.186 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:49:04.182 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list] [uid=1] [uname=panda] : 获取DeviceGroup列表 ->4ms
+2023-09-14 15:49:04.190 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms
+2023-09-14 15:49:06.677 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 15:49:06.691 [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-14 15:49:06.706 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->11ms
+2023-09-14 15:49:06.717 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->39ms
+2023-09-14 15:51:32.201 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:51:40.675 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:51:40.681 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:51:40.683 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:51:40.683 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:51:40.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:51:40.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:51:40.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:51:40.698 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:51:40 [INFO] JobCore start success.
+2023-09-14 15:51:44.265 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:51:44.266 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:51:44.268 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:51:45.946 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 15:51:45.954 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list] : 获取DeviceGroup列表 ->6ms
+2023-09-14 15:51:46.947 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 15:51:46.963 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list/tree/label] [uid=1] : 获取DeviceGroup树 ->4ms
+2023-09-14 15:51:46.974 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->23ms
+2023-09-14 15:51:46.980 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->12ms
+2023-09-14 15:52:25.111 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 15:52:32.340 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 15:52:32.347 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 15:52:32.349 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 15:52:32.349 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 15:52:32.357 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 15:52:32.357 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 15:52:32.357 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 15:52:32.364 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 15:52:32 [INFO] JobCore start success.
+2023-09-14 15:52:37.197 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 15:52:37.199 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 15:52:37.201 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 15:52:38.906 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list] : 获取DeviceGroup列表 ->7ms
+2023-09-14 15:52:38.941 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->22ms
+2023-09-14 15:52:41.267 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 15:52:41.283 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->3ms
+2023-09-14 15:52:41.297 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->11ms
+2023-09-14 15:52:41.297 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/list] [uid=1] [uname=panda] : 获取Device分页列表 ->28ms
+2023-09-14 16:06:33.620 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 16:06:33.625 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 16:06:33.627 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 16:06:33.627 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 16:06:33.636 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 16:06:33.636 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 16:06:33.637 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 16:06:33.642 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 16:06:33 [INFO] JobCore start success.
+2023-09-14 16:06:37.351 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 16:06:37.353 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 16:06:50.234 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 16:06:50.244 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->8ms
+2023-09-14 16:06:53.427 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/roleOrganizationTreeSelect/1] : 获取角色组织树 ->10ms
+2023-09-14 16:06:53.435 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->9ms
+2023-09-14 16:06:59.109 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/role/dataScope] : 修改角色组织权限 ->357ms
+2023-09-14 16:06:59.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->8ms
+2023-09-14 16:07:23.847 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/1] [uid=1] [uname=panda] : 获取角色信息 ->10ms
+2023-09-14 16:07:23.852 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/organization/roleOrganizationTreeSelect/1] [uid=1] [uname=panda] : 获取角色组织树 ->8ms
+2023-09-14 16:07:28.563 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/role/dataScope] [uid=1] : 修改角色组织权限 ->208ms
+2023-09-14 16:07:28.599 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->8ms
+2023-09-14 16:07:49.202 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/list] : 得到用户分页列表 ->9ms
+2023-09-14 16:07:49.206 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->4ms
+2023-09-14 16:07:49.218 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->7ms
+2023-09-14 16:07:49.229 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 16:07:52.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->4ms
+2023-09-14 16:07:52.156 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 16:07:52.166 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms
+2023-09-14 16:07:52.190 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/getById/1] [uid=1] : 获取用户信息 ->19ms
+2023-09-14 16:08:11.843 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/organizationTree] : 获取所有组织树 ->5ms
+2023-09-14 16:08:11.847 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/getById/1] : 获取用户信息 ->19ms
+2023-09-14 16:08:11.856 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 16:08:11.866 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 16:13:19.610 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 16:13:58.901 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 16:13:58.908 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 16:13:58.910 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 16:13:58.910 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 16:13:58.919 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 16:13:58.919 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 16:13:58.919 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 16:13:58.925 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 16:13:58 [INFO] JobCore start success.
+2023-09-14 16:13:58.926 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 16:13:58.928 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 16:14:05.532 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/list] : 获取角色分页列表 ->20ms
+2023-09-14 16:14:05.536 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->9ms
+2023-09-14 16:14:07.364 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/1] [uid=1] : 获取角色信息 ->12ms
+2023-09-14 16:14:07.369 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/organization/roleOrganizationTreeSelect/1] : 获取角色组织树 ->7ms
+2023-09-14 16:14:10.704 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/role/dataScope] : 修改角色组织权限 ->254ms
+2023-09-14 16:14:10.734 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->7ms
+2023-09-14 16:16:05.708 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 16:16:13.468 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 16:16:13.473 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 16:16:13.477 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 16:16:13.477 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 16:16:13.485 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 16:16:13.485 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 16:16:13.486 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 16:16:13.491 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 16:16:13 [INFO] JobCore start success.
+2023-09-14 16:16:16.027 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/roleOrganizationTreeSelect/1] [uid=1] : 获取角色组织树 ->9ms
+2023-09-14 16:16:16.036 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/1] : 获取角色信息 ->11ms
+2023-09-14 16:16:17.768 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 16:16:17.770 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 16:16:17.774 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 16:16:19.605 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [PUT=/system/role/dataScope] [uid=1] : 修改角色组织权限 ->210ms
+2023-09-14 16:16:19.640 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/role/list] [uid=1] [uname=panda] : 获取角色分页列表 ->7ms
+2023-09-14 16:20:58.936 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 16:21:06.504 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 16:21:06.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 16:21:06.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 16:21:06.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 16:21:06.520 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 16:21:06.521 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 16:21:06.521 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 16:21:06.525 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 16:21:06 [INFO] JobCore start success.
+2023-09-14 16:21:06.812 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/role/1] : 获取角色信息 ->8ms
+2023-09-14 16:21:06.819 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/organization/roleOrganizationTreeSelect/1] [uid=1] : 获取角色组织树 ->8ms
+2023-09-14 16:21:10.999 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 16:21:11.001 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 16:21:11.003 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 16:21:12.823 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/system/role/dataScope] : 修改角色组织权限 ->206ms
+2023-09-14 16:21:12.856 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/role/list] [uid=1] : 获取角色分页列表 ->12ms
+2023-09-14 16:44:20.457 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 16:45:25.494 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 16:45:25.499 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 16:45:25.501 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 16:45:25.501 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 16:45:25.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 16:45:25.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 16:45:25.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 16:45:25.515 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 16:45:25 [INFO] JobCore start success.
+2023-09-14 16:45:25.517 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 16:45:25.519 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 16:45:28.461 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->4ms
+2023-09-14 16:45:28.487 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->10ms
+2023-09-14 16:45:28.489 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms
+2023-09-14 16:45:28.495 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->29ms
+2023-09-14 16:46:00.548 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list] [uid=1] : 获取DeviceGroup列表 ->28ms
+2023-09-14 16:46:00.579 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->25ms
+2023-09-14 16:46:01.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms
+2023-09-14 16:46:01.678 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->5ms
+2023-09-14 16:46:01.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->26ms
+2023-09-14 16:46:01.692 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->12ms
+2023-09-14 17:03:46.773 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 17:03:46.779 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 17:03:46.781 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 17:03:46.781 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 17:03:46.789 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 17:03:46.790 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 17:03:46.790 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 17:03:46.795 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 17:03:46 [INFO] JobCore start success.
+2023-09-14 17:03:47.704 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 17:03:47.705 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 17:03:47.709 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 17:03:59.276 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/list] : 获取表列表 ->13ms
+2023-09-14 17:09:36.880 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/list] : 获取表列表 ->77ms
+2023-09-14 17:09:40.142 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/develop/code/gen/preview/3] : 获取生成代码视图
+<-e errCode: 400, errMsg: 该角色下未分配组织权限
+2023-09-14 17:09:50.087 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [GET=/develop/code/gen/preview/3] [uid=1] : 获取生成代码视图
+<-e errCode: 400, errMsg: 该角色下未分配组织权限
+2023-09-14 17:09:54.219 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/develop/code/table/info/5] [uid=1] : 获取表信息 ->22ms
+2023-09-14 17:09:54.221 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/type/list] : 获取字典类型分页列表 ->8ms
+2023-09-14 17:09:54.294 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/develop/code/table/tableTree] [uid=1] : 获取表树 ->89ms
+2023-09-14 17:10:39.724 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/develop/code/gen/preview/3] : 获取生成代码视图
+<-e errCode: 400, errMsg: 该角色下未分配组织权限
+2023-09-14 17:16:39.586 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 17:16:48.306 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 17:16:48.311 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 17:16:48.316 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 17:16:48.316 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 17:16:48.325 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 17:16:48.325 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 17:16:48.326 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 17:16:48.333 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 17:16:48 [INFO] JobCore start success.
+2023-09-14 17:16:51.649 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 17:16:51.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 17:16:51.658 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 17:19:35.990 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/list] : 获取表列表 ->14ms
+2023-09-14 17:19:41.060 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/develop/code/table/list] [uid=1] : 获取表列表 ->22ms
+2023-09-14 17:19:43.711 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [GET=/develop/code/gen/preview/3] [uid=1] : 获取生成代码视图
+<-e errCode: 400, errMsg: 该角色下未分配组织权限
+2023-09-14 17:19:48.445 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [GET=/develop/code/gen/preview/5] [uid=1] [uname=panda] : 获取生成代码视图
+<-e errCode: 400, errMsg: 该角色下未分配组织权限
+2023-09-14 17:22:01.730 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:41] : error http serve: http: Server closed
+2023-09-14 17:22:08.815 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true]
+2023-09-14 17:22:08.821 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:46] : mysql连接成功
+2023-09-14 17:22:08.823 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:51] : Redis连接成功
+2023-09-14 17:22:08.823 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:58] : Tdengine连接成功
+2023-09-14 17:22:08.831 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:76] : 路由初始化完成
+2023-09-14 17:22:08.831 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788
+2023-09-14 17:22:08.832 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:37] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: :9001
+2023-09-14 17:22:08.838 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:85] : 2023-09-14 17:22:08 [INFO] JobCore start success.
+2023-09-14 17:22:13.792 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:124] : pandax断开连接
+2023-09-14 17:22:13.793 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:153] : 账号pandax,密码pandax,开始认证
+2023-09-14 17:22:13.795 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/hook.go:96] : Client emqx@172.17.0.4 Connected
+2023-09-14 17:22:33.206 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/list] : 获取表列表 ->15ms
+2023-09-14 17:22:34.834 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/gen/preview/3] : 获取生成代码视图 ->15ms
+2023-09-14 17:22:38.200 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/gen/preview/5] : 获取生成代码视图 ->14ms
+2023-09-14 17:22:41.255 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/info/7] : 获取表信息 ->9ms
+2023-09-14 17:22:41.260 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/type/list] : 获取字典类型分页列表 ->8ms
+2023-09-14 17:22:41.308 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/develop/code/table/tableTree] : 获取表树 ->46ms
diff --git a/pkg/global/global_model.go b/pkg/global/global_model.go
index 1e19cc9..1baf53b 100644
--- a/pkg/global/global_model.go
+++ b/pkg/global/global_model.go
@@ -6,12 +6,13 @@ type BaseModel struct {
Id string `json:"id" gorm:"primary_key;"`
CreatedAt time.Time `gorm:"column:create_time" json:"createTime" form:"create_time"`
UpdatedAt time.Time `gorm:"column:update_time" json:"updateTime" form:"update_time"`
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
}
type BaseAuthModel struct {
Id string `json:"id" gorm:"primary_key;"`
Owner string `json:"owner" gorm:"type:varchar(64);comment:创建者,所有者"`
- OrgId string `json:"orgId" gorm:"type:varchar(64);comment:机构ID"`
+ OrgId int64 `json:"orgId" gorm:"type:int;comment:机构ID"`
CreatedAt time.Time `gorm:"column:create_time" json:"createTime" form:"create_time"`
UpdatedAt time.Time `gorm:"column:update_time" json:"updateTime" form:"update_time"`
}
diff --git a/pkg/initialize/router.go b/pkg/initialize/router.go
index b3fe84c..31d01d7 100644
--- a/pkg/initialize/router.go
+++ b/pkg/initialize/router.go
@@ -35,7 +35,7 @@ func InitRouter() *transport.HttpServer {
// 设置路由组
{
sysRouter.InitSystemRouter(container)
- sysRouter.InitDeptRouter(container)
+ sysRouter.InitOrganizationRouter(container)
sysRouter.InitConfigRouter(container)
sysRouter.InitApiRouter(container)
sysRouter.InitDictRouter(container)
diff --git a/pkg/initialize/table.go b/pkg/initialize/table.go
index a94182c..901035e 100644
--- a/pkg/initialize/table.go
+++ b/pkg/initialize/table.go
@@ -16,7 +16,7 @@ func InitTable() {
biz.ErrIsNil(
global.Db.AutoMigrate(
//casbin.CasbinRule{},
- systemEntity.SysDept{},
+ systemEntity.SysOrganization{},
systemEntity.SysApi{},
systemEntity.SysConfig{},
systemEntity.SysDictType{},
@@ -27,7 +27,7 @@ func InitTable() {
systemEntity.SysMenu{},
systemEntity.SysPost{},
systemEntity.SysRoleMenu{},
- systemEntity.SysRoleDept{},
+ systemEntity.SysRoleOrganization{},
systemEntity.SysNotice{},
logEntity.LogLogin{},
diff --git a/pkg/middleware/oper.go b/pkg/middleware/oper.go
index d6f381b..9d4150a 100644
--- a/pkg/middleware/oper.go
+++ b/pkg/middleware/oper.go
@@ -20,6 +20,7 @@ func OperationHandler(rc *restfulx.ReqCtx) error {
go func() {
oper := entity.LogOper{
Title: rc.LogInfo.Description,
+ OrgId: rc.LoginAccount.OrganizationId,
BusinessType: "0",
Method: c.Request.Method,
OperName: rc.LoginAccount.UserName,
diff --git a/pkg/rule_engine/nodes/action_create_alarm_node.go b/pkg/rule_engine/nodes/action_create_alarm_node.go
index 9d8ef4f..4b22de5 100644
--- a/pkg/rule_engine/nodes/action_create_alarm_node.go
+++ b/pkg/rule_engine/nodes/action_create_alarm_node.go
@@ -60,6 +60,7 @@ func (n *createAlarmNode) Handle(msg *message.Message) error {
alarm.State = global.ALARMING
alarm.Type = n.AlarmType
alarm.Time = time.Now()
+ alarm.OrgId = msg.Metadata.GetValue("orgId").(int64)
marshal, _ := json.Marshal(msg.Msg)
alarm.Details = string(marshal)
err := services.DeviceAlarmModelDao.Insert(*alarm)
diff --git a/pkg/rule_engine/nodes/action_log_node.go b/pkg/rule_engine/nodes/action_log_node.go
index 1717378..c2e0e52 100644
--- a/pkg/rule_engine/nodes/action_log_node.go
+++ b/pkg/rule_engine/nodes/action_log_node.go
@@ -40,6 +40,7 @@ func (n *logNode) Handle(msg *message.Message) error {
MessageId: msg.Id,
MsgType: msg.MsgType,
DeviceId: msg.Metadata["deviceId"].(string),
+ OrgId: msg.Metadata["orgId"].(int64),
DeviceName: msg.Metadata["deviceName"].(string),
Ts: msg.Ts,
Content: logMessage,
diff --git a/pkg/tool/device.go b/pkg/tool/device.go
index 9c89129..fd36184 100644
--- a/pkg/tool/device.go
+++ b/pkg/tool/device.go
@@ -4,7 +4,10 @@ import (
"bytes"
"encoding/base64"
"encoding/json"
+ "github.com/PandaXGO/PandaKit/biz"
"github.com/google/uuid"
+ "gorm.io/gorm"
+ "pandax/apps/system/services"
"pandax/pkg/global"
"strconv"
"strings"
@@ -12,6 +15,7 @@ import (
type DeviceAuth struct {
User string `json:"user"`
+ OrgId int64 `json:"orgId"`
DeviceId string `json:"device_id"`
DeviceType string `json:"device_type"`
ProductId string `json:"product_id"`
@@ -60,3 +64,11 @@ func (m *DeviceAuth) MarshalBinary() (data []byte, err error) {
func (m *DeviceAuth) UnmarshalBinary(data []byte) error {
return json.Unmarshal(data, m)
}
+
+func OrgAuthSet(tx *gorm.DB, roleId int64) {
+ // todo 使用缓存
+ ids, err := services.SysRoleOrganizationModelDao.FindOrganizationsByRoleId(roleId)
+ biz.ErrIsNil(err, "查询角色数据权限失败")
+ biz.IsTrue(len(ids) > 0, "该角色下未分配组织权限")
+ tx.Where("org_id in (?)", ids)
+}
diff --git a/resource/pandax_iot.sql b/resource/pandax_iot.sql
index b3e1ad2..3c8be8b 100644
--- a/resource/pandax_iot.sql
+++ b/resource/pandax_iot.sql
@@ -44,10 +44,10 @@ INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/api/:id', 'GET', '', '
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/config/list', 'GET', '', '', '', 3792);
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/config/configKey', 'GET', '', '', '', 3793);
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/config/:configId', 'GET', '', '', '', 3794);
-INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dept/list', 'GET', '', '', '', 3795);
-INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dept/:deptId', 'GET', '', '', '', 3796);
-INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dept/roleDeptTreeSelect/:roleId', 'GET', '', '', '', 3797);
-INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dept/deptTree', 'GET', '', '', '', 3798);
+INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/organization/list', 'GET', '', '', '', 3795);
+INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/organization/:organizationId', 'GET', '', '', '', 3796);
+INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/organization/roleOrganizationTreeSelect/:roleId', 'GET', '', '', '', 3797);
+INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/organization/organizationTree', 'GET', '', '', '', 3798);
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dict/type/list', 'GET', '', '', '', 3799);
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dict/type/:dictId', 'GET', '', '', '', 3800);
INSERT INTO `casbin_rule` VALUES ('p', 'manage', '/system/dict/data/list', 'GET', '', '', '', 3801);
@@ -99,13 +99,13 @@ INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/config/:configId', 'GET
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/config', 'POST', '', '', '', 8507);
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/config', 'PUT', '', '', '', 8508);
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/config/:configId', 'DELETE', '', '', '', 8509);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept/list', 'GET', '', '', '', 8510);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept/:deptId', 'GET', '', '', '', 8511);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept/roleDeptTreeSelect/:roleId', 'GET', '', '', '', 8512);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept/deptTree', 'GET', '', '', '', 8513);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept', 'POST', '', '', '', 8514);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept', 'PUT', '', '', '', 8515);
-INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/dept/:deptId', 'DELETE', '', '', '', 8516);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization/list', 'GET', '', '', '', 8510);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization/:organizationId', 'GET', '', '', '', 8511);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization/roleOrganizationTreeSelect/:roleId', 'GET', '', '', '', 8512);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization/organizationTree', 'GET', '', '', '', 8513);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization', 'POST', '', '', '', 8514);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization', 'PUT', '', '', '', 8515);
+INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/system/organization/:organizationId', 'DELETE', '', '', '', 8516);
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/device/group/list', 'GET', '', '', '', 8517);
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/device/group/list/all', 'GET', '', '', '', 8518);
INSERT INTO `casbin_rule` VALUES ('p', 'admin', '/device/group/list/tree', 'GET', '', '', '', 8519);
@@ -914,8 +914,8 @@ CREATE TABLE `sys_apis` (
INSERT INTO `sys_apis` VALUES (1, '2021-12-09 09:21:04', '2021-12-09 09:21:04', NULL, '/system/user/list', '查询用户列表(分页)', 'user', 'GET');
INSERT INTO `sys_apis` VALUES (2, '2021-12-09 09:29:36', '2021-12-09 09:29:36', NULL, '/system/user/changeStatus', '修改用户状态', 'user', 'PUT');
INSERT INTO `sys_apis` VALUES (3, '2021-12-09 09:34:37', '2021-12-09 09:34:37', NULL, '/system/user/:userId', '删除用户信息', 'user', 'DELETE');
-INSERT INTO `sys_apis` VALUES (4, '2021-12-09 09:36:43', '2021-12-09 09:36:43', NULL, '/system/dept/list', '获取部门列表', 'dept', 'GET');
-INSERT INTO `sys_apis` VALUES (5, '2021-12-09 09:37:31', '2021-12-09 09:37:31', NULL, '/system/dept/:deptId', '获取部门信息', 'dept', 'GET');
+INSERT INTO `sys_apis` VALUES (4, '2021-12-09 09:36:43', '2021-12-09 09:36:43', NULL, '/system/organization/list', '获取组织列表', 'organization', 'GET');
+INSERT INTO `sys_apis` VALUES (5, '2021-12-09 09:37:31', '2021-12-09 09:37:31', NULL, '/system/organization/:organizationId', '获取组织信息', 'organization', 'GET');
INSERT INTO `sys_apis` VALUES (6, '2021-12-09 18:20:32', '2021-12-09 18:20:32', NULL, '/system/user/avatar', '上传头像', 'user', 'POST');
INSERT INTO `sys_apis` VALUES (7, '2021-12-09 18:21:10', '2021-12-09 18:21:10', NULL, '/system/user/pwd', '修改密码', 'user', 'PUT');
INSERT INTO `sys_apis` VALUES (8, '2021-12-09 18:21:54', '2021-12-09 18:21:54', NULL, '/system/user/getById/:userId', '通过id获取用户信息', 'user', 'GET');
@@ -924,11 +924,11 @@ INSERT INTO `sys_apis` VALUES (10, '2021-12-09 18:59:43', '2021-12-09 18:59:43',
INSERT INTO `sys_apis` VALUES (11, '2021-12-09 19:00:24', '2021-12-09 19:00:24', NULL, '/system/user', '添加用户信息', 'user', 'POST');
INSERT INTO `sys_apis` VALUES (12, '2021-12-09 19:00:52', '2021-12-09 19:00:52', NULL, '/system/user', '修改用户信息', 'user', 'PUT');
INSERT INTO `sys_apis` VALUES (13, '2021-12-09 19:02:30', '2021-12-09 19:02:30', NULL, '/system/user/export', '导出用户信息', 'user', 'GET');
-INSERT INTO `sys_apis` VALUES (14, '2021-12-09 19:04:04', '2021-12-09 19:04:04', NULL, '/system/dept/roleDeptTreeSelect/:roleId', '获取角色部门树', 'dept', 'GET');
-INSERT INTO `sys_apis` VALUES (15, '2021-12-09 19:04:48', '2021-12-09 19:04:48', NULL, '/system/dept/deptTree', '获取所有部门树', 'dept', 'GET');
-INSERT INTO `sys_apis` VALUES (16, '2021-12-09 19:07:37', '2021-12-09 19:07:37', NULL, '/system/dept', '添加部门信息', 'dept', 'POST');
-INSERT INTO `sys_apis` VALUES (17, '2021-12-09 19:08:14', '2021-12-09 19:08:14', NULL, '/system/dept', '修改部门信息', 'dept', 'PUT');
-INSERT INTO `sys_apis` VALUES (18, '2021-12-09 19:08:40', '2021-12-09 19:08:40', NULL, '/system/dept/:deptId', '删除部门信息', 'dept', 'DELETE');
+INSERT INTO `sys_apis` VALUES (14, '2021-12-09 19:04:04', '2021-12-09 19:04:04', NULL, '/system/organization/roleOrganizationTreeSelect/:roleId', '获取角色组织树', 'organization', 'GET');
+INSERT INTO `sys_apis` VALUES (15, '2021-12-09 19:04:48', '2021-12-09 19:04:48', NULL, '/system/organization/organizationTree', '获取所有组织树', 'organization', 'GET');
+INSERT INTO `sys_apis` VALUES (16, '2021-12-09 19:07:37', '2021-12-09 19:07:37', NULL, '/system/organization', '添加组织信息', 'organization', 'POST');
+INSERT INTO `sys_apis` VALUES (17, '2021-12-09 19:08:14', '2021-12-09 19:08:14', NULL, '/system/organization', '修改组织信息', 'organization', 'PUT');
+INSERT INTO `sys_apis` VALUES (18, '2021-12-09 19:08:40', '2021-12-09 19:08:40', NULL, '/system/organization/:organizationId', '删除组织信息', 'organization', 'DELETE');
INSERT INTO `sys_apis` VALUES (19, '2021-12-09 19:09:41', '2021-12-09 19:09:41', NULL, '/system/config/list', '获取配置分页列表', 'config', 'GET');
INSERT INTO `sys_apis` VALUES (20, '2021-12-09 19:10:11', '2021-12-09 19:10:11', NULL, '/system/config/configKey', '获取配置列表通过ConfigKey', 'config', 'GET');
INSERT INTO `sys_apis` VALUES (21, '2021-12-09 19:10:45', '2021-12-09 19:10:45', NULL, '/system/config/:configId', '获取配置信息', 'config', 'GET');
@@ -967,7 +967,7 @@ INSERT INTO `sys_apis` VALUES (53, '2021-12-09 19:25:44', '2021-12-09 19:25:44',
INSERT INTO `sys_apis` VALUES (54, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role', '修改角色信息', 'role', 'PUT');
INSERT INTO `sys_apis` VALUES (55, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role/:roleId', '删除角色信息', 'role', 'DELETE');
INSERT INTO `sys_apis` VALUES (56, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role/changeStatus', '修改角色状态', 'role', 'PUT');
-INSERT INTO `sys_apis` VALUES (57, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role/dataScope', '修改角色部门权限', 'role', 'PUT');
+INSERT INTO `sys_apis` VALUES (57, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role/dataScope', '修改角色组织权限', 'role', 'PUT');
INSERT INTO `sys_apis` VALUES (58, '2021-12-09 19:25:44', '2021-12-09 19:25:44', NULL, '/system/role/export', '导出角色信息', 'role', 'GET');
INSERT INTO `sys_apis` VALUES (59, '2021-12-09 19:50:57', '2022-01-19 08:58:20', NULL, '/system/api/list', '获取api分页列表1', 'api', 'GET');
INSERT INTO `sys_apis` VALUES (60, '2021-12-09 19:51:26', '2021-12-09 19:51:26', NULL, '/system/api/all', '获取所有api', 'api', 'GET');
@@ -1111,14 +1111,14 @@ CREATE TABLE `sys_configs` (
INSERT INTO `sys_configs` VALUES (1, '账号初始密码', 'sys.user.initPassword', '123456', '0', '0', '初始密码', '2021-12-04 13:50:13', '2021-12-04 13:54:52', NULL);
-- ----------------------------
--- Table structure for sys_depts
+-- Table structure for sys_organizations
-- ----------------------------
-DROP TABLE IF EXISTS `sys_depts`;
-CREATE TABLE `sys_depts` (
- `dept_id` bigint(0) NOT NULL AUTO_INCREMENT,
- `parent_id` int(0) NULL DEFAULT NULL COMMENT '上级部门',
- `dept_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门路径',
- `dept_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门名称',
+DROP TABLE IF EXISTS `sys_organizations`;
+CREATE TABLE `sys_organizations` (
+ `organization_id` bigint(0) NOT NULL AUTO_INCREMENT,
+ `parent_id` int(0) NULL DEFAULT NULL COMMENT '上级组织',
+ `organization_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织路径',
+ `organization_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织名称',
`sort` int(0) NULL DEFAULT NULL COMMENT '排序',
`leader` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '负责人',
`phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机',
@@ -1129,15 +1129,15 @@ CREATE TABLE `sys_depts` (
`create_time` datetime(0) NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
`delete_time` datetime(0) NULL DEFAULT NULL,
- PRIMARY KEY (`dept_id`) USING BTREE
+ PRIMARY KEY (`organization_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
--- Records of sys_depts
+-- Records of sys_organizations
-- ----------------------------
-INSERT INTO `sys_depts` VALUES (2, 0, '/0/2', '熊猫科技', 0, 'xm', '18353366836', '342@qq.com', '0', 'admin', 'admin', '2021-12-01 17:31:53', '2021-12-02 08:56:19', NULL);
-INSERT INTO `sys_depts` VALUES (3, 2, '/0/2/3', '研发部', 1, 'panda', '18353366543', 'ewr@qq.com', '0', 'admin', 'admin', '2021-12-01 17:37:43', '2021-12-02 08:55:56', NULL);
-INSERT INTO `sys_depts` VALUES (7, 2, '/0/2/7', '营销部', 2, 'panda', '18353333333', '342@qq.com', '0', 'panda', 'panda', '2021-12-24 10:46:24', '2021-12-24 10:47:15', NULL);
+INSERT INTO `sys_organizations` VALUES (2, 0, '/0/2', '熊猫科技', 0, 'xm', '18353366836', '342@qq.com', '0', 'admin', 'admin', '2021-12-01 17:31:53', '2021-12-02 08:56:19', NULL);
+INSERT INTO `sys_organizations` VALUES (3, 2, '/0/2/3', '研发部', 1, 'panda', '18353366543', 'ewr@qq.com', '0', 'admin', 'admin', '2021-12-01 17:37:43', '2021-12-02 08:55:56', NULL);
+INSERT INTO `sys_organizations` VALUES (7, 2, '/0/2/7', '营销部', 2, 'panda', '18353333333', '342@qq.com', '0', 'panda', 'panda', '2021-12-24 10:46:24', '2021-12-24 10:47:15', NULL);
-- ----------------------------
-- Table structure for sys_dict_data
@@ -1287,7 +1287,7 @@ INSERT INTO `sys_menus` VALUES (4, '添加用户', '', 3, 1, '', '', '', '', '',
INSERT INTO `sys_menus` VALUES (5, '编辑用户', '', 3, 1, '', '', '', '', '', 'F', '0', '', '', 'system:user:edit', '0', 'admin', '', '', '2021-12-03 13:48:13', '2021-12-03 13:48:13', NULL);
INSERT INTO `sys_menus` VALUES (6, '角色管理', '', 1, 2, 'elementUserFilled', '/system/role', '/system/role/index', '1', '', 'C', '0', '1', '1', 'system:role:list', '0', '', 'panda', '', '2021-12-03 13:51:55', '2022-07-16 10:23:21', NULL);
INSERT INTO `sys_menus` VALUES (7, '菜单管理', '', 1, 2, 'iconfont icon-juxingkaobei', '/system/menu', '/system/menu/index', '1', '', 'C', '0', '1', '1', 'system:menu:list', '0', 'admin', 'panda', '', '2021-12-03 13:54:44', '2021-12-28 13:33:19', NULL);
-INSERT INTO `sys_menus` VALUES (8, '组织管理', '', 1, 3, 'iconfont icon-jiliandongxuanzeqi', '/system/dept', '/system/dept/index', '1', '', 'C', '0', '1', '1', 'system:dept:list', '0', '', 'panda', '', '2021-12-03 13:58:36', '2023-05-30 16:34:36', NULL);
+INSERT INTO `sys_menus` VALUES (8, '组织管理', '', 1, 3, 'iconfont icon-jiliandongxuanzeqi', '/system/organization', '/system/organization/index', '1', '', 'C', '0', '1', '1', 'system:organization:list', '0', '', 'panda', '', '2021-12-03 13:58:36', '2023-05-30 16:34:36', NULL);
INSERT INTO `sys_menus` VALUES (9, '岗位管理', '', 1, 4, 'iconfont icon-neiqianshujuchucun', '/system/post', '/system/post/index', '1', '', 'C', '0', '1', '1', 'system:post:list', '0', 'admin', 'panda', '', '2021-12-03 13:54:44', '2021-12-28 13:40:31', NULL);
INSERT INTO `sys_menus` VALUES (10, '字典管理', '', 1, 5, 'elementCellphone', '/system/dict', '/system/dict/index', '1', '', 'C', '0', '1', '1', 'system:dict:list', '0', 'admin', 'panda', '', '2021-12-03 13:54:44', '2021-12-28 13:40:50', NULL);
INSERT INTO `sys_menus` VALUES (11, '参数管理', '', 1, 6, 'elementDocumentCopy', '/system/config', '/system/config/index', '1', '', 'C', '0', '1', '1', 'system:config:list', '0', 'admin', 'panda', '', '2021-12-03 13:54:44', '2021-12-28 13:41:05', NULL);
@@ -1303,10 +1303,10 @@ INSERT INTO `sys_menus` VALUES (20, '导出角色', '', 6, 1, '', '', '', '', ''
INSERT INTO `sys_menus` VALUES (21, '添加菜单', '', 7, 1, '', '', '', '', '', 'F', '', '', '', 'system:menu:add', '0', 'admin', '', '', '2021-12-06 17:46:01', '2021-12-06 17:46:01', NULL);
INSERT INTO `sys_menus` VALUES (22, '修改菜单', '', 7, 1, '', '', '', '', '', 'F', '', '', '', 'system:menu:edit', '0', 'admin', '', '', '2021-12-06 17:46:24', '2021-12-06 17:46:24', NULL);
INSERT INTO `sys_menus` VALUES (23, '删除菜单', '', 7, 1, '', '', '', '', '', 'F', '', '', '', 'system:menu:delete', '0', 'admin', '', '', '2021-12-06 17:46:47', '2021-12-06 17:46:47', NULL);
-INSERT INTO `sys_menus` VALUES (24, '添加部门', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:dept:add', '0', 'admin', '', '', '2021-12-07 09:33:58', '2021-12-07 09:33:58', NULL);
-INSERT INTO `sys_menus` VALUES (25, '编辑部门', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:dept:edit', '0', 'admin', '', '', '2021-12-07 09:34:39', '2021-12-07 09:34:39', NULL);
-INSERT INTO `sys_menus` VALUES (26, '删除部门', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:dept:delete', '0', 'admin', 'admin', '', '2021-12-07 09:35:09', '2021-12-07 09:36:26', NULL);
-INSERT INTO `sys_menus` VALUES (27, '导出部门', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:dept:export', '0', 'admin', '', '', '2021-12-07 09:35:51', '2021-12-07 09:35:51', '2021-12-07 09:36:37');
+INSERT INTO `sys_menus` VALUES (24, '添加组织', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:organization:add', '0', 'admin', '', '', '2021-12-07 09:33:58', '2021-12-07 09:33:58', NULL);
+INSERT INTO `sys_menus` VALUES (25, '编辑组织', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:organization:edit', '0', 'admin', '', '', '2021-12-07 09:34:39', '2021-12-07 09:34:39', NULL);
+INSERT INTO `sys_menus` VALUES (26, '删除组织', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:organization:delete', '0', 'admin', 'admin', '', '2021-12-07 09:35:09', '2021-12-07 09:36:26', NULL);
+INSERT INTO `sys_menus` VALUES (27, '导出组织', '', 8, 1, '', '', '', '', '', 'F', '', '', '', 'system:organization:export', '0', 'admin', '', '', '2021-12-07 09:35:51', '2021-12-07 09:35:51', '2021-12-07 09:36:37');
INSERT INTO `sys_menus` VALUES (28, '添加岗位', '', 9, 1, '', '', '', '', '', 'F', '', '', '', 'system:post:add', '0', 'admin', '', '', '2021-12-07 09:35:09', '2021-12-07 09:35:09', NULL);
INSERT INTO `sys_menus` VALUES (29, '编辑岗位', '', 9, 1, '', '', '', '', '', 'F', '', '', '', 'system:post:edit', '0', 'admin', '', '', '2021-12-07 09:35:09', '2021-12-07 09:35:09', NULL);
INSERT INTO `sys_menus` VALUES (30, '删除岗位', '', 9, 1, '', '', '', '', '', 'F', '', '', '', 'system:post:delete', '0', 'admin', '', '', '2021-12-07 09:35:09', '2021-12-07 09:35:09', NULL);
@@ -1428,7 +1428,7 @@ CREATE TABLE `sys_notices` (
`title` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标题',
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '标题',
`notice_type` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知类型',
- `dept_id` int(0) NULL DEFAULT NULL COMMENT '部门Id,部门及子部门',
+ `organization_id` int(0) NULL DEFAULT NULL COMMENT '组织Id,组织及子组织',
`create_time` datetime(0) NULL DEFAULT NULL,
`update_time` datetime(0) NULL DEFAULT NULL,
`delete_time` datetime(0) NULL DEFAULT NULL,
@@ -1469,21 +1469,21 @@ INSERT INTO `sys_posts` VALUES (1, '首席执行官', 'CEO', 1, '0', '首席执
INSERT INTO `sys_posts` VALUES (4, '首席技术执行官', 'CTO', 2, '0', '', 'panda', '', '2021-12-02 09:21:44', '2022-07-16 17:37:42', NULL);
-- ----------------------------
--- Table structure for sys_role_depts
+-- Table structure for sys_role_organizations
-- ----------------------------
-DROP TABLE IF EXISTS `sys_role_depts`;
-CREATE TABLE `sys_role_depts` (
+DROP TABLE IF EXISTS `sys_role_organizations`;
+CREATE TABLE `sys_role_organizations` (
`role_id` int(0) NULL DEFAULT NULL,
- `dept_id` int(0) NULL DEFAULT NULL,
+ `organization_id` int(0) NULL DEFAULT NULL,
`id` bigint(0) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
--- Records of sys_role_depts
+-- Records of sys_role_organizations
-- ----------------------------
-INSERT INTO `sys_role_depts` VALUES (1, 2, 1);
-INSERT INTO `sys_role_depts` VALUES (1, 3, 2);
+INSERT INTO `sys_role_organizations` VALUES (1, 2, 1);
+INSERT INTO `sys_role_organizations` VALUES (1, 3, 2);
-- ----------------------------
-- Table structure for sys_role_menus
@@ -1721,7 +1721,7 @@ CREATE TABLE `sys_roles` (
`role_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称',
`status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态',
`role_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色代码',
- `data_scope` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
+ `data_scope` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据范围(1:全部数据权限 2:自定数据权限 3:本组织数据权限 4:本组织及以下数据权限)',
`role_sort` int(0) NULL DEFAULT NULL COMMENT '角色排序',
`create_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
@@ -1751,7 +1751,7 @@ CREATE TABLE `sys_users` (
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`email` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
- `dept_id` int(0) NULL DEFAULT NULL,
+ `organization_id` int(0) NULL DEFAULT NULL,
`post_id` int(0) NULL DEFAULT NULL,
`create_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_by` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
diff --git a/resource/template/go/api.template b/resource/template/go/api.template
index 809a525..09f81b7 100644
--- a/resource/template/go/api.template
+++ b/resource/template/go/api.template
@@ -37,7 +37,7 @@ func (p *{{.ClassName}}Api) Get{{.ClassName}}List(rc *restfulx.ReqCtx) {
rc.ResData = model.ResultPage{
Total: total,
PageNum: int64(pageNum),
- PageSize: int64(pageNum),
+ PageSize: int64(pageSize),
Data: list,
}
}
diff --git a/shutdown.bat b/shutdown.bat
index 51543dd..c37bf57 100644
--- a/shutdown.bat
+++ b/shutdown.bat
@@ -1 +1 @@
-taskkill /pid 20548 -t -f
\ No newline at end of file
+taskkill /pid 8140 -t -f
\ No newline at end of file