123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- 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 = ?`
- groupPars := make([]interface{}, 0)
- groupPars = append(groupPars, crm.SellerDepartmentId)
- 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
- }
|