sys_department.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package services
  2. import (
  3. "eta/eta_mini_crm/models"
  4. "strconv"
  5. "strings"
  6. )
  7. // GetSysDepartmentTree 递归获取部门目录树
  8. func GetSysDepartmentTree(list []*models.SysDepartmentList, parentId int) []*models.SysDepartmentList {
  9. res := make([]*models.SysDepartmentList, 0)
  10. for _, v := range list {
  11. if v.ParentId == parentId {
  12. t := new(models.SysDepartmentList)
  13. t.SysDepartmentId = v.SysDepartmentId
  14. t.SysDepartmentName = v.SysDepartmentName
  15. t.Level = v.Level
  16. t.ParentId = v.ParentId
  17. t.Child = GetSysDepartmentTree(list, v.SysDepartmentId)
  18. res = append(res, t)
  19. }
  20. }
  21. return res
  22. }
  23. // DeleteSysDepartmentById 根据部门id去删除部门下的所有子目录,并清除用户的关联信息
  24. func DeleteSysDepartmentById(sysDepartmentId, level int) (err error) {
  25. sysDepartmentIds := make([]string, 0)
  26. sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(sysDepartmentId))
  27. var curIds = sysDepartmentIds
  28. var curStringIds string
  29. for i := level; i < 3; i++ {
  30. // 从当前层部门依次向下遍历子部门
  31. curStringIds = strings.Join(curIds, ",")
  32. sysDepartments, er := models.GetChildSysDepartmentListByIds(curStringIds)
  33. if er != nil {
  34. return er
  35. }
  36. curIds = make([]string, 0)
  37. for _, dep := range sysDepartments {
  38. sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(dep.SysDepartmentId))
  39. curIds = append(curIds, strconv.Itoa(dep.SysDepartmentId))
  40. }
  41. }
  42. err = models.DeleteSysDepartmentByIdV2(sysDepartmentIds, level)
  43. return
  44. }
  45. // GetSysDepartmentPathIdsById 根据当前部门id获取,部门层级列表pathIds [3]int,0索引表示1级部门id,1表示2级部门id...
  46. func GetSysDepartmentPathIdsById(sysDepartmentId int) (pathIds []int, err error) {
  47. sysDepartment, err := models.GetSysDepartmentById(sysDepartmentId)
  48. if err != nil {
  49. return
  50. }
  51. pathIds = make([]int, 3)
  52. pathIds[sysDepartment.Level-1] = sysDepartmentId
  53. curSysDepartmentId := sysDepartment.ParentId
  54. for curLevel := sysDepartment.Level - 1; curLevel >= 1; curLevel-- {
  55. upSysDepartment, er := models.GetSysDepartmentListByParentId(curSysDepartmentId)
  56. if er != nil {
  57. return
  58. }
  59. curSysDepartmentId = upSysDepartment.ParentId
  60. pathIds[curLevel-1] = upSysDepartment.SysDepartmentId
  61. }
  62. return
  63. }