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