package crm import ( "errors" "hongze/fms_api/models/crm" ) // GetSellerDepartmentAndGroupMap 获取销售部门列表-包含大组和小组 func GetSellerDepartmentListWithGroupAndTeam() (sellerList []*crm.SellerAdminWithGroupTeam, err error) { departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId} sellerList = make([]*crm.SellerAdminWithGroupTeam, 0) // 获取组别列表 groupCond := "department_id in (?)" groupPars := make([]interface{}, 0) groupPars = append(groupPars, departmentIds) groupOB := new(crm.SysGroup) groupList, e := groupOB.List(groupCond, groupPars) if e != nil { err = errors.New("获取组别列表失败, Err: " + e.Error()) return } groupMap := make(map[int]*crm.SysGroup) for i := range groupList { groupMap[groupList[i].GroupId] = groupList[i] } // 获取销售部门所有销售信息 adminCond := "department_id in (?) AND enabled = 1" adminPars := make([]interface{}, 0) adminPars = append(adminPars, departmentIds) adminOB := new(crm.Admin) adminList, e := adminOB.List(adminCond, adminPars) if e != nil { err = errors.New("获取销售列表失败, Err: " + e.Error()) return } // 销售列表 for i := range adminList { v := new(crm.SellerAdminWithGroupTeam) v.DepartmentId = adminList[i].DepartmentId v.SellerId = adminList[i].AdminId v.SellerName = adminList[i].RealName g := groupMap[adminList[i].GroupId] if g != nil { if g.ParentId > 0 { // 三级分组 p := groupMap[g.ParentId] if p != nil { v.GroupId = p.GroupId v.GroupName = p.GroupName v.TeamId = g.GroupId v.TeamName = g.GroupName } } else { // 二级分组 v.GroupId = g.GroupId v.GroupName = g.GroupName } } sellerList = append(sellerList, v) } return } // GetSellerTeamGroupMap 获取销售组别对应的大组信息 func GetSellerTeamGroupMap() (teamGroupMap map[int]*crm.SysGroup, err error) { teamGroupMap = make(map[int]*crm.SysGroup) groupCond := `department_id IN (?,?)` groupPars := make([]interface{}, 0) groupPars = append(groupPars, crm.SellerDepartmentId, crm.RaiSellerDepartmentId) groupOB := new(crm.SysGroup) groupList, e := groupOB.List(groupCond, groupPars) if e != nil { err = errors.New("获取组别列表失败, Err: " + e.Error()) return } groupMap := make(map[int]*crm.SysGroup) for i := range groupList { groupMap[groupList[i].GroupId] = groupList[i] } for i := range groupList { // 大组对应的是自己 if groupList[i].ParentId == 0 { teamGroupMap[groupList[i].GroupId] = groupList[i] continue } teamGroupMap[groupList[i].GroupId] = groupMap[groupList[i].ParentId] } return } // GetSellerDepartmentList 获取销售部门列表-包含大组和小组 func GetSellerDepartmentList() (resp crm.SellerAdminWithGroupList, err error) { // 获取组别列表 departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId} groupCond := "department_id in (?)" groupPars := make([]interface{}, 0) groupPars = append(groupPars, departmentIds) groupOB := new(crm.SysGroup) groupList, e := groupOB.List(groupCond, groupPars) if e != nil { err = errors.New("获取组别列表失败, Err: " + e.Error()) return } groupMap := make(map[int]*crm.SysGroup) teamMap := make(map[int]*crm.SysGroup) for i := range groupList { if groupList[i].ParentId > 0 { teamMap[groupList[i].GroupId] = groupList[i] }else{ groupMap[groupList[i].GroupId] = groupList[i] } } // 获取销售部门所有销售信息 adminCond := "department_id in (?) AND enabled = 1" adminPars := make([]interface{}, 0) adminPars = append(adminPars, departmentIds) adminOB := new(crm.Admin) adminList, e := adminOB.List(adminCond, adminPars) if e != nil { err = errors.New("获取销售列表失败, Err: " + e.Error()) return } // 销售列表 groupSeller := make(map[int][]crm.SellerAdminWithGroupTree) ficcList := make([]crm.SellerAdminList, 0) raiList := make([]crm.SellerAdminList, 0) for i := range adminList { v := crm.SellerAdminList{ SellerId: adminList[i].AdminId, SellerName: adminList[i].RealName, } if adminList[i].DepartmentId == crm.SellerDepartmentId { ficcList = append(ficcList, v) }else if adminList[i].DepartmentId == crm.RaiSellerDepartmentId { raiList = append(raiList, v) } if t, ok := teamMap[adminList[i].GroupId]; ok { // 如果销售是在三级分组下面,则找到对应的二级分组 if g, ok1 := groupMap[t.ParentId]; ok1 { tmp := crm.SellerAdminWithGroupTree{ SellerId: adminList[i].AdminId, SellerName: adminList[i].RealName, Child: nil, } groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp) }else{ err = errors.New("找不到对应的销售分组") return } }else{ if g, ok1 := groupMap[adminList[i].GroupId]; ok1 { tmp := crm.SellerAdminWithGroupTree{ SellerId: adminList[i].AdminId, SellerName: adminList[i].RealName, Child: nil, } groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp) }else{ err = errors.New("找不到对应的销售分组") return } } } //分组 departmentMap := make(map[int][]crm.SellerAdminWithGroupTree) for k, v := range groupMap { child, _ := groupSeller[k] tmp := crm.SellerAdminWithGroupTree{ SellerId: k, SellerName: v.GroupName, Child: child, } departmentMap[v.DepartmentId] = append(departmentMap[v.DepartmentId], tmp) } //分部门 allTitleMap := map[int]string{ crm.SellerDepartmentId:"FICC销售", crm.RaiSellerDepartmentId:"权益销售", } ficcTree, _ := departmentMap[crm.SellerDepartmentId] raiTree, _ := departmentMap[crm.RaiSellerDepartmentId] tmp1 := crm.SellerAdminWithGroupTree{ SellerId: crm.SellerDepartmentId, SellerName: allTitleMap[crm.SellerDepartmentId], Child: ficcTree, } tmp2 := crm.SellerAdminWithGroupTree{ SellerId: crm.RaiSellerDepartmentId, SellerName: allTitleMap[crm.RaiSellerDepartmentId], Child: raiTree, } allList := make([]crm.SellerAdminWithGroupTree, 0) allList = append(allList, tmp1) allList = append(allList, tmp2) resp.AllList = allList resp.FiccList = ficcList resp.RaiList = raiList return }