company_seller.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  1. package crm
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/fms_api/models/crm"
  6. )
  7. // GetSellerDepartmentAndGroupMap 获取销售部门列表-包含大组和小组
  8. func GetSellerDepartmentListWithGroupAndTeam() (sellerList []*crm.SellerAdminWithGroupTeam, err error) {
  9. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  10. sellerList = make([]*crm.SellerAdminWithGroupTeam, 0)
  11. // 获取组别列表
  12. groupCond := "department_id in (?)"
  13. groupPars := make([]interface{}, 0)
  14. groupPars = append(groupPars, departmentIds)
  15. groupOB := new(crm.SysGroup)
  16. groupList, e := groupOB.List(groupCond, groupPars)
  17. if e != nil {
  18. err = errors.New("获取组别列表失败, Err: " + e.Error())
  19. return
  20. }
  21. groupMap := make(map[int]*crm.SysGroup)
  22. for i := range groupList {
  23. groupMap[groupList[i].GroupId] = groupList[i]
  24. }
  25. // 获取销售部门所有销售信息
  26. adminCond := "department_id in (?) AND enabled = 1"
  27. adminPars := make([]interface{}, 0)
  28. adminPars = append(adminPars, departmentIds)
  29. adminOB := new(crm.Admin)
  30. adminList, e := adminOB.List(adminCond, adminPars)
  31. if e != nil {
  32. err = errors.New("获取销售列表失败, Err: " + e.Error())
  33. return
  34. }
  35. // 销售列表
  36. for i := range adminList {
  37. v := new(crm.SellerAdminWithGroupTeam)
  38. v.DepartmentId = adminList[i].DepartmentId
  39. v.SellerId = adminList[i].AdminId
  40. v.SellerName = adminList[i].RealName
  41. g := groupMap[adminList[i].GroupId]
  42. if g != nil {
  43. if g.ParentId > 0 {
  44. // 三级分组
  45. p := groupMap[g.ParentId]
  46. if p != nil {
  47. v.GroupId = p.GroupId
  48. v.GroupName = p.GroupName
  49. v.TeamId = g.GroupId
  50. v.TeamName = g.GroupName
  51. }
  52. } else {
  53. // 二级分组
  54. v.GroupId = g.GroupId
  55. v.GroupName = g.GroupName
  56. }
  57. }
  58. sellerList = append(sellerList, v)
  59. }
  60. return
  61. }
  62. // GetSellerTeamGroupMap 获取销售组别对应的大组信息
  63. func GetSellerTeamGroupMap() (teamGroupMap map[int]*crm.SysGroup, err error) {
  64. teamGroupMap = make(map[int]*crm.SysGroup)
  65. groupCond := `department_id IN (?,?)`
  66. groupPars := make([]interface{}, 0)
  67. groupPars = append(groupPars, crm.SellerDepartmentId, crm.RaiSellerDepartmentId)
  68. groupOB := new(crm.SysGroup)
  69. groupList, e := groupOB.List(groupCond, groupPars)
  70. if e != nil {
  71. err = errors.New("获取组别列表失败, Err: " + e.Error())
  72. return
  73. }
  74. groupMap := make(map[int]*crm.SysGroup)
  75. for i := range groupList {
  76. groupMap[groupList[i].GroupId] = groupList[i]
  77. }
  78. for i := range groupList {
  79. // 大组对应的是自己
  80. if groupList[i].ParentId == 0 {
  81. teamGroupMap[groupList[i].GroupId] = groupList[i]
  82. continue
  83. }
  84. teamGroupMap[groupList[i].GroupId] = groupMap[groupList[i].ParentId]
  85. }
  86. return
  87. }
  88. // GetSellerDepartmentList 获取销售部门列表-大组
  89. func GetSellerDepartmentList() (resp crm.SellerAdminWithGroupList, err error) {
  90. // 获取组别列表
  91. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  92. groupCond := "department_id in (?)"
  93. groupPars := make([]interface{}, 0)
  94. groupPars = append(groupPars, departmentIds)
  95. groupOB := new(crm.SysGroup)
  96. groupList, e := groupOB.List(groupCond, groupPars)
  97. if e != nil {
  98. err = errors.New("获取组别列表失败, Err: " + e.Error())
  99. return
  100. }
  101. groupMap := make(map[int]*crm.SysGroup)
  102. teamMap := make(map[int]*crm.SysGroup)
  103. for i := range groupList {
  104. if groupList[i].ParentId > 0 {
  105. teamMap[groupList[i].GroupId] = groupList[i]
  106. }else{
  107. groupMap[groupList[i].GroupId] = groupList[i]
  108. }
  109. }
  110. // 获取销售部门所有销售信息
  111. adminCond := "department_id in (?) "
  112. adminPars := make([]interface{}, 0)
  113. adminPars = append(adminPars, departmentIds)
  114. adminOB := new(crm.Admin)
  115. adminList, e := adminOB.List(adminCond, adminPars)
  116. if e != nil {
  117. err = errors.New("获取销售列表失败, Err: " + e.Error())
  118. return
  119. }
  120. // 销售列表
  121. departmentMap := make(map[int][]crm.SellerAdminWithGroupTree)
  122. groupSeller := make(map[int][]crm.SellerAdminWithGroupTree)
  123. ficcList := make([]crm.SellerAdminList, 0)
  124. raiList := make([]crm.SellerAdminList, 0)
  125. for i := range adminList {
  126. v := crm.SellerAdminList{
  127. SellerId: adminList[i].AdminId,
  128. SellerName: adminList[i].RealName,
  129. }
  130. if adminList[i].DepartmentId == crm.SellerDepartmentId {
  131. ficcList = append(ficcList, v)
  132. }else if adminList[i].DepartmentId == crm.RaiSellerDepartmentId {
  133. raiList = append(raiList, v)
  134. }
  135. if t, ok := teamMap[adminList[i].GroupId]; ok { // 如果销售是在三级分组下面,则找到对应的二级分组
  136. if g, ok1 := groupMap[t.ParentId]; ok1 {
  137. tmp := crm.SellerAdminWithGroupTree{
  138. SellerId: adminList[i].AdminId,
  139. SellerName: adminList[i].RealName,
  140. Child: nil,
  141. }
  142. groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp)
  143. }else{
  144. fmt.Println("adminList[i]:",adminList[i].AdminId)
  145. err = errors.New("找不到对应的销售分组")
  146. return
  147. }
  148. }else{
  149. if g, ok1 := groupMap[adminList[i].GroupId]; ok1 {
  150. tmp := crm.SellerAdminWithGroupTree{
  151. SellerId: adminList[i].AdminId,
  152. SellerName: adminList[i].RealName,
  153. Child: nil,
  154. }
  155. groupSeller[g.GroupId] = append(groupSeller[g.GroupId], tmp)
  156. }else{
  157. tmp := crm.SellerAdminWithGroupTree{
  158. SellerId: adminList[i].AdminId,
  159. SellerName: adminList[i].RealName,
  160. Child: nil,
  161. }
  162. departmentMap[adminList[i].DepartmentId] = append(departmentMap[adminList[i].DepartmentId], tmp)
  163. }
  164. }
  165. }
  166. //分组
  167. for k, v := range groupMap {
  168. child, _ := groupSeller[k]
  169. tmp := crm.SellerAdminWithGroupTree{
  170. SellerId: k,
  171. SellerName: v.GroupName,
  172. Child: child,
  173. }
  174. departmentMap[v.DepartmentId] = append(departmentMap[v.DepartmentId], tmp)
  175. }
  176. //分部门
  177. allTitleMap := map[int]string{
  178. crm.SellerDepartmentId:"FICC销售",
  179. crm.RaiSellerDepartmentId:"权益销售",
  180. }
  181. ficcTree, _ := departmentMap[crm.SellerDepartmentId]
  182. raiTree, _ := departmentMap[crm.RaiSellerDepartmentId]
  183. tmp1 := crm.SellerAdminWithGroupTree{
  184. SellerId: crm.SellerDepartmentId,
  185. SellerName: allTitleMap[crm.SellerDepartmentId],
  186. Child: ficcTree,
  187. }
  188. tmp2 := crm.SellerAdminWithGroupTree{
  189. SellerId: crm.RaiSellerDepartmentId,
  190. SellerName: allTitleMap[crm.RaiSellerDepartmentId],
  191. Child: raiTree,
  192. }
  193. allList := make([]crm.SellerAdminWithGroupTree, 0)
  194. allList = append(allList, tmp1)
  195. allList = append(allList, tmp2)
  196. resp.AllList = allList
  197. resp.FiccList = ficcList
  198. resp.RaiList = raiList
  199. return
  200. }
  201. // GetSellerDepartmentAndGroupMap 获取销售部门列表-包含大组和小组
  202. func GetSellerDepartmentListWithGroupAndTeamByDepartment() (ficcList []*crm.SellerAdminWithGroupTeam,raiList []*crm.SellerAdminWithGroupTeam, err error) {
  203. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  204. ficcList = make([]*crm.SellerAdminWithGroupTeam, 0)
  205. raiList = make([]*crm.SellerAdminWithGroupTeam, 0)
  206. // 获取组别列表
  207. groupCond := "department_id in (?)"
  208. groupPars := make([]interface{}, 0)
  209. groupPars = append(groupPars, departmentIds)
  210. groupOB := new(crm.SysGroup)
  211. groupList, e := groupOB.List(groupCond, groupPars)
  212. if e != nil {
  213. err = errors.New("获取组别列表失败, Err: " + e.Error())
  214. return
  215. }
  216. groupMap := make(map[int]*crm.SysGroup)
  217. for i := range groupList {
  218. groupMap[groupList[i].GroupId] = groupList[i]
  219. }
  220. // 获取销售部门所有销售信息
  221. adminCond := "department_id in (?) AND enabled = 1"
  222. adminPars := make([]interface{}, 0)
  223. adminPars = append(adminPars, departmentIds)
  224. adminOB := new(crm.Admin)
  225. adminList, e := adminOB.List(adminCond, adminPars)
  226. if e != nil {
  227. err = errors.New("获取销售列表失败, Err: " + e.Error())
  228. return
  229. }
  230. // 销售列表
  231. for i := range adminList {
  232. v := new(crm.SellerAdminWithGroupTeam)
  233. v.DepartmentId = adminList[i].DepartmentId
  234. v.SellerId = adminList[i].AdminId
  235. v.SellerName = adminList[i].RealName
  236. g := groupMap[adminList[i].GroupId]
  237. if g != nil {
  238. if g.ParentId > 0 {
  239. // 三级分组
  240. p := groupMap[g.ParentId]
  241. if p != nil {
  242. v.GroupId = p.GroupId
  243. v.GroupName = p.GroupName
  244. v.TeamId = g.GroupId
  245. v.TeamName = g.GroupName
  246. }
  247. } else {
  248. // 二级分组
  249. v.GroupId = g.GroupId
  250. v.GroupName = g.GroupName
  251. }
  252. }
  253. if v.DepartmentId == crm.SellerDepartmentId {
  254. ficcList = append(ficcList, v)
  255. } else {
  256. raiList = append(raiList, v)
  257. }
  258. }
  259. return
  260. }
  261. // GetSellerList 获取销售部门列表-大组和小组
  262. func GetSellerList() (resp crm.SellerAdminWithGroupList, err error) {
  263. // 获取组别列表
  264. departmentIds := []int{crm.SellerDepartmentId,crm.RaiSellerDepartmentId}
  265. groupCond := "department_id in (?)"
  266. groupPars := make([]interface{}, 0)
  267. groupPars = append(groupPars, departmentIds)
  268. groupOB := new(crm.SysGroup)
  269. fullGroups, e := groupOB.List(groupCond, groupPars)
  270. if e != nil {
  271. err = errors.New("获取组别列表失败, Err: " + e.Error())
  272. return
  273. }
  274. fullGroupMap := make(map[int]*crm.SysGroup)
  275. for _, v := range fullGroups{
  276. fullGroupMap[v.GroupId] = v
  277. }
  278. // 获取销售部门所有销售信息
  279. adminCond := "department_id in (?) "
  280. adminPars := make([]interface{}, 0)
  281. adminPars = append(adminPars, departmentIds)
  282. adminOB := new(crm.Admin)
  283. adminList, e := adminOB.List(adminCond, adminPars)
  284. if e != nil {
  285. err = errors.New("获取销售列表失败, Err: " + e.Error())
  286. return
  287. }
  288. var listGroup []crm.SellerAdminWithGroupTree
  289. //var listDepartment []crm.SellerAdminWithGroupTree
  290. departmentListMap := make(map[int][]crm.SellerAdminWithGroupTree)
  291. groupListMap := make(map[int][]crm.SellerAdminWithGroupTree)
  292. teamListMap := make(map[int][]crm.SellerAdminWithGroupTree)
  293. //departmentHasMap := make(map[int]bool)
  294. groupHasMap := make(map[int]bool)
  295. teamHasMap := make(map[int]bool)
  296. for _, v := range adminList {
  297. tmp := crm.SellerAdminWithGroupTree{
  298. SellerId: v.AdminId,
  299. SellerName: v.RealName,
  300. }
  301. if v.GroupId > 0 {
  302. if groupInfo, ok := fullGroupMap[v.GroupId]; ok {
  303. if groupInfo.ParentId > 0 {
  304. teamListMap[v.GroupId] = append(teamListMap[v.GroupId], tmp)
  305. }else{
  306. groupListMap[groupInfo.GroupId] = append(groupListMap[groupInfo.GroupId], tmp)
  307. }
  308. }else {
  309. departmentListMap[v.DepartmentId] = append(departmentListMap[v.DepartmentId], tmp)
  310. }
  311. }else if v.DepartmentId > 0{
  312. departmentListMap[v.DepartmentId] = append(departmentListMap[v.DepartmentId], tmp)
  313. }
  314. }
  315. for _, groupInfo := range fullGroups {
  316. var team1 crm.SellerAdminWithGroupTree
  317. //处理小组
  318. if groupInfo.ParentId > 0 {
  319. if _, ok2 :=teamHasMap[groupInfo.GroupId]; !ok2 {
  320. if len(teamListMap[groupInfo.GroupId]) > 0 {
  321. team1 = crm.SellerAdminWithGroupTree{
  322. SellerId: groupInfo.GroupId,
  323. SellerName: groupInfo.GroupName,
  324. Child: teamListMap[groupInfo.GroupId],
  325. }
  326. teamHasMap[groupInfo.GroupId] = true
  327. groupListMap[groupInfo.ParentId] = append(groupListMap[groupInfo.ParentId], team1)
  328. }
  329. }
  330. }
  331. }
  332. for _, groupInfo := range fullGroups {
  333. var group1 crm.SellerAdminWithGroupTree
  334. //处理大组
  335. if groupInfo.ParentId == 0 {
  336. if _, ok2 :=groupHasMap[groupInfo.GroupId]; !ok2 {
  337. if len(groupListMap[groupInfo.GroupId]) > 0 {
  338. group1 = crm.SellerAdminWithGroupTree{
  339. SellerId: groupInfo.GroupId,
  340. SellerName: groupInfo.GroupName,
  341. Child: groupListMap[groupInfo.GroupId],
  342. }
  343. groupHasMap[groupInfo.GroupId] = true
  344. departmentListMap[groupInfo.DepartmentId] = append(departmentListMap[groupInfo.DepartmentId], group1)
  345. listGroup = append(listGroup, group1)
  346. }
  347. }
  348. }
  349. }
  350. //分部门
  351. allTitleMap := map[int]string{
  352. crm.SellerDepartmentId:"FICC销售",
  353. crm.RaiSellerDepartmentId:"权益销售",
  354. }
  355. tmp1 := crm.SellerAdminWithGroupTree{
  356. SellerId: crm.SellerDepartmentId,
  357. SellerName: allTitleMap[crm.SellerDepartmentId],
  358. Child: departmentListMap[crm.SellerDepartmentId],
  359. }
  360. tmp2 := crm.SellerAdminWithGroupTree{
  361. SellerId: crm.RaiSellerDepartmentId,
  362. SellerName: allTitleMap[crm.RaiSellerDepartmentId],
  363. Child: departmentListMap[crm.RaiSellerDepartmentId],
  364. }
  365. allList := make([]crm.SellerAdminWithGroupTree, 0)
  366. allList = append(allList, tmp1)
  367. allList = append(allList, tmp2)
  368. resp.AllList = allList
  369. return
  370. }