sys_dept.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package service
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/dao"
  5. "dashoo.cn/micro/app/model"
  6. "dashoo.cn/opms_libary/micro_srv"
  7. "github.com/gogf/gf/os/glog"
  8. "github.com/gogf/gf/util/gconv"
  9. )
  10. type deptService struct {
  11. Dao *dao.SysDeptDao
  12. }
  13. func NewDeptService(ctx context.Context) (*deptService, error) {
  14. dict := new(deptService)
  15. // 获取租户码
  16. tenant, err := micro_srv.GetTenant(ctx)
  17. if err != nil {
  18. return nil, err
  19. }
  20. reqMethod, _ := micro_srv.GetReqMethod(ctx)
  21. glog.Info("Received " + reqMethod + " request @ " + tenant)
  22. dict.Dao = dao.NewSysDeptDao(tenant)
  23. return dict, err
  24. }
  25. func (s *deptService) GetList(searchParams *model.SysDeptSearchParams) ([]*model.SysDept, error) {
  26. deptModel := dao.SysDept.M
  27. if searchParams.DeptName != "" {
  28. deptModel = deptModel.Where("dept_name like ?", "%"+searchParams.DeptName+"%")
  29. }
  30. if searchParams.Status != "" {
  31. deptModel = deptModel.Where("status", searchParams.Status)
  32. }
  33. depts := ([]*model.SysDept)(nil)
  34. if err := deptModel.Scan(&depts); err != nil {
  35. return nil, err
  36. }
  37. list := make([]*model.SysDept, 0, len(depts))
  38. if searchParams.ExcludeId != 0 {
  39. for _, v := range depts {
  40. if searchParams.ExcludeId != v.Id {
  41. list = append(list, v)
  42. }
  43. }
  44. return list, nil
  45. } else {
  46. return depts, nil
  47. }
  48. }
  49. func (s *deptService) GetRoleDepts(roleId int) ([]int, error) {
  50. var entitys []*model.SysRoleDept
  51. err := dao.SysRoleDept.Where("role_id", roleId).Scan(&entitys)
  52. if err != nil {
  53. return nil, err
  54. }
  55. result := make([]int, 0)
  56. for _, v := range entitys {
  57. result = append(result, v.DeptId)
  58. }
  59. return result, nil
  60. }
  61. func (s *deptService) FindSonByParentId(depts []*model.SysDept, deptId int) []*model.SysDept {
  62. children := make([]*model.SysDept, 0, len(depts))
  63. for _, v := range depts {
  64. if v.ParentId == deptId {
  65. children = append(children, v)
  66. fChildren := s.FindSonByParentId(depts, v.Id)
  67. children = append(children, fChildren...)
  68. }
  69. }
  70. return children
  71. }
  72. func (s *deptService) GetDeptListTree(pid int, list []*model.SysDept) []*model.SysDeptTreeRes {
  73. tree := make([]*model.SysDeptTreeRes, 0, len(list))
  74. for _, v := range list {
  75. if v.ParentId == pid {
  76. t := &model.SysDeptTreeRes{
  77. SysDept: v,
  78. }
  79. child := s.GetDeptListTree(v.Id, list)
  80. if len(child) > 0 {
  81. t.Children = child
  82. }
  83. tree = append(tree, t)
  84. }
  85. }
  86. return tree
  87. }
  88. func (s *deptService) GetDeptById(id int64) (dept *model.SysDept, err error) {
  89. err = dao.SysDept.Where("id", id).Scan(&dept)
  90. return
  91. }
  92. func (s *deptService) Create(req *model.SysDeptReq) (err error) {
  93. data := new(model.SysDept)
  94. if err := gconv.Struct(req, data); err != nil {
  95. return err
  96. }
  97. SetCreatedInfo(data, 1, "")
  98. _, err = dao.SysDept.Insert(data)
  99. return
  100. }
  101. func (s *deptService) UpdateById(req *model.UpdateSysDeptReq) error {
  102. data := new(model.SysDept)
  103. if err := gconv.Struct(req, data); err != nil {
  104. return err
  105. }
  106. SetUpdatedInfo(data, 1, "")
  107. _, err := dao.SysDept.FieldsEx(dao.SysDept.Columns.Id, dao.SysDept.Columns.CreatedBy, dao.SysDept.Columns.CreatedName, dao.SysDept.Columns.CreatedTime).WherePri(data.Id).
  108. Update(data)
  109. return err
  110. }
  111. func (s *deptService) DeleteById(id int) error {
  112. var list []*model.SysDept
  113. err := dao.SysDept.Scan(&list)
  114. if err != nil {
  115. return err
  116. }
  117. children := s.FindSonByParentId(list, id)
  118. ids := make([]int, 0, len(list))
  119. for _, v := range children {
  120. ids = append(ids, v.Id)
  121. }
  122. ids = append(ids, id)
  123. _, err = dao.SysDept.Where(dao.SysDept.Columns.Id+" in (?)", ids).Delete()
  124. return err
  125. }