2023-06-30 14:54:43 +08:00

51 lines
1.2 KiB
Go

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
}