sys_department.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package services
  2. import (
  3. "eta/eta_mini_crm/models"
  4. "eta/eta_mini_crm/models/response"
  5. "strconv"
  6. "strings"
  7. )
  8. // GetSysDepartmentTree 递归获取部门目录树
  9. func GetSysDepartmentTree(list []*models.SysDepartmentList, parentId int) []*models.SysDepartmentList {
  10. res := make([]*models.SysDepartmentList, 0)
  11. for _, v := range list {
  12. if v.ParentId == parentId {
  13. t := new(models.SysDepartmentList)
  14. t.SysDepartmentId = v.SysDepartmentId
  15. t.SysDepartmentName = v.SysDepartmentName
  16. t.Level = v.Level
  17. t.ParentId = v.ParentId
  18. t.Child = GetSysDepartmentTree(list, v.SysDepartmentId)
  19. res = append(res, t)
  20. }
  21. }
  22. return res
  23. }
  24. // DeleteSysDepartmentById 根据部门id去删除部门下的所有子目录,并清除用户的关联信息
  25. func DeleteSysDepartmentById(sysDepartmentId, level int) (err error) {
  26. sysDepartmentIds := make([]string, 0)
  27. sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(sysDepartmentId))
  28. var curIds = sysDepartmentIds
  29. var curStringIds string
  30. for i := level; i < 3; i++ {
  31. // 从当前层部门依次向下遍历子部门
  32. curStringIds = strings.Join(curIds, ",")
  33. sysDepartments, er := models.GetChildSysDepartmentListByIds(curStringIds)
  34. if er != nil {
  35. return er
  36. }
  37. curIds = make([]string, 0)
  38. for _, dep := range sysDepartments {
  39. sysDepartmentIds = append(sysDepartmentIds, strconv.Itoa(dep.SysDepartmentId))
  40. curIds = append(curIds, strconv.Itoa(dep.SysDepartmentId))
  41. }
  42. }
  43. err = models.DeleteSysDepartmentByIdV2(sysDepartmentIds, level)
  44. return
  45. }
  46. // GetSysDepartmentPathIdsById 根据当前部门id获取,部门层级列表pathIds [3]int,0索引表示1级部门id,1表示2级部门id...
  47. func GetSysDepartmentPathIdsById(sysDepartmentId int) (pathIds []int, err error) {
  48. sysDepartment, err := models.GetSysDepartmentById(sysDepartmentId)
  49. if err != nil {
  50. return
  51. }
  52. pathIds = make([]int, 3)
  53. pathIds[sysDepartment.Level-1] = sysDepartmentId
  54. curSysDepartmentId := sysDepartment.ParentId
  55. for curLevel := sysDepartment.Level - 1; curLevel >= 1; curLevel-- {
  56. upSysDepartment, er := models.GetSysDepartmentListByParentId(curSysDepartmentId)
  57. if er != nil {
  58. return
  59. }
  60. curSysDepartmentId = upSysDepartment.ParentId
  61. pathIds[curLevel-1] = upSysDepartment.SysDepartmentId
  62. }
  63. return
  64. }
  65. // GetSysDepartmentAndSellerById 根据当前部门id,获取部门下的子目录以及销售(系统用户)
  66. func GetSysDepartmentAndSellerById(sysDepartmentId int, enabled bool) (items []*response.DepartmentSellers, err error) {
  67. depList, err := models.GetChildSysDepartmentListById(sysDepartmentId)
  68. if err != nil {
  69. return
  70. }
  71. for _, dep := range depList {
  72. depItem := &response.DepartmentSellers{
  73. SysDepartmentId: dep.SysDepartmentId,
  74. SysDepartmentName: dep.SysDepartmentName,
  75. }
  76. items = append(items, depItem)
  77. }
  78. userList, err := models.GetSysUserByDepartmentId(sysDepartmentId, enabled)
  79. if err != nil {
  80. return
  81. }
  82. for _, user := range userList {
  83. userItem := &response.DepartmentSellers{
  84. SysUserId: user.SysUserId,
  85. SysRealName: user.SysRealName,
  86. }
  87. items = append(items, userItem)
  88. }
  89. return
  90. }