company_seller.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package crm
  2. import (
  3. "errors"
  4. "hongze/fms_api/models/crm"
  5. )
  6. // GetSellerDepartmentAndGroupMap 获取销售部门列表-包含大组和小组
  7. func GetSellerDepartmentListWithGroupAndTeam() (sellerList []*crm.SellerAdminWithGroupTeam, err error) {
  8. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  9. sellerList = make([]*crm.SellerAdminWithGroupTeam, 0)
  10. // 获取组别列表
  11. groupCond := "department_id in (?)"
  12. groupPars := make([]interface{}, 0)
  13. groupPars = append(groupPars, departmentIds)
  14. groupOB := new(crm.SysGroup)
  15. groupList, e := groupOB.List(groupCond, groupPars)
  16. if e != nil {
  17. err = errors.New("获取组别列表失败, Err: " + e.Error())
  18. return
  19. }
  20. groupMap := make(map[int]*crm.SysGroup)
  21. for i := range groupList {
  22. groupMap[groupList[i].GroupId] = groupList[i]
  23. }
  24. // 获取销售部门所有销售信息
  25. adminCond := "department_id in (?) AND enabled = 1"
  26. adminPars := make([]interface{}, 0)
  27. adminPars = append(adminPars, departmentIds)
  28. adminOB := new(crm.Admin)
  29. adminList, e := adminOB.List(adminCond, adminPars)
  30. if e != nil {
  31. err = errors.New("获取销售列表失败, Err: " + e.Error())
  32. return
  33. }
  34. // 销售列表
  35. for i := range adminList {
  36. v := new(crm.SellerAdminWithGroupTeam)
  37. v.DepartmentId = adminList[i].DepartmentId
  38. v.SellerId = adminList[i].AdminId
  39. v.SellerName = adminList[i].RealName
  40. g := groupMap[adminList[i].GroupId]
  41. if g != nil {
  42. if g.ParentId > 0 {
  43. // 三级分组
  44. p := groupMap[g.ParentId]
  45. if p != nil {
  46. v.GroupId = p.GroupId
  47. v.GroupName = p.GroupName
  48. v.TeamId = g.GroupId
  49. v.TeamName = g.GroupName
  50. }
  51. } else {
  52. // 二级分组
  53. v.GroupId = g.GroupId
  54. v.GroupName = g.GroupName
  55. }
  56. }
  57. sellerList = append(sellerList, v)
  58. }
  59. return
  60. }
  61. // GetSellerTeamGroupMap 获取销售组别对应的大组信息
  62. func GetSellerTeamGroupMap() (teamGroupMap map[int]*crm.SysGroup, err error) {
  63. teamGroupMap = make(map[int]*crm.SysGroup)
  64. groupCond := `department_id = ?`
  65. groupPars := make([]interface{}, 0)
  66. groupPars = append(groupPars, crm.SellerDepartmentId)
  67. groupOB := new(crm.SysGroup)
  68. groupList, e := groupOB.List(groupCond, groupPars)
  69. if e != nil {
  70. err = errors.New("获取组别列表失败, Err: " + e.Error())
  71. return
  72. }
  73. groupMap := make(map[int]*crm.SysGroup)
  74. for i := range groupList {
  75. groupMap[groupList[i].GroupId] = groupList[i]
  76. }
  77. for i := range groupList {
  78. // 大组对应的是自己
  79. if groupList[i].ParentId == 0 {
  80. teamGroupMap[groupList[i].GroupId] = groupList[i]
  81. continue
  82. }
  83. teamGroupMap[groupList[i].GroupId] = groupMap[groupList[i].ParentId]
  84. }
  85. return
  86. }
  87. // GetSellerDepartmentList 获取销售部门列表-包含大组和小组
  88. func GetSellerDepartmentList() (resp crm.SellerAdminWithGroupList, err error) {
  89. // 获取组别列表
  90. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  91. groupCond := "department_id in (?)"
  92. groupPars := make([]interface{}, 0)
  93. groupPars = append(groupPars, departmentIds)
  94. groupOB := new(crm.SysGroup)
  95. groupList, e := groupOB.List(groupCond, groupPars)
  96. if e != nil {
  97. err = errors.New("获取组别列表失败, Err: " + e.Error())
  98. return
  99. }
  100. groupMap := make(map[int]*crm.SysGroup)
  101. teamMap := make(map[int]*crm.SysGroup)
  102. for i := range groupList {
  103. if groupList[i].ParentId > 0 {
  104. teamMap[groupList[i].GroupId] = groupList[i]
  105. }else{
  106. groupMap[groupList[i].GroupId] = groupList[i]
  107. }
  108. }
  109. // 获取销售部门所有销售信息
  110. adminCond := "department_id in (?) AND enabled = 1"
  111. adminPars := make([]interface{}, 0)
  112. adminPars = append(adminPars, departmentIds)
  113. adminOB := new(crm.Admin)
  114. adminList, e := adminOB.List(adminCond, adminPars)
  115. if e != nil {
  116. err = errors.New("获取销售列表失败, Err: " + e.Error())
  117. return
  118. }
  119. // 销售列表
  120. groupSeller := make(map[int][]crm.SellerAdminWithGroupTree)
  121. ficcList := make([]crm.SellerAdminList, 0)
  122. raiList := make([]crm.SellerAdminList, 0)
  123. for i := range adminList {
  124. v := crm.SellerAdminList{
  125. SellerId: adminList[i].AdminId,
  126. SellerName: adminList[i].RealName,
  127. }
  128. if adminList[i].DepartmentId == crm.SellerDepartmentId {
  129. ficcList = append(ficcList, v)
  130. }else if adminList[i].DepartmentId == crm.RaiSellerDepartmentId {
  131. raiList = append(raiList, v)
  132. }
  133. if t, ok := teamMap[adminList[i].GroupId]; ok { // 如果销售是在三级分组下面,则找到对应的二级分组
  134. if g, ok1 := groupMap[t.ParentId]; ok1 {
  135. tmp := crm.SellerAdminWithGroupTree{
  136. SellerId: adminList[i].AdminId,
  137. SellerName: adminList[i].RealName,
  138. Child: nil,
  139. }
  140. groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp)
  141. }else{
  142. err = errors.New("找不到对应的销售分组")
  143. return
  144. }
  145. }else{
  146. if g, ok1 := groupMap[adminList[i].GroupId]; ok1 {
  147. tmp := crm.SellerAdminWithGroupTree{
  148. SellerId: adminList[i].AdminId,
  149. SellerName: adminList[i].RealName,
  150. Child: nil,
  151. }
  152. groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp)
  153. }else{
  154. err = errors.New("找不到对应的销售分组")
  155. return
  156. }
  157. }
  158. }
  159. //分组
  160. departmentMap := make(map[int][]crm.SellerAdminWithGroupTree)
  161. for k, v := range groupMap {
  162. child, _ := groupSeller[k]
  163. tmp := crm.SellerAdminWithGroupTree{
  164. SellerId: k,
  165. SellerName: v.GroupName,
  166. Child: child,
  167. }
  168. departmentMap[v.DepartmentId] = append(departmentMap[v.DepartmentId], tmp)
  169. }
  170. //分部门
  171. allTitleMap := map[int]string{
  172. crm.SellerDepartmentId:"FICC销售",
  173. crm.RaiSellerDepartmentId:"权益销售",
  174. }
  175. ficcTree, _ := departmentMap[crm.SellerDepartmentId]
  176. raiTree, _ := departmentMap[crm.RaiSellerDepartmentId]
  177. tmp1 := crm.SellerAdminWithGroupTree{
  178. SellerId: crm.SellerDepartmentId,
  179. SellerName: allTitleMap[crm.SellerDepartmentId],
  180. Child: ficcTree,
  181. }
  182. tmp2 := crm.SellerAdminWithGroupTree{
  183. SellerId: crm.RaiSellerDepartmentId,
  184. SellerName: allTitleMap[crm.RaiSellerDepartmentId],
  185. Child: raiTree,
  186. }
  187. allList := make([]crm.SellerAdminWithGroupTree, 0)
  188. allList = append(allList, tmp1)
  189. allList = append(allList, tmp2)
  190. resp.AllList = allList
  191. resp.FiccList = ficcList
  192. resp.RaiList = raiList
  193. return
  194. }