sys_dept.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package service
  2. import (
  3. "dashoo.cn/micro/app/dao"
  4. "dashoo.cn/micro/app/model"
  5. )
  6. type dept struct {
  7. }
  8. var Dept = new(dept)
  9. func (s *dept) GetList(searchParams *model.SysDeptSearchParams) ([]*model.SysDept, error) {
  10. deptModel := dao.SysDept.M
  11. if searchParams.DeptName != "" {
  12. deptModel = deptModel.Where("dept_name like ?", "%"+searchParams.DeptName+"%")
  13. }
  14. if searchParams.Status != "" {
  15. deptModel = deptModel.Where("status", searchParams.Status)
  16. }
  17. depts := ([]*model.SysDept)(nil)
  18. if err := deptModel.Scan(&depts); err != nil {
  19. return nil, err
  20. }
  21. list := make([]*model.SysDept, 0, len(depts))
  22. if searchParams.ExcludeId != 0 {
  23. for _, v := range depts {
  24. if searchParams.ExcludeId != v.Id {
  25. list = append(list, v)
  26. }
  27. }
  28. return list, nil
  29. } else {
  30. return depts, nil
  31. }
  32. }
  33. func (s *dept) GetRoleDepts(roleId int) ([]int, error) {
  34. var entitys []*model.SysRoleDept
  35. err := dao.SysRoleDept.Where("role_id", roleId).Scan(&entitys)
  36. if err != nil {
  37. return nil, err
  38. }
  39. result := make([]int, 0)
  40. for _, v := range entitys {
  41. result = append(result, v.DeptId)
  42. }
  43. return result, nil
  44. }
  45. func (s *dept) FindSonByParentId(depts []*model.SysDept, deptId int) []*model.SysDept {
  46. children := make([]*model.SysDept, 0, len(depts))
  47. for _, v := range depts {
  48. if v.ParentId == deptId {
  49. children = append(children, v)
  50. fChildren := s.FindSonByParentId(depts, v.Id)
  51. children = append(children, fChildren...)
  52. }
  53. }
  54. return children
  55. }
  56. func (s *dept) GetDeptListTree(pid int, list []*model.SysDept) []*model.SysDeptTreeRes {
  57. tree := make([]*model.SysDeptTreeRes, 0, len(list))
  58. for _, v := range list {
  59. if v.ParentId == pid {
  60. t := &model.SysDeptTreeRes{
  61. SysDept: v,
  62. }
  63. child := s.GetDeptListTree(v.Id, list)
  64. if len(child) > 0 {
  65. t.Children = child
  66. }
  67. tree = append(tree, t)
  68. }
  69. }
  70. return tree
  71. }
  72. func (s *dept) AddDept(params *model.SysDeptAddParams) (err error) {
  73. _, err = dao.SysDept.Insert(params)
  74. return
  75. }
  76. func (s *dept) GetDeptById(id uint64) (dept *model.SysDept, err error) {
  77. err = dao.SysDept.Where("dept_id", id).Scan(&dept)
  78. return
  79. }
  80. func (s *dept) EditDept(params *model.EditParams) error {
  81. _, err := dao.SysDept.FieldsEx(dao.SysDept.Columns.Id, dao.SysDept.Columns.CreatedBy).WherePri(params.DeptID).
  82. Update(params)
  83. return err
  84. }
  85. func (s *dept) DelDept(id int) error {
  86. var list []*model.SysDept
  87. err := dao.SysDept.Scan(&list)
  88. if err != nil {
  89. return err
  90. }
  91. children := s.FindSonByParentId(list, id)
  92. ids := make([]int, 0, len(list))
  93. for _, v := range children {
  94. ids = append(ids, v.Id)
  95. }
  96. ids = append(ids, id)
  97. _, err = dao.SysDept.Where(dao.SysDept.Columns.Id+" in (?)", ids).Delete()
  98. return err
  99. }