Browse Source

优化部门加载

hsun 5 months ago
parent
commit
022bc6b3bd
2 changed files with 110 additions and 22 deletions
  1. 102 22
      controllers/sys_department.go
  2. 8 0
      models/system/sys_group.go

+ 102 - 22
controllers/sys_department.go

@@ -188,36 +188,116 @@ func (this *SysDepartmentController) ListDepartment() {
 		br.ErrMsg = "请登录,SysUser Is Empty"
 		return
 	}
-	list, err := system.GetDepartmentList()
-	if err != nil {
+	//list, err := system.GetDepartmentList()
+	//if err != nil {
+	//	br.Msg = "获取失败"
+	//	br.ErrMsg = "获取失败,Err:" + err.Error()
+	//	return
+	//}
+	//lenList := len(list)
+	//for i := 0; i < lenList; i++ {
+	//	departmentId := list[i].DepartmentId
+	//	groupList, err := system.GetSysGroupByDepartmentId(departmentId)
+	//	if err != nil {
+	//		br.Msg = "获取数据失败"
+	//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	list[i].Child = groupList
+	//	list[i].IsDepartment = true
+	//	for i2, sysGroup := range groupList {
+	//		teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
+	//		if err != nil {
+	//			br.Msg = "获取数据失败"
+	//			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//			return
+	//		}
+	//		groupList[i2].Child = teamList
+	//		groupList[i2].IsGroup = true
+	//	}
+	//}
+
+	// 获取部门
+	departments, e := system.GetDepartmentList()
+	if e != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
+		br.ErrMsg = fmt.Sprintf("获取部门失败, %v", e)
 		return
 	}
-	lenList := len(list)
-	for i := 0; i < lenList; i++ {
-		departmentId := list[i].DepartmentId
-		groupList, err := system.GetSysGroupByDepartmentId(departmentId)
-		if err != nil {
-			br.Msg = "获取数据失败"
-			br.ErrMsg = "获取数据失败,Err:" + err.Error()
-			return
+	// 获取分组和小组
+	groups, e := system.GetSysGroupList()
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = fmt.Sprintf("获取分组失败, %v", e)
+		return
+	}
+	departmentGroup := make(map[int][]*system.SysGroupList)
+	groupTeam := make(map[int][]*system.SysTeamList)
+	for _, v := range groups {
+		if departmentGroup[v.DepartmentId] == nil {
+			departmentGroup[v.DepartmentId] = make([]*system.SysGroupList, 0)
+		}
+		if v.ParentId == 0 {
+			departmentGroup[v.DepartmentId] = append(departmentGroup[v.DepartmentId], v)
+		}
+		if v.ParentId > 0 {
+			if groupTeam[v.ParentId] == nil {
+				groupTeam[v.ParentId] = make([]*system.SysTeamList, 0)
+			}
+			groupTeam[v.ParentId] = append(groupTeam[v.ParentId], &system.SysTeamList{
+				GroupId:    v.GroupId,
+				ParentId:   v.ParentId,
+				GroupName:  v.GroupName,
+				CreateTime: v.CreateTime,
+			})
 		}
-		list[i].Child = groupList
-		list[i].IsDepartment = true
-		for i2, sysGroup := range groupList {
-			teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
-			if err != nil {
-				br.Msg = "获取数据失败"
-				br.ErrMsg = "获取数据失败,Err:" + err.Error()
-				return
+	}
+
+	// 数据重组
+	for _, groups := range departmentGroup {
+		for _, g := range groups {
+			g.IsGroup = true
+			if groupTeam[g.GroupId] != nil {
+				g.Child = groupTeam[g.GroupId]
+			} else {
+				g.Child = make([]*system.SysTeamList, 0)
 			}
-			groupList[i2].Child = teamList
-			groupList[i2].IsGroup = true
 		}
 	}
+	for _, v := range departments {
+		v.IsDepartment = true
+		if departmentGroup[v.DepartmentId] != nil {
+			v.Child = departmentGroup[v.DepartmentId]
+		} else {
+			v.Child = make([]*system.SysGroupList, 0)
+		}
+	}
+
+	//lenList := len(list)
+	//for i := 0; i < lenList; i++ {
+	//	departmentId := list[i].DepartmentId
+	//	groupList, err := system.GetSysGroupByDepartmentId(departmentId)
+	//	if err != nil {
+	//		br.Msg = "获取数据失败"
+	//		br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//		return
+	//	}
+	//	list[i].Child = groupList
+	//	list[i].IsDepartment = true
+	//	for i2, sysGroup := range groupList {
+	//		teamList, err := system.GetSysTeamByDepartmentId(sysGroup.GroupId)
+	//		if err != nil {
+	//			br.Msg = "获取数据失败"
+	//			br.ErrMsg = "获取数据失败,Err:" + err.Error()
+	//			return
+	//		}
+	//		groupList[i2].Child = teamList
+	//		groupList[i2].IsGroup = true
+	//	}
+	//}
+
 	resp := new(system.SysDepartmentListResp)
-	resp.List = list
+	resp.List = departments
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 8 - 0
models/system/sys_group.go

@@ -116,6 +116,14 @@ type SysGroupList struct {
 	IsGroup      bool           `description:"是否为二级部门"`
 }
 
+func GetSysGroupList() (items []*SysGroupList, err error) {
+	// o := orm.NewOrm()
+	sql := `SELECT * FROM sys_group ORDER BY sort ASC, create_time ASC `
+	//_, err = o.Raw(sql).QueryRows(&items)
+	err = global.DEFAULT_DmSQL.Raw(sql).Find(&items).Error
+	return
+}
+
 func GetSysGroupByDepartmentId(departmentId int) (items []*SysGroupList, err error) {
 	sql := `SELECT * FROM sys_group WHERE department_id=? AND parent_id=0 ORDER BY sort ASC, create_time ASC`
 	// o := orm.NewOrm()