package controllers

import (
	"eta/eta_api/models"
	"eta/eta_api/models/company"
	"eta/eta_api/models/system"
	"eta/eta_api/services"
	"eta/eta_api/utils"
	"fmt"
	"strconv"
)

// CompanySellerController 销售管理
type CompanySellerController struct {
	BaseAuthController
}

// CheckListV2
// @Title 获取组长/组员下销售(根据部门、分组)
// @Description 获取组长/组员下销售(根据部门、分组)接口
// @Param   AllSeller   query   bool  true       "是否获取部门所有的销售信息"
// @Param   Status   query   int  true       "客户状态 1:流失 0:非流失"
// @Param   AllEnabled   query   bool  true       "是否获取包含禁用的用户"
// @Success 200 {object} company.DepartmentGroupSellersResp
// @router /seller/check/listV2 [get]
func (this *CompanySellerController) CheckListV2() {
	br := new(models.BaseResponse).Init()
	defer func() {
		this.Data["json"] = br
		this.ServeJSON()
	}()
	sysUser := this.SysUser
	if sysUser == nil {
		br.Msg = "请登录"
		br.ErrMsg = "请登录,SysUser Is Empty"
		br.Ret = 408
		return
	}

	roleCodeTypeStr := ``
	productId := services.GetProductId(sysUser.RoleTypeCode)
	switch productId {
	case 1:
		roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_FICC_SELLER + `","` + utils.ROLE_TYPE_CODE_FICC_GROUP + `","` + utils.ROLE_TYPE_CODE_FICC_TEAM + `"`
	case 2:
		roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `"`
	}

	// ficc管理员,不要只查销售
	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
		roleCodeTypeStr = ``
	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
		// 权益管理员,查看所有权益的账号
		roleCodeTypeStr = `"` + utils.ROLE_TYPE_CODE_RAI_SELLER + `","` + utils.ROLE_TYPE_CODE_RAI_GROUP + `","` + utils.ROLE_TYPE_CODE_RAI_RESEARCHR + `","` + utils.ROLE_TYPE_CODE_RAI_ADMIN + `"`
	}

	getAllSeller, _ := this.GetBool("AllSeller", false)
	status, _ := this.GetInt("Status", 0)
	getAllEnabled, _ := this.GetBool("AllEnabled", false)
	enabled := 1       //默认只获取正常状态的用户
	if getAllEnabled { //获取所有状态的用户
		enabled = -1
	}
	list := make([]company.DepartmentGroupSellers, 0)
	if getAllSeller == false {
		//超管看部门、小组、销售
		if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN {
			departmentList, err := system.GetDepartmentList()
			if err != nil {
				br.Msg = "获取失败"
				br.ErrMsg = "获取部门失败,Err:" + err.Error()
				return
			}
			for _, department := range departmentList {
				departmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
				item := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("department_", department.DepartmentId),
					//AdminName string `description:"系统用户名称"`
					RealName:     department.DepartmentName,
					ChildrenList: departmentGroupSellerList,
				}

				groupList, err := system.GetSysGroupByDepartmentId(department.DepartmentId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					groupItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("group_", group.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     group.GroupName,
						ChildrenList: groupSellerList,
					}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的销售(直属分组)
					groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}

					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, item)
					//}

					//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
					//if err != nil {
					//	br.Msg = "获取销售失败"
					//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
					//	return
					//}
					//for _, seller := range sellerList {
					//	sellerItem := company.DepartmentGroupSellers{
					//		AdminId: fmt.Sprint(seller.AdminId),
					//		//AdminName string `description:"系统用户名称"`
					//		RealName:     seller.RealName,
					//		Authority:    seller.Authority,
					//		RoleTypeCode: seller.RoleTypeCode,
					//	}
					//	groupSellerList = append(groupSellerList, sellerItem)
					//}
					//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
					groupItem.ChildrenList = groupSellerList
					if len(groupSellerList) > 0 {
						departmentGroupSellerList = append(departmentGroupSellerList, groupItem)
					}
				}

				//分组为0的销售(直属部门)
				departmentSellerList, err := system.GetDepartmentGroupSysUserList(department.DepartmentId, 0, roleCodeTypeStr)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(departmentSellerList) > 0 {
					tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range departmentSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
					}
					//排个序
					tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
					departmentGroupSellerList = append(departmentGroupSellerList, tmpDepartmentGroupSellersList...)
				}

				item.ChildrenList = departmentGroupSellerList
				if len(departmentGroupSellerList) > 0 {
					list = append(list, item)
				}
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM || sysUser.Authority == 4 {
			//销售组长看销售
			if status == 0 {
				directorId := sysUser.GroupId
				fmt.Println("directorId:", directorId)
				groupList, err := system.GetSysGroupByDirectorId(directorId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					groupItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("group_", group.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     group.GroupName,
						ChildrenList: groupSellerList,
					}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的销售(直属分组)
					groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}

					groupItem.ChildrenList = groupSellerList
					if len(groupSellerList) > 0 {
						list = append(list, groupItem)
					}
				}
			} else {
				departmentStr := `1,2`
				departmentList, err := system.GetDepartmentListByIds(departmentStr)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取部门失败,Err:" + err.Error()
					return
				}
				for _, department := range departmentList {
					departmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
					item := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("department_", department.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     department.DepartmentName,
						ChildrenList: departmentGroupSellerList,
					}

					groupList, err := system.GetSysGroupByDepartmentId(department.DepartmentId)
					if err != nil {
						br.Msg = "获取失败"
						br.ErrMsg = "获取分组失败,Err:" + err.Error()
						return
					}
					for _, group := range groupList {
						groupSellerList := make([]company.DepartmentGroupSellers, 0)
						groupItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("group_", group.DepartmentId),
							//AdminName string `description:"系统用户名称"`
							RealName:     group.GroupName,
							ChildrenList: groupSellerList,
						}
						teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
						if err != nil {
							br.Msg = "获取小组失败"
							br.ErrMsg = "获取小组失败,Err:" + err.Error()
							return
						}
						for _, team := range teamList {
							teamSellerList := make([]company.DepartmentGroupSellers, 0)
							teamItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint("team_", team.GroupId),
								//AdminName string `description:"系统用户名称"`
								RealName:     team.GroupName,
								ChildrenList: teamSellerList,
							}
							sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
							if err != nil {
								br.Msg = "获取销售失败"
								br.ErrMsg = "获取销售失败,Err:" + err.Error()
								return
							}
							for _, seller := range sellerList {
								sellerItem := company.DepartmentGroupSellers{
									AdminId: fmt.Sprint(seller.AdminId),
									//AdminName string `description:"系统用户名称"`
									RealName:     seller.RealName,
									Authority:    seller.Authority,
									RoleTypeCode: seller.RoleTypeCode,
								}
								//fmt.Println("seller.RealName:", seller.RealName)
								teamSellerList = append(teamSellerList, sellerItem)
							}
							teamSellerList = sortDepartmentGroupSellers(teamSellerList)
							teamItem.ChildrenList = teamSellerList
							if len(teamSellerList) > 0 {
								groupSellerList = append(groupSellerList, teamItem)
							}
						}
						//分组为0的人,不光是销售(直属分组)
						groupTeamSellerList, err := system.GetGroupSysUserList(group.GroupId)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						if len(groupTeamSellerList) > 0 {
							tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
							for _, seller := range groupTeamSellerList {
								sellerItem := company.DepartmentGroupSellers{
									AdminId: fmt.Sprint(seller.AdminId),
									//AdminName string `description:"系统用户名称"`
									RealName:     seller.RealName,
									Authority:    seller.Authority,
									RoleTypeCode: seller.RoleTypeCode,
								}
								tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
							}
							//排个序
							tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
							groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
						}

						//groupItem.ChildrenList = groupSellerList
						//if len(groupSellerList) > 0 {
						//	list = append(list, item)
						//}

						//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
						//if err != nil {
						//	br.Msg = "获取销售失败"
						//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
						//	return
						//}
						//for _, seller := range sellerList {
						//	sellerItem := company.DepartmentGroupSellers{
						//		AdminId: fmt.Sprint(seller.AdminId),
						//		//AdminName string `description:"系统用户名称"`
						//		RealName:     seller.RealName,
						//		Authority:    seller.Authority,
						//		RoleTypeCode: seller.RoleTypeCode,
						//	}
						//	groupSellerList = append(groupSellerList, sellerItem)
						//}
						//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
						groupItem.ChildrenList = groupSellerList
						if len(groupSellerList) > 0 {
							departmentGroupSellerList = append(departmentGroupSellerList, groupItem)
						}
					}

					//分组为0的人,不光是销售(直属部门)
					departmentSellerList, err := system.GetDepartmentGroupSysUserList(department.DepartmentId, 0, "")
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(departmentSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range departmentSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						departmentGroupSellerList = append(departmentGroupSellerList, tmpDepartmentGroupSellersList...)
					}

					item.ChildrenList = departmentGroupSellerList
					if len(departmentGroupSellerList) > 0 {
						list = append(list, item)
					}
				}
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_COMPLIANCE || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FINANCE || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN { //合规或财务或ficc管理员
			departmentStr := `2,5,7` //合规
			switch sysUser.RoleTypeCode {
			case utils.ROLE_TYPE_CODE_FINANCE: //财务
				departmentStr = `2,5,8`
			case utils.ROLE_TYPE_CODE_FICC_ADMIN: //ficc管理员
				departmentStr = utils.GetFiccAdminDepartmentIds()
			}
			departmentList, err := system.GetDepartmentListByIds(departmentStr)
			if err != nil {
				br.Msg = "获取失败"
				br.ErrMsg = "获取部门失败,Err:" + err.Error()
				return
			}
			for _, department := range departmentList {
				fmt.Println(department)
				departmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
				item := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("department_", department.DepartmentId),
					//AdminName string `description:"系统用户名称"`
					RealName:     department.DepartmentName,
					ChildrenList: departmentGroupSellerList,
				}

				groupList, err := system.GetSysGroupByDepartmentId(department.DepartmentId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					groupItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("group_", group.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     group.GroupName,
						ChildrenList: groupSellerList,
					}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的销售(直属分组)
					groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}

					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, item)
					//}

					//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
					//if err != nil {
					//	br.Msg = "获取销售失败"
					//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
					//	return
					//}
					//for _, seller := range sellerList {
					//	sellerItem := company.DepartmentGroupSellers{
					//		AdminId: fmt.Sprint(seller.AdminId),
					//		//AdminName string `description:"系统用户名称"`
					//		RealName:     seller.RealName,
					//		Authority:    seller.Authority,
					//		RoleTypeCode: seller.RoleTypeCode,
					//	}
					//	groupSellerList = append(groupSellerList, sellerItem)
					//}
					//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
					groupItem.ChildrenList = groupSellerList
					if len(groupSellerList) > 0 {
						departmentGroupSellerList = append(departmentGroupSellerList, groupItem)
					}
				}

				//分组为0的销售(直属部门)
				departmentSellerList, err := system.GetDepartmentGroupSysUserList(department.DepartmentId, 0, roleCodeTypeStr)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(departmentSellerList) > 0 {
					tmpDepartmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range departmentSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSellerList = append(tmpDepartmentGroupSellerList, sellerItem)
					}
					//排个序
					tmpDepartmentGroupSellerList = sortDepartmentGroupSellers(tmpDepartmentGroupSellerList)
					departmentGroupSellerList = append(departmentGroupSellerList, tmpDepartmentGroupSellerList...)
				}

				item.ChildrenList = departmentGroupSellerList
				if len(departmentGroupSellerList) > 0 {
					list = append(list, item)
				}
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN || sysUser.Authority == 1 {
			//部门管理员看小组、销售
			departmentId := sysUser.DepartmentId
			switch sysUser.RoleTypeCode {
			case utils.ROLE_TYPE_CODE_RAI_ADMIN: //权益管理员
				departmentId = 5
			case utils.ROLE_TYPE_CODE_FICC_ADMIN: //ficc管理员
				departmentId = 2
			}
			groupList, err := system.GetSysGroupByDepartmentId(departmentId)
			if err != nil {
				br.Msg = "获取失败"
				br.ErrMsg = "获取分组失败,Err:" + err.Error()
				return
			}
			for _, group := range groupList {
				groupSellerList := make([]company.DepartmentGroupSellers, 0)
				groupItem := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("group_", group.DepartmentId),
					//AdminName string `description:"系统用户名称"`
					RealName:     group.GroupName,
					ChildrenList: groupSellerList,
				}
				teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
				if err != nil {
					br.Msg = "获取小组失败"
					br.ErrMsg = "获取小组失败,Err:" + err.Error()
					return
				}
				for _, team := range teamList {
					teamSellerList := make([]company.DepartmentGroupSellers, 0)
					teamItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("team_", team.GroupId),
						//AdminName string `description:"系统用户名称"`
						RealName:     team.GroupName,
						ChildrenList: teamSellerList,
					}
					sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					for _, seller := range sellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						//fmt.Println("seller.RealName:", seller.RealName)
						teamSellerList = append(teamSellerList, sellerItem)
					}
					teamSellerList = sortDepartmentGroupSellers(teamSellerList)
					teamItem.ChildrenList = teamSellerList
					if len(teamSellerList) > 0 {
						groupSellerList = append(groupSellerList, teamItem)
					}
				}
				//分组为0的销售(直属分组)
				groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(groupTeamSellerList) > 0 {
					tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range groupTeamSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
					}
					//排个序
					tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
					groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
				}

				//groupItem.ChildrenList = groupSellerList
				//if len(groupSellerList) > 0 {
				//	list = append(list, item)
				//}

				//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//for _, seller := range sellerList {
				//	sellerItem := company.DepartmentGroupSellers{
				//		AdminId: fmt.Sprint(seller.AdminId),
				//		//AdminName string `description:"系统用户名称"`
				//		RealName:     seller.RealName,
				//		Authority:    seller.Authority,
				//		RoleTypeCode: seller.RoleTypeCode,
				//	}
				//	groupSellerList = append(groupSellerList, sellerItem)
				//}
				//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
				groupItem.ChildrenList = groupSellerList
				if len(groupSellerList) > 0 {
					list = append(list, groupItem)
				}
			}

			//分组为0的销售(直属部门)
			departmentSellerList, err := system.GetDepartmentGroupSysUserList(departmentId, 0, roleCodeTypeStr)
			if err != nil {
				br.Msg = "获取销售失败"
				br.ErrMsg = "获取销售失败,Err:" + err.Error()
				return
			}
			if len(departmentSellerList) > 0 {
				tmpDepartmentGroupSeller := make([]company.DepartmentGroupSellers, 0)
				for _, seller := range departmentSellerList {
					sellerItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint(seller.AdminId),
						//AdminName string `description:"系统用户名称"`
						RealName:     seller.RealName,
						Authority:    seller.Authority,
						RoleTypeCode: seller.RoleTypeCode,
					}
					tmpDepartmentGroupSeller = append(tmpDepartmentGroupSeller, sellerItem)
				}
				tmpDepartmentGroupSeller = sortDepartmentGroupSellers(tmpDepartmentGroupSeller)
				list = append(list, tmpDepartmentGroupSeller...)
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || (sysUser.Authority == 2 && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_FICC_GROUP) {
			// 权益组长看小组
			if status == 0 {
				sellerList, err := system.GetTeamSysUserList(sysUser.GroupId, enabled)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				for _, seller := range sellerList {
					sellerItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint(seller.AdminId),
						//AdminName string `description:"系统用户名称"`
						RealName:     seller.RealName,
						Authority:    seller.Authority,
						RoleTypeCode: seller.RoleTypeCode,
					}
					//fmt.Println("seller.RealName:", seller.RealName)
					list = append(list, sellerItem)
				}
				list = sortDepartmentGroupSellers(list)

				//正常来说没有所有人都应该在某个小组下,要不就是小组名为 无 的小组
				//分组为0的销售(直属分组)
				//groupTeamSellerList, err := system.GetGrooupsysUserList(sysUser.GroupId, 0, roleCodeTypeStr)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//if len(groupTeamSellerList) > 0 {
				//	tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
				//	for _, seller := range groupTeamSellerList {
				//		sellerItem := company.DepartmentGroupSellers{
				//			AdminId: fmt.Sprint(seller.AdminId),
				//			//AdminName string `description:"系统用户名称"`
				//			RealName:     seller.RealName,
				//			Authority:    seller.Authority,
				//			RoleTypeCode: seller.RoleTypeCode,
				//		}
				//		tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
				//	}
				//	//排个序
				//	tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
				//	list = append(list, tmpDepartmentGroupSellersList...)
				//}
				//sellerList, err := system.GetDepartmentGroupSysUserList(sysUser.DepartmentId, sysUser.GroupId, roleCodeTypeStr)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//for _, seller := range sellerList {
				//	sellerItem := company.DepartmentGroupSellers{
				//		AdminId: fmt.Sprint(seller.AdminId),
				//		//AdminName string `description:"系统用户名称"`
				//		RealName:     seller.RealName,
				//		Authority:    seller.Authority,
				//		RoleTypeCode: seller.RoleTypeCode,
				//	}
				//	list = append(list, sellerItem)
				//	list = sortDepartmentGroupSellers(list)
				//}
			} else {
				departmentId := 5
				groupList, err := system.GetSysGroupByDepartmentId(departmentId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					groupItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("group_", group.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     group.GroupName,
						ChildrenList: groupSellerList,
					}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的销售(直属分组)
					groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}

					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, item)
					//}

					//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
					//if err != nil {
					//	br.Msg = "获取销售失败"
					//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
					//	return
					//}
					//for _, seller := range sellerList {
					//	sellerItem := company.DepartmentGroupSellers{
					//		AdminId: fmt.Sprint(seller.AdminId),
					//		//AdminName string `description:"系统用户名称"`
					//		RealName:     seller.RealName,
					//		Authority:    seller.Authority,
					//		RoleTypeCode: seller.RoleTypeCode,
					//	}
					//	groupSellerList = append(groupSellerList, sellerItem)
					//}
					//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
					groupItem.ChildrenList = groupSellerList
					if len(groupSellerList) > 0 {
						list = append(list, groupItem)
					}
				}

				//分组为0的销售(直属部门)
				departmentSellerList, err := system.GetDepartmentGroupSysUserList(departmentId, 0, roleCodeTypeStr)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(departmentSellerList) > 0 {
					tmpDepartmentGroupSeller := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range departmentSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSeller = append(tmpDepartmentGroupSeller, sellerItem)
					}
					tmpDepartmentGroupSeller = sortDepartmentGroupSellers(tmpDepartmentGroupSeller)
					list = append(list, tmpDepartmentGroupSeller...)
				}
			}

		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || sysUser.Authority == 2 {
			// 销售主管看小组
			if status == 0 {
				pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "查询父级id异常" + err.Error()
					return
				}
				var realGroupId int
				if pid != nil && *pid > 0 {
					//主管角色放在了三级分组下
					realGroupId = *pid
				} else {
					//主管角色放在了二级分组下
					realGroupId = sysUser.GroupId
				}
				groupList, err := system.GetSysGroupByGroupId(realGroupId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					//groupItem := company.DepartmentGroupSellers{
					//	AdminId: fmt.Sprint("group_", group.DepartmentId),
					//	//AdminName string `description:"系统用户名称"`
					//	RealName:     group.GroupName,
					//	ChildrenList: groupSellerList,
					//}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的销售(直属分组)
					groupTeamSellerList, err := system.GetGrooupsysUserList(realGroupId, roleCodeTypeStr, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}
					list = groupSellerList
					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, item)
					//}

					//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
					//if err != nil {
					//	br.Msg = "获取销售失败"
					//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
					//	return
					//}
					//for _, seller := range sellerList {
					//	sellerItem := company.DepartmentGroupSellers{
					//		AdminId: fmt.Sprint(seller.AdminId),
					//		//AdminName string `description:"系统用户名称"`
					//		RealName:     seller.RealName,
					//		Authority:    seller.Authority,
					//		RoleTypeCode: seller.RoleTypeCode,
					//	}
					//	groupSellerList = append(groupSellerList, sellerItem)
					//}
					//groupSellerList = sortDepartmentGroupSellers(groupSellerList)

					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, groupItem)
					//}

				}

				//分组为0的销售(直属二级分组)
				//departmentSellerList, err := system.GetDepartmentGroupSysUserList(2, realGroupId, roleCodeTypeStr)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//if len(departmentSellerList) > 0 {
				//	tmpDepartmentGroupSeller := make([]company.DepartmentGroupSellers, 0)
				//	for _, seller := range departmentSellerList {
				//		sellerItem := company.DepartmentGroupSellers{
				//			AdminId: fmt.Sprint(seller.AdminId),
				//			//AdminName string `description:"系统用户名称"`
				//			RealName:     seller.RealName,
				//			Authority:    seller.Authority,
				//			RoleTypeCode: seller.RoleTypeCode,
				//		}
				//		tmpDepartmentGroupSeller = append(tmpDepartmentGroupSeller, sellerItem)
				//	}
				//	tmpDepartmentGroupSeller = sortDepartmentGroupSellers(tmpDepartmentGroupSeller)
				//	list = append(list, tmpDepartmentGroupSeller...)
				//}
				//pid, err := company.GetParentIdFromGroup(sysUser.GroupId)
				//if err != nil {
				//	br.Msg = "获取失败"
				//	br.ErrMsg = "查询父级id异常" + err.Error()
				//	return
				//}
				//if pid != nil && *pid > 0 {
				//	//主管角色放在了三级分组下
				//	//
				//
				//
				//} else {
				//	//主管角色放在了二级分组下
				//
				//}
				//ids, err := company.GetGroupIdsByParentId(*pid)
				//if err != nil {
				//	br.Msg = "获取失败"
				//	br.ErrMsg = "查询父级id异常" + err.Error()
				//	return
				//}
				//var idSlice []string
				//var sid string
				//for _, id := range ids {
				//	idSlice = append(idSlice, *id)
				//}
				//sid = strings.Join(idSlice, ",")
				//sellerList, err := system.GetTeamSysUserListByIds(sid)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//for _, seller := range sellerList {
				//	sellerItem := company.DepartmentGroupSellers{
				//		AdminId: fmt.Sprint(seller.AdminId),
				//		//AdminName string `description:"系统用户名称"`
				//		RealName:     seller.RealName,
				//		Authority:    seller.Authority,
				//		RoleTypeCode: seller.RoleTypeCode,
				//	}
				//	fmt.Println("seller.RealName:", seller.RealName)
				//	list = append(list, sellerItem)
				//}
				//list = sortDepartmentGroupSellers(list)
				//
				////分组为0的销售(直属分组)
				//groupTeamSellerList, err := system.GetGrooupsysUserList(sysUser.GroupId, roleCodeTypeStr)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//if len(groupTeamSellerList) > 0 {
				//	tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
				//	for _, seller := range groupTeamSellerList {
				//		sellerItem := company.DepartmentGroupSellers{
				//			AdminId: fmt.Sprint(seller.AdminId),
				//			//AdminName string `description:"系统用户名称"`
				//			RealName:     seller.RealName,
				//			Authority:    seller.Authority,
				//			RoleTypeCode: seller.RoleTypeCode,
				//		}
				//		tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
				//	}
				//	//排个序
				//	tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
				//	list = append(list, tmpDepartmentGroupSellersList...)
				//}
				//sellerList, err := system.GetDepartmentGroupSysUserList(sysUser.DepartmentId, sysUser.GroupId, roleCodeTypeStr)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//for _, seller := range sellerList {
				//	sellerItem := company.DepartmentGroupSellers{
				//		AdminId: fmt.Sprint(seller.AdminId),
				//		//AdminName string `description:"系统用户名称"`
				//		RealName:     seller.RealName,
				//		Authority:    seller.Authority,
				//		RoleTypeCode: seller.RoleTypeCode,
				//	}
				//	list = append(list, sellerItem)
				//	list = sortDepartmentGroupSellers(list)
				//}

				//正常来说没有所有人都应该在某个小组下,要不就是小组名为 无 的小组
			} else {
				//var departmentStr string
				//if utils.RunMode == "release" {
				//	departmentStr = `1,2`
				//} else {
				//	departmentStr = `1,2`
				//}
				departmentStr := `1,2`
				departmentList, err := system.GetDepartmentListByIds(departmentStr)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取部门失败,Err:" + err.Error()
					return
				}
				for _, department := range departmentList {
					departmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
					item := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("department_", department.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     department.DepartmentName,
						ChildrenList: departmentGroupSellerList,
					}

					groupList, err := system.GetSysGroupByDepartmentId(department.DepartmentId)
					if err != nil {
						br.Msg = "获取失败"
						br.ErrMsg = "获取分组失败,Err:" + err.Error()
						return
					}
					for _, group := range groupList {
						groupSellerList := make([]company.DepartmentGroupSellers, 0)
						groupItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("group_", group.DepartmentId),
							//AdminName string `description:"系统用户名称"`
							RealName:     group.GroupName,
							ChildrenList: groupSellerList,
						}
						teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
						if err != nil {
							br.Msg = "获取小组失败"
							br.ErrMsg = "获取小组失败,Err:" + err.Error()
							return
						}
						for _, team := range teamList {
							teamSellerList := make([]company.DepartmentGroupSellers, 0)
							teamItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint("team_", team.GroupId),
								//AdminName string `description:"系统用户名称"`
								RealName:     team.GroupName,
								ChildrenList: teamSellerList,
							}
							sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
							if err != nil {
								br.Msg = "获取销售失败"
								br.ErrMsg = "获取销售失败,Err:" + err.Error()
								return
							}
							for _, seller := range sellerList {
								sellerItem := company.DepartmentGroupSellers{
									AdminId: fmt.Sprint(seller.AdminId),
									//AdminName string `description:"系统用户名称"`
									RealName:     seller.RealName,
									Authority:    seller.Authority,
									RoleTypeCode: seller.RoleTypeCode,
								}
								//fmt.Println("seller.RealName:", seller.RealName)
								teamSellerList = append(teamSellerList, sellerItem)
							}
							teamSellerList = sortDepartmentGroupSellers(teamSellerList)
							teamItem.ChildrenList = teamSellerList
							if len(teamSellerList) > 0 {
								groupSellerList = append(groupSellerList, teamItem)
							}
						}
						//分组为0的人,不光是销售(直属分组)
						groupTeamSellerList, err := system.GetGroupSysUserList(group.GroupId)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						if len(groupTeamSellerList) > 0 {
							tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
							for _, seller := range groupTeamSellerList {
								sellerItem := company.DepartmentGroupSellers{
									AdminId: fmt.Sprint(seller.AdminId),
									//AdminName string `description:"系统用户名称"`
									RealName:     seller.RealName,
									Authority:    seller.Authority,
									RoleTypeCode: seller.RoleTypeCode,
								}
								tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
							}
							//排个序
							tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
							groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
						}

						//groupItem.ChildrenList = groupSellerList
						//if len(groupSellerList) > 0 {
						//	list = append(list, item)
						//}

						//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
						//if err != nil {
						//	br.Msg = "获取销售失败"
						//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
						//	return
						//}
						//for _, seller := range sellerList {
						//	sellerItem := company.DepartmentGroupSellers{
						//		AdminId: fmt.Sprint(seller.AdminId),
						//		//AdminName string `description:"系统用户名称"`
						//		RealName:     seller.RealName,
						//		Authority:    seller.Authority,
						//		RoleTypeCode: seller.RoleTypeCode,
						//	}
						//	groupSellerList = append(groupSellerList, sellerItem)
						//}
						//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
						groupItem.ChildrenList = groupSellerList
						if len(groupSellerList) > 0 {
							departmentGroupSellerList = append(departmentGroupSellerList, groupItem)
						}
					}

					//分组为0的人,不光是销售(直属部门)
					departmentSellerList, err := system.GetDepartmentGroupSysUserList(department.DepartmentId, 0, "")
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(departmentSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range departmentSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						departmentGroupSellerList = append(departmentGroupSellerList, tmpDepartmentGroupSellersList...)
					}

					item.ChildrenList = departmentGroupSellerList
					if len(departmentGroupSellerList) > 0 {
						list = append(list, item)
					}
				}
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER && status == 1 {
			//var departmentStr string
			//if utils.RunMode == "release" {
			//	departmentStr = `1,2`
			//} else {
			//	departmentStr = `1,2`
			//}
			departmentStr := `1,2`
			departmentList, err := system.GetDepartmentListByIds(departmentStr)
			if err != nil {
				br.Msg = "获取失败"
				br.ErrMsg = "获取部门失败,Err:" + err.Error()
				return
			}
			for _, department := range departmentList {
				departmentGroupSellerList := make([]company.DepartmentGroupSellers, 0)
				item := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("department_", department.DepartmentId),
					//AdminName string `description:"系统用户名称"`
					RealName:     department.DepartmentName,
					ChildrenList: departmentGroupSellerList,
				}

				groupList, err := system.GetSysGroupByDepartmentId(department.DepartmentId)
				if err != nil {
					br.Msg = "获取失败"
					br.ErrMsg = "获取分组失败,Err:" + err.Error()
					return
				}
				for _, group := range groupList {
					groupSellerList := make([]company.DepartmentGroupSellers, 0)
					groupItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("group_", group.DepartmentId),
						//AdminName string `description:"系统用户名称"`
						RealName:     group.GroupName,
						ChildrenList: groupSellerList,
					}
					teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
					if err != nil {
						br.Msg = "获取小组失败"
						br.ErrMsg = "获取小组失败,Err:" + err.Error()
						return
					}
					for _, team := range teamList {
						teamSellerList := make([]company.DepartmentGroupSellers, 0)
						teamItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint("team_", team.GroupId),
							//AdminName string `description:"系统用户名称"`
							RealName:     team.GroupName,
							ChildrenList: teamSellerList,
						}
						sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
						if err != nil {
							br.Msg = "获取销售失败"
							br.ErrMsg = "获取销售失败,Err:" + err.Error()
							return
						}
						for _, seller := range sellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							//fmt.Println("seller.RealName:", seller.RealName)
							teamSellerList = append(teamSellerList, sellerItem)
						}
						teamSellerList = sortDepartmentGroupSellers(teamSellerList)
						teamItem.ChildrenList = teamSellerList
						if len(teamSellerList) > 0 {
							groupSellerList = append(groupSellerList, teamItem)
						}
					}
					//分组为0的人,不光是销售(直属分组)
					groupTeamSellerList, err := system.GetGroupSysUserList(group.GroupId)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					if len(groupTeamSellerList) > 0 {
						tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
						for _, seller := range groupTeamSellerList {
							sellerItem := company.DepartmentGroupSellers{
								AdminId: fmt.Sprint(seller.AdminId),
								//AdminName string `description:"系统用户名称"`
								RealName:     seller.RealName,
								Authority:    seller.Authority,
								RoleTypeCode: seller.RoleTypeCode,
							}
							tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
						}
						//排个序
						tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
						groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
					}

					//groupItem.ChildrenList = groupSellerList
					//if len(groupSellerList) > 0 {
					//	list = append(list, item)
					//}

					//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
					//if err != nil {
					//	br.Msg = "获取销售失败"
					//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
					//	return
					//}
					//for _, seller := range sellerList {
					//	sellerItem := company.DepartmentGroupSellers{
					//		AdminId: fmt.Sprint(seller.AdminId),
					//		//AdminName string `description:"系统用户名称"`
					//		RealName:     seller.RealName,
					//		Authority:    seller.Authority,
					//		RoleTypeCode: seller.RoleTypeCode,
					//	}
					//	groupSellerList = append(groupSellerList, sellerItem)
					//}
					//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
					groupItem.ChildrenList = groupSellerList
					if len(groupSellerList) > 0 {
						departmentGroupSellerList = append(departmentGroupSellerList, groupItem)
					}
				}

				//分组为0的人,不光是销售(直属部门)
				departmentSellerList, err := system.GetDepartmentGroupSysUserList(department.DepartmentId, 0, "")
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(departmentSellerList) > 0 {
					tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range departmentSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
					}
					//排个序
					tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
					departmentGroupSellerList = append(departmentGroupSellerList, tmpDepartmentGroupSellersList...)
				}

				item.ChildrenList = departmentGroupSellerList
				if len(departmentGroupSellerList) > 0 {
					list = append(list, item)
				}
			}
		} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER && status == 1 {
			// 权益销售可以看到权益销售部的所有人
			departmentId := 5
			groupList, err := system.GetSysGroupByDepartmentId(departmentId)
			if err != nil {
				br.Msg = "获取失败"
				br.ErrMsg = "获取分组失败,Err:" + err.Error()
				return
			}
			for _, group := range groupList {
				groupSellerList := make([]company.DepartmentGroupSellers, 0)
				groupItem := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("group_", group.DepartmentId),
					//AdminName string `description:"系统用户名称"`
					RealName:     group.GroupName,
					ChildrenList: groupSellerList,
				}
				teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
				if err != nil {
					br.Msg = "获取小组失败"
					br.ErrMsg = "获取小组失败,Err:" + err.Error()
					return
				}
				for _, team := range teamList {
					teamSellerList := make([]company.DepartmentGroupSellers, 0)
					teamItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint("team_", team.GroupId),
						//AdminName string `description:"系统用户名称"`
						RealName:     team.GroupName,
						ChildrenList: teamSellerList,
					}
					sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
					if err != nil {
						br.Msg = "获取销售失败"
						br.ErrMsg = "获取销售失败,Err:" + err.Error()
						return
					}
					for _, seller := range sellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						//fmt.Println("seller.RealName:", seller.RealName)
						teamSellerList = append(teamSellerList, sellerItem)
					}
					teamSellerList = sortDepartmentGroupSellers(teamSellerList)
					teamItem.ChildrenList = teamSellerList
					if len(teamSellerList) > 0 {
						groupSellerList = append(groupSellerList, teamItem)
					}
				}
				//分组为0的销售(直属分组)
				groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				if len(groupTeamSellerList) > 0 {
					tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
					for _, seller := range groupTeamSellerList {
						sellerItem := company.DepartmentGroupSellers{
							AdminId: fmt.Sprint(seller.AdminId),
							//AdminName string `description:"系统用户名称"`
							RealName:     seller.RealName,
							Authority:    seller.Authority,
							RoleTypeCode: seller.RoleTypeCode,
						}
						tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
					}
					//排个序
					tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
					groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
				}

				//groupItem.ChildrenList = groupSellerList
				//if len(groupSellerList) > 0 {
				//	list = append(list, item)
				//}

				//sellerList, err := system.GetGroupSysUserList(group.DepartmentId)
				//if err != nil {
				//	br.Msg = "获取销售失败"
				//	br.ErrMsg = "获取销售失败,Err:" + err.Error()
				//	return
				//}
				//for _, seller := range sellerList {
				//	sellerItem := company.DepartmentGroupSellers{
				//		AdminId: fmt.Sprint(seller.AdminId),
				//		//AdminName string `description:"系统用户名称"`
				//		RealName:     seller.RealName,
				//		Authority:    seller.Authority,
				//		RoleTypeCode: seller.RoleTypeCode,
				//	}
				//	groupSellerList = append(groupSellerList, sellerItem)
				//}
				//groupSellerList = sortDepartmentGroupSellers(groupSellerList)
				groupItem.ChildrenList = groupSellerList
				if len(groupSellerList) > 0 {
					list = append(list, groupItem)
				}
			}

			//分组为0的销售(直属部门)
			departmentSellerList, err := system.GetDepartmentGroupSysUserList(departmentId, 0, roleCodeTypeStr)
			if err != nil {
				br.Msg = "获取销售失败"
				br.ErrMsg = "获取销售失败,Err:" + err.Error()
				return
			}
			if len(departmentSellerList) > 0 {
				tmpDepartmentGroupSeller := make([]company.DepartmentGroupSellers, 0)
				for _, seller := range departmentSellerList {
					sellerItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint(seller.AdminId),
						//AdminName string `description:"系统用户名称"`
						RealName:     seller.RealName,
						Authority:    seller.Authority,
						RoleTypeCode: seller.RoleTypeCode,
					}
					tmpDepartmentGroupSeller = append(tmpDepartmentGroupSeller, sellerItem)
				}
				tmpDepartmentGroupSeller = sortDepartmentGroupSellers(tmpDepartmentGroupSeller)
				list = append(list, tmpDepartmentGroupSeller...)
			}
		} else {
			//看自己
			sellerItem := company.DepartmentGroupSellers{
				AdminId: fmt.Sprint(sysUser.AdminId),
				//AdminName string `description:"系统用户名称"`
				RealName: sysUser.RealName,
			}
			list = append(list, sellerItem)
		}
	} else {
		departmentId := sysUser.DepartmentId
		switch productId {
		case 1:
			departmentId = 2
		case 5:
			departmentId = 5
		}
		//查询整个部门的小组、销售
		groupList, err := system.GetSysGroupByDepartmentId(departmentId)
		if err != nil {
			br.Msg = "获取失败"
			br.ErrMsg = "获取分组失败,Err:" + err.Error()
			return
		}
		for _, group := range groupList {
			groupSellerList := make([]company.DepartmentGroupSellers, 0)
			groupItem := company.DepartmentGroupSellers{
				AdminId: fmt.Sprint("group_", group.DepartmentId),
				//AdminName string `description:"系统用户名称"`
				RealName:     group.GroupName,
				ChildrenList: groupSellerList,
			}
			teamList, err := system.GetSysTeamByDepartmentId(group.GroupId)
			if err != nil {
				br.Msg = "获取小组失败"
				br.ErrMsg = "获取小组失败,Err:" + err.Error()
				return
			}
			for _, team := range teamList {
				teamSellerList := make([]company.DepartmentGroupSellers, 0)
				teamItem := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint("team_", team.GroupId),
					//AdminName string `description:"系统用户名称"`
					RealName:     team.GroupName,
					ChildrenList: teamSellerList,
				}
				sellerList, err := system.GetTeamSysUserList(team.GroupId, enabled)
				if err != nil {
					br.Msg = "获取销售失败"
					br.ErrMsg = "获取销售失败,Err:" + err.Error()
					return
				}
				for _, seller := range sellerList {
					sellerItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint(seller.AdminId),
						//AdminName string `description:"系统用户名称"`
						RealName:     seller.RealName,
						Authority:    seller.Authority,
						RoleTypeCode: seller.RoleTypeCode,
					}
					//fmt.Println("seller.RealName:", seller.RealName)
					teamSellerList = append(teamSellerList, sellerItem)
				}
				teamSellerList = sortDepartmentGroupSellers(teamSellerList)
				teamItem.ChildrenList = teamSellerList
				if len(teamSellerList) > 0 {
					groupSellerList = append(groupSellerList, teamItem)
				}
			}
			//分组为0的销售(直属分组)
			groupTeamSellerList, err := system.GetGrooupsysUserList(group.GroupId, roleCodeTypeStr, enabled)
			if err != nil {
				br.Msg = "获取销售失败"
				br.ErrMsg = "获取销售失败,Err:" + err.Error()
				return
			}
			if len(groupTeamSellerList) > 0 {
				tmpDepartmentGroupSellersList := make([]company.DepartmentGroupSellers, 0)
				for _, seller := range groupTeamSellerList {
					sellerItem := company.DepartmentGroupSellers{
						AdminId: fmt.Sprint(seller.AdminId),
						//AdminName string `description:"系统用户名称"`
						RealName:     seller.RealName,
						Authority:    seller.Authority,
						RoleTypeCode: seller.RoleTypeCode,
					}
					tmpDepartmentGroupSellersList = append(tmpDepartmentGroupSellersList, sellerItem)
				}
				//排个序
				tmpDepartmentGroupSellersList = sortDepartmentGroupSellers(tmpDepartmentGroupSellersList)
				groupSellerList = append(groupSellerList, tmpDepartmentGroupSellersList...)
			}

			groupItem.ChildrenList = groupSellerList
			if len(groupSellerList) > 0 {
				list = append(list, groupItem)
			}
		}

		//分组为0的销售(直属部门)
		departmentSellerList, err := system.GetDepartmentGroupSysUserList(departmentId, 0, roleCodeTypeStr)
		if err != nil {
			br.Msg = "获取销售失败"
			br.ErrMsg = "获取销售失败,Err:" + err.Error()
			return
		}
		if len(departmentSellerList) > 0 {
			tmpDepartmentGroupSeller := make([]company.DepartmentGroupSellers, 0)
			for _, seller := range departmentSellerList {
				sellerItem := company.DepartmentGroupSellers{
					AdminId: fmt.Sprint(seller.AdminId),
					//AdminName string `description:"系统用户名称"`
					RealName:     seller.RealName,
					Authority:    seller.Authority,
					RoleTypeCode: seller.RoleTypeCode,
				}
				tmpDepartmentGroupSeller = append(tmpDepartmentGroupSeller, sellerItem)
			}
			//排个序
			tmpDepartmentGroupSeller = sortDepartmentGroupSellers(tmpDepartmentGroupSeller)
			list = append(list, tmpDepartmentGroupSeller...)
		}
	}

	// 海外销售部-目前无权限, 均可见
	seaDepartment, e := system.GetSysDepartmentByName("海外销售部")
	if e != nil && e.Error() != utils.ErrNoRow() {
		br.Msg = "获取失败"
		br.ErrMsg = "获取海外销售部失败, Err: " + e.Error()
		return
	}
	if e == nil {
		// 获取部门下的销售人员
		seaSellers, e := system.GetDepartmentGroupSysUserList(seaDepartment.DepartmentId, 0, "")
		if e != nil {
			br.Msg = "获取失败"
			br.ErrMsg = "获取海外销售失败, Err: " + e.Error()
			return
		}
		// 获取分组
		seaGroups, e := system.GetSysGroupListByDepartmentId(seaDepartment.DepartmentId)
		if e != nil {
			br.Msg = "获取失败"
			br.ErrMsg = "获取海外销售部分组失败, Err: " + e.Error()
			return
		}

		var d company.DepartmentGroupSellers
		d.AdminId = fmt.Sprintf("department_%d", seaDepartment.DepartmentId)
		d.RealName = seaDepartment.DepartmentName
		children := make([]company.DepartmentGroupSellers, 0)
		// 无分组
		if len(seaGroups) == 0 {
			for _, s := range seaSellers {
				children = append(children, company.DepartmentGroupSellers{
					AdminId:      strconv.Itoa(s.AdminId),
					RealName:     s.RealName,
					RoleTypeCode: s.RoleTypeCode,
					Authority:    s.Authority,
				})
			}
		}
		// 有分组
		if len(seaGroups) > 0 {
			// 销售map
			sellerMap := make(map[int][]company.DepartmentGroupSellers)
			for _, s := range seaSellers {
				sellerMap[s.GroupId] = append(sellerMap[s.GroupId], company.DepartmentGroupSellers{
					AdminId:      strconv.Itoa(s.AdminId),
					RealName:     s.RealName,
					RoleTypeCode: s.RoleTypeCode,
					Authority:    s.Authority,
				})
			}
			// 小组map
			childrenMap := make(map[int][]company.DepartmentGroupSellers)
			for _, g := range seaGroups {
				if g.ParentId == 0 {
					continue
				}
				childrenMap[g.ParentId] = append(childrenMap[g.ParentId], company.DepartmentGroupSellers{
					AdminId:      fmt.Sprintf("team_%d", g.GroupId),
					RealName:     g.GroupName,
					ChildrenList: sellerMap[g.GroupId],
				})
			}
			// 大组
			for _, g := range seaGroups {
				if g.ParentId > 0 {
					continue
				}
				c := childrenMap[g.GroupId]
				if len(sellerMap[g.GroupId]) > 0 {
					c = append(c, sellerMap[g.GroupId]...)
				}
				children = append(children, company.DepartmentGroupSellers{
					AdminId:      fmt.Sprintf("group_%d", g.GroupId),
					RealName:     g.GroupName,
					ChildrenList: c,
				})
			}
		}
		d.ChildrenList = children
		list = append(list, d)
	}

	br.Ret = 200
	br.Success = true
	br.Msg = "获取成功"
	br.Data = company.DepartmentGroupSellersResp{
		List: list,
	}
}

// sortDepartmentGroupSellers 部门用户排序
func sortDepartmentGroupSellers(adminList []company.DepartmentGroupSellers) (list []company.DepartmentGroupSellers) {
	sellerMap := make(map[int][]company.DepartmentGroupSellers)
	for _, admin := range adminList {
		index := 0 //0:超管,1:部门管理员,2:组长,3:普通人
		switch admin.RoleTypeCode {
		//case utils.ROLE_TYPE_CODE_ADMIN:
		//	index = 0
		//case utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_RAI_ADMIN:
		//	index = 1
		//case utils.ROLE_TYPE_CODE_FICC_GROUP, utils.ROLE_TYPE_CODE_RAI_GROUP:
		//	index = 2
		default:
			//0:无,1:部门负责人,2:小组负责人,3:超级管理员
			switch admin.Authority {
			//case 1:
			//	index = 1
			case 2:
				index = 2
			//case 3:
			//	index = 0
			default:
				index = 3
			}
		}
		sellerList, ok := sellerMap[index]
		if !ok {
			sellerList = make([]company.DepartmentGroupSellers, 0)
		}
		sellerList = append(sellerList, admin)
		sellerMap[index] = sellerList
	}

	var indexList = []int{0, 1, 2, 3}
	for _, index := range indexList {
		sellerList, ok := sellerMap[index]
		if ok {
			list = append(list, sellerList...)
		}
	}
	return
}