|
@@ -5,6 +5,8 @@ import (
|
|
|
"eta/eta_api/models"
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -221,3 +223,137 @@ func (this *SysDepartmentController) ListDepartment() {
|
|
|
br.Msg = "获取成功"
|
|
|
br.Data = resp
|
|
|
}
|
|
|
+
|
|
|
+// DepartmentUserTree
|
|
|
+// @Title 获取部门及分组用户树
|
|
|
+// @Description 获取部门列表接口
|
|
|
+// @Success 200 {object} system.DepartmentUserTree
|
|
|
+// @router /department/user_tree [get]
|
|
|
+func (this *SysDepartmentController) DepartmentUserTree() {
|
|
|
+ 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 := system.GetDepartmentList()
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取部门失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ groups, e := system.GetFullGroup()
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取分组失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ cond := ` AND enabled = 1`
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ if keywords != "" {
|
|
|
+ kw := fmt.Sprint("%", keywords, "%")
|
|
|
+ cond += ` AND real_name LIKE ?`
|
|
|
+ pars = append(pars, kw)
|
|
|
+ }
|
|
|
+ admins, e := system.GetSysAdminList(cond, pars, []string{}, "")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取用户失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分组及用户
|
|
|
+ groupAdmins := make(map[int][]*system.DepartmentUserTree, 0)
|
|
|
+ for _, v := range admins {
|
|
|
+ t := new(system.DepartmentUserTree)
|
|
|
+ t.NodeId = v.AdminId
|
|
|
+ t.NodeType = 3
|
|
|
+ t.NodeName = v.RealName
|
|
|
+ t.Children = make([]*system.DepartmentUserTree, 0)
|
|
|
+ if groupAdmins[v.GroupId] == nil {
|
|
|
+ groupAdmins[v.GroupId] = make([]*system.DepartmentUserTree, 0)
|
|
|
+ }
|
|
|
+ groupAdmins[v.GroupId] = append(groupAdmins[v.GroupId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 小组
|
|
|
+ groupTeams := make(map[int][]*system.DepartmentUserTree, 0)
|
|
|
+ for _, v := range groups {
|
|
|
+ if v.ParentId == 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 关键词查询时不显示空组
|
|
|
+ if keywords != "" && groupAdmins[v.GroupId] == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ t := new(system.DepartmentUserTree)
|
|
|
+ t.NodeId = v.GroupId
|
|
|
+ t.NodeName = v.GroupName
|
|
|
+ t.NodeType = 2
|
|
|
+ t.Children = make([]*system.DepartmentUserTree, 0)
|
|
|
+ t.Children = groupAdmins[v.GroupId]
|
|
|
+ if groupTeams[v.ParentId] == nil {
|
|
|
+ groupTeams[v.ParentId] = make([]*system.DepartmentUserTree, 0)
|
|
|
+ }
|
|
|
+ groupTeams[v.ParentId] = append(groupTeams[v.ParentId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 大组
|
|
|
+ departmentGroups := make(map[int][]*system.DepartmentUserTree, 0)
|
|
|
+ for _, v := range groups {
|
|
|
+ if v.ParentId > 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 关键词查询时不显示空组
|
|
|
+ if keywords != "" && groupAdmins[v.GroupId] == nil && groupTeams[v.GroupId] == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ t := new(system.DepartmentUserTree)
|
|
|
+ t.NodeId = v.GroupId
|
|
|
+ t.NodeName = v.GroupName
|
|
|
+ t.NodeType = 2
|
|
|
+ t.Children = make([]*system.DepartmentUserTree, 0)
|
|
|
+ if groupTeams[v.GroupId] != nil {
|
|
|
+ t.Children = append(t.Children, groupTeams[v.GroupId]...)
|
|
|
+ }
|
|
|
+ if groupAdmins[v.GroupId] != nil {
|
|
|
+ t.Children = append(t.Children, groupAdmins[v.GroupId]...)
|
|
|
+ }
|
|
|
+ if departmentGroups[v.DepartmentId] == nil {
|
|
|
+ departmentGroups[v.DepartmentId] = make([]*system.DepartmentUserTree, 0)
|
|
|
+ }
|
|
|
+ departmentGroups[v.DepartmentId] = append(departmentGroups[v.DepartmentId], t)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 部门
|
|
|
+ list := make([]*system.DepartmentUserTree, 0)
|
|
|
+ for _, v := range departments {
|
|
|
+ // 关键词查询时不显示空部门
|
|
|
+ if keywords != "" && departmentGroups[v.DepartmentId] == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ t := new(system.DepartmentUserTree)
|
|
|
+ t.NodeId = v.DepartmentId
|
|
|
+ t.NodeType = 1
|
|
|
+ t.NodeName = v.DepartmentName
|
|
|
+ t.Children = departmentGroups[v.DepartmentId]
|
|
|
+ list = append(list, t)
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = list
|
|
|
+}
|