seller.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package controllers
  2. import (
  3. "eta/eta_mini_crm/models"
  4. "eta/eta_mini_crm/models/response"
  5. "eta/eta_mini_crm/services"
  6. "strings"
  7. )
  8. type SellerController struct {
  9. BaseAuthController
  10. }
  11. // List
  12. // @Title 获取部门下销售
  13. // @Description 获取部门下销售接口
  14. // @Param AllEnabled query bool true "是否获取包含禁用的用户"
  15. // @Success 200 {object} company.DepartmentGroupSellersResp
  16. // @router /list [get]
  17. func (this *SellerController) List() {
  18. br := new(models.BaseResponse).Init()
  19. defer func() {
  20. this.Data["json"] = br
  21. this.ServeJSON()
  22. }()
  23. getAllEnabled, _ := this.GetBool("AllEnabled", false)
  24. enabled := true //默认只获取正常状态的用户
  25. if getAllEnabled { //获取所有状态的用户
  26. enabled = false
  27. }
  28. departmentList, err := models.GetSysDepartmentList()
  29. if err != nil {
  30. br.Msg = "获取部门失败"
  31. br.ErrMsg = "获取部门失败,系统异常,Err:" + err.Error()
  32. return
  33. }
  34. seller, err := models.GetSysUserListByIsEnabled(enabled)
  35. if err != nil {
  36. br.Msg = "获取销售失败"
  37. br.ErrMsg = "获取销售失败,系统异常,Err:" + err.Error()
  38. return
  39. }
  40. // 遍历获取销售的层级结构
  41. list := make([]*response.DepartmentSellers, 0)
  42. for _, dep1 := range departmentList {
  43. if dep1.ParentId == 0 {
  44. v1 := new(response.DepartmentSellers)
  45. v1.SysDepartmentId = dep1.SysDepartmentId
  46. v1.SysDepartmentName = dep1.SysDepartmentName
  47. for _, s := range seller {
  48. if s.SysDepartmentId1 == dep1.SysDepartmentId && s.SysDepartmentId2 == 0 {
  49. s1 := new(response.DepartmentSellers)
  50. s1.SysUserId = s.SysUserId
  51. s1.SysRealName = s.SysRealName
  52. v1.ChildrenList = append(v1.ChildrenList, s1)
  53. }
  54. }
  55. for _, dep2 := range departmentList {
  56. if dep2.ParentId == dep1.SysDepartmentId {
  57. v2 := new(response.DepartmentSellers)
  58. v2.SysDepartmentId = dep2.SysDepartmentId
  59. v2.SysDepartmentName = dep2.SysDepartmentName
  60. for _, s := range seller {
  61. if s.SysDepartmentId2 == dep2.SysDepartmentId && s.SysDepartmentId3 == 0 {
  62. s1 := new(response.DepartmentSellers)
  63. s1.SysUserId = s.SysUserId
  64. s1.SysRealName = s.SysRealName
  65. v2.ChildrenList = append(v2.ChildrenList, s1)
  66. }
  67. }
  68. v1.ChildrenList = append(v1.ChildrenList, v2)
  69. for _, dep3 := range departmentList {
  70. if dep3.ParentId == dep2.SysDepartmentId {
  71. v3 := new(response.DepartmentSellers)
  72. v3.SysDepartmentId = dep3.SysDepartmentId
  73. v3.SysDepartmentName = dep3.SysDepartmentName
  74. for _, s := range seller {
  75. if s.SysDepartmentId3 == dep3.SysDepartmentId {
  76. s1 := new(response.DepartmentSellers)
  77. s1.SysUserId = s.SysUserId
  78. s1.SysRealName = s.SysRealName
  79. v3.ChildrenList = append(v3.ChildrenList, s1)
  80. }
  81. }
  82. v2.ChildrenList = append(v2.ChildrenList, v3)
  83. }
  84. }
  85. }
  86. }
  87. list = append(list, v1)
  88. }
  89. }
  90. resp := new(response.DepartmentGroupSellersResp)
  91. resp.List = list
  92. br.Msg = "获取成功"
  93. br.Success = true
  94. br.Ret = 200
  95. br.Data = resp
  96. }
  97. // UserTree
  98. // @Title 获取部门及用户树
  99. // @Description 获取部门及用户树
  100. // @Success 200 {object} models.DepartmentUserTree
  101. // @router /user_tree [get]
  102. func (this *SellerController) UserTree() {
  103. br := new(models.BaseResponse).Init()
  104. defer func() {
  105. if br.ErrMsg == "" {
  106. br.IsSendEmail = false
  107. }
  108. this.Data["json"] = br
  109. this.ServeJSON()
  110. }()
  111. sysUser := this.SysUser
  112. if sysUser == nil {
  113. br.Msg = "请登录"
  114. br.ErrMsg = "请登录,SysUser Is Empty"
  115. return
  116. }
  117. keywords := this.GetString("Keywords", "")
  118. keywords = strings.TrimSpace(keywords)
  119. // 获取部门/分组/用户
  120. departments, e := models.GetSysDepartmentList()
  121. if e != nil {
  122. br.Msg = "获取失败"
  123. br.ErrMsg = "获取部门失败,Err:" + e.Error()
  124. return
  125. }
  126. admins, e := models.GetSysUserListByIsEnabled(true)
  127. if e != nil {
  128. br.Msg = "获取失败"
  129. br.ErrMsg = "获取用户失败,Err:" + e.Error()
  130. return
  131. }
  132. // 部门
  133. departmentList := make([]*models.DepartmentUserTree, 0)
  134. departmentChild := make(map[int][]*models.DepartmentUserTree, 0)
  135. for _, v := range departments {
  136. t := new(models.DepartmentUserTree)
  137. t.NodeId = v.SysDepartmentId
  138. t.NodeType = 1
  139. t.NodeName = v.SysDepartmentName
  140. t.ParentId = v.ParentId
  141. t.Children = make([]*models.DepartmentUserTree, 0)
  142. departmentList = append(departmentList, t)
  143. if v.ParentId <= 0 {
  144. continue
  145. }
  146. if departmentChild[v.ParentId] == nil {
  147. departmentChild[v.ParentId] = make([]*models.DepartmentUserTree, 0)
  148. }
  149. departmentChild[v.ParentId] = append(departmentChild[v.ParentId], t)
  150. }
  151. // 用户map
  152. departmentAdmins := make(map[int][]*models.DepartmentUserTree, 0)
  153. for _, v := range admins {
  154. t := new(models.DepartmentUserTree)
  155. t.NodeId = v.SysUserId
  156. t.NodeType = 2
  157. t.NodeName = v.SysRealName
  158. t.Children = make([]*models.DepartmentUserTree, 0)
  159. var departmentId int
  160. if v.SysDepartmentId3 > 0 {
  161. departmentId = v.SysDepartmentId3
  162. } else if v.SysDepartmentId2 > 0 {
  163. departmentId = v.SysDepartmentId2
  164. } else {
  165. departmentId = v.SysDepartmentId1
  166. }
  167. t.ParentId = departmentId
  168. if departmentAdmins[departmentId] == nil {
  169. departmentAdmins[departmentId] = make([]*models.DepartmentUserTree, 0)
  170. }
  171. departmentAdmins[departmentId] = append(departmentAdmins[departmentId], t)
  172. }
  173. // 递归
  174. tree := services.DepartmentUserTreeRecursive(departmentList, departmentChild, departmentAdmins, 0)
  175. br.Data = tree
  176. br.Ret = 200
  177. br.Success = true
  178. br.Msg = "获取成功"
  179. }