package controllers import ( "eta/eta_mini_crm/models" "eta/eta_mini_crm/models/response" "eta/eta_mini_crm/services" "strings" ) type SellerController struct { BaseAuthController } // List // @Title 获取部门下销售 // @Description 获取部门下销售接口 // @Param AllEnabled query bool true "是否获取包含禁用的用户" // @Success 200 {object} company.DepartmentGroupSellersResp // @router /list [get] func (this *SellerController) List() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() getAllEnabled, _ := this.GetBool("AllEnabled", false) enabled := true //默认只获取正常状态的用户 if getAllEnabled { //获取所有状态的用户 enabled = false } departmentList, err := models.GetSysDepartmentList() if err != nil { br.Msg = "获取部门失败" br.ErrMsg = "获取部门失败,系统异常,Err:" + err.Error() return } seller, err := models.GetSysUserListByIsEnabled(enabled) if err != nil { br.Msg = "获取销售失败" br.ErrMsg = "获取销售失败,系统异常,Err:" + err.Error() return } // 遍历获取销售的层级结构 list := make([]*response.DepartmentSellers, 0) for _, dep1 := range departmentList { if dep1.ParentId == 0 { v1 := new(response.DepartmentSellers) v1.SysDepartmentId = dep1.SysDepartmentId v1.SysDepartmentName = dep1.SysDepartmentName for _, s := range seller { if s.SysDepartmentId1 == dep1.SysDepartmentId && s.SysDepartmentId2 == 0 { s1 := new(response.DepartmentSellers) s1.SysUserId = s.SysUserId s1.SysRealName = s.SysRealName v1.ChildrenList = append(v1.ChildrenList, s1) } } for _, dep2 := range departmentList { if dep2.ParentId == dep1.SysDepartmentId { v2 := new(response.DepartmentSellers) v2.SysDepartmentId = dep2.SysDepartmentId v2.SysDepartmentName = dep2.SysDepartmentName for _, s := range seller { if s.SysDepartmentId2 == dep2.SysDepartmentId && s.SysDepartmentId3 == 0 { s1 := new(response.DepartmentSellers) s1.SysUserId = s.SysUserId s1.SysRealName = s.SysRealName v2.ChildrenList = append(v2.ChildrenList, s1) } } v1.ChildrenList = append(v1.ChildrenList, v2) for _, dep3 := range departmentList { if dep3.ParentId == dep2.SysDepartmentId { v3 := new(response.DepartmentSellers) v3.SysDepartmentId = dep3.SysDepartmentId v3.SysDepartmentName = dep3.SysDepartmentName for _, s := range seller { if s.SysDepartmentId3 == dep3.SysDepartmentId { s1 := new(response.DepartmentSellers) s1.SysUserId = s.SysUserId s1.SysRealName = s.SysRealName v3.ChildrenList = append(v3.ChildrenList, s1) } } v2.ChildrenList = append(v2.ChildrenList, v3) } } } } list = append(list, v1) } } resp := new(response.DepartmentGroupSellersResp) resp.List = list br.Msg = "获取成功" br.Success = true 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 = "获取成功" }