|
@@ -3,6 +3,8 @@ package controllers
|
|
|
import (
|
|
|
"eta/eta_mini_crm/models"
|
|
|
"eta/eta_mini_crm/models/response"
|
|
|
+ "eta/eta_mini_crm/services"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
type SellerController struct {
|
|
@@ -98,3 +100,94 @@ func (this *SellerController) List() {
|
|
|
br.Ret = 200
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+// UserTree
|
|
|
+// @Title 获取部门及用户树
|
|
|
+// @Description 获取部门及用户树
|
|
|
+// @Success 200 {object} models.DepartmentUserTree
|
|
|
+// @router /user_tree [get]
|
|
|
+func (this *SellerController) UserTree() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ keywords := this.GetString("Keywords", "")
|
|
|
+ keywords = strings.TrimSpace(keywords)
|
|
|
+
|
|
|
+ // 获取部门/分组/用户
|
|
|
+ departments, e := models.GetSysDepartmentList()
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取部门失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ admins, e := models.GetSysUserListByIsEnabled(true)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取用户失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门
|
|
|
+ departmentList := make([]*models.DepartmentUserTree, 0)
|
|
|
+ departmentChild := make(map[int][]*models.DepartmentUserTree, 0)
|
|
|
+ for _, v := range departments {
|
|
|
+ t := new(models.DepartmentUserTree)
|
|
|
+ t.NodeId = v.SysDepartmentId
|
|
|
+ t.NodeType = 1
|
|
|
+ t.NodeName = v.SysDepartmentName
|
|
|
+ t.ParentId = v.ParentId
|
|
|
+ t.Children = make([]*models.DepartmentUserTree, 0)
|
|
|
+ departmentList = append(departmentList, t)
|
|
|
+
|
|
|
+ if v.ParentId <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if departmentChild[v.ParentId] == nil {
|
|
|
+ departmentChild[v.ParentId] = make([]*models.DepartmentUserTree, 0)
|
|
|
+ }
|
|
|
+ departmentChild[v.ParentId] = append(departmentChild[v.ParentId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 用户map
|
|
|
+ departmentAdmins := make(map[int][]*models.DepartmentUserTree, 0)
|
|
|
+ for _, v := range admins {
|
|
|
+ t := new(models.DepartmentUserTree)
|
|
|
+ t.NodeId = v.SysUserId
|
|
|
+ t.NodeType = 2
|
|
|
+ t.NodeName = v.SysRealName
|
|
|
+ t.Children = make([]*models.DepartmentUserTree, 0)
|
|
|
+
|
|
|
+ var departmentId int
|
|
|
+ if v.SysDepartmentId3 > 0 {
|
|
|
+ departmentId = v.SysDepartmentId3
|
|
|
+ } else if v.SysDepartmentId2 > 0 {
|
|
|
+ departmentId = v.SysDepartmentId2
|
|
|
+ } else {
|
|
|
+ departmentId = v.SysDepartmentId1
|
|
|
+ }
|
|
|
+ t.ParentId = departmentId
|
|
|
+ if departmentAdmins[departmentId] == nil {
|
|
|
+ departmentAdmins[departmentId] = make([]*models.DepartmentUserTree, 0)
|
|
|
+ }
|
|
|
+ departmentAdmins[departmentId] = append(departmentAdmins[departmentId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 递归
|
|
|
+ tree := services.DepartmentUserTreeRecursive(departmentList, departmentChild, departmentAdmins, 0)
|
|
|
+
|
|
|
+ br.Data = tree
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+}
|