Bläddra i källkod

新增部门用户树

hsun 2 veckor sedan
förälder
incheckning
68d730222f
4 ändrade filer med 127 tillägg och 0 borttagningar
  1. 93 0
      controllers/seller.go
  2. 9 0
      models/sys_department.go
  3. 9 0
      routers/commentsRouter.go
  4. 16 0
      services/sys_department.go

+ 93 - 0
controllers/seller.go

@@ -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 = "获取成功"
+}

+ 9 - 0
models/sys_department.go

@@ -209,3 +209,12 @@ func GetChildSysDepartmentListByIds(sysDepartmentIds []int) (items []*SysDepartm
 	_, err = o.Raw(sql, sysDepartmentIds).QueryRows(&items)
 	return
 }
+
+// DepartmentUserTree 部门用户树
+type DepartmentUserTree struct {
+	NodeId   int                   `description:"节点ID"`
+	NodeType int                   `description:"节点类型:1-部门;2-用户"`
+	NodeName string                `description:"节点名称"`
+	ParentId int                   `description:"父级ID"`
+	Children []*DepartmentUserTree `description:"子节点"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -106,6 +106,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SellerController"],
+        beego.ControllerComments{
+            Method: "UserTree",
+            Router: `/user_tree`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysDepartmentController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysDepartmentController"],
         beego.ControllerComments{
             Method: "Add",

+ 16 - 0
services/sys_department.go

@@ -104,3 +104,19 @@ func GetSysDepartmentPathIdsById(sysDepartmentId int) (pathIds []int, err error)
 	}
 	return
 }
+
+func DepartmentUserTreeRecursive(list []*models.DepartmentUserTree, departmentChild, departmentAdmins map[int][]*models.DepartmentUserTree, parentId int) []*models.DepartmentUserTree {
+	res := make([]*models.DepartmentUserTree, 0)
+	for _, v := range list {
+		if v.ParentId == parentId {
+			if departmentChild[v.NodeId] != nil {
+				v.Children = DepartmentUserTreeRecursive(list, departmentChild, departmentAdmins, v.NodeId)
+			}
+			if departmentAdmins[v.NodeId] != nil {
+				v.Children = append(v.Children, departmentAdmins[v.NodeId]...)
+			}
+			res = append(res, v)
+		}
+	}
+	return res
+}