package service import ( "hospital-admin-api/api/dao" "hospital-admin-api/api/responses/deptResponse" "strconv" ) type DeptService struct { } // GetDeptList 获取部门列表 func (r *DeptService) GetDeptList() ([]*deptResponse.GetDeptList, error) { // 获取全部部门 adminDeptDao := dao.AdminDeptDao{} adminDept, _ := adminDeptDao.GetAdminDeptList() if adminDept == nil { return nil, nil } deptMap := make(map[int64]*deptResponse.GetDeptList) var deptTree []*deptResponse.GetDeptList for _, dept := range adminDept { node := &deptResponse.GetDeptList{ DeptId: strconv.FormatInt(dept.DeptId, 10), ParentId: strconv.FormatInt(dept.ParentId, 10), DeptName: dept.DeptName, DeptStatus: dept.DeptStatus, CreatedAt: dept.CreatedAt, UpdatedAt: dept.UpdatedAt, Children: nil, } deptMap[dept.DeptId] = node } // 构建菜单树 for _, dept := range adminDept { if dept.ParentId == 0 { if deptMap[dept.DeptId] == nil { continue } deptTree = append(deptTree, deptMap[dept.DeptId]) } else if parent, ok := deptMap[dept.ParentId]; ok { parent.Children = append(parent.Children, deptMap[dept.DeptId]) } } return deptTree, nil }