company_seller.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package controllers
  2. import (
  3. "eta/eta_forum_admin/models"
  4. "eta/eta_forum_admin/models/system"
  5. "eta/eta_forum_admin/services"
  6. "eta/eta_forum_admin/utils"
  7. "fmt"
  8. )
  9. // 销售管理
  10. type CompanySellerController struct {
  11. BaseAuthController
  12. }
  13. // RoadshowFiccList
  14. // @Title 路演FICC销售列表
  15. // @Description 路演FICC销售列表
  16. // @Success 200 {object} system.RoadshowGroupResp
  17. // @router /seller/roadshow_ficc/list [get]
  18. func (this *CompanySellerController) RoadshowFiccList() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. if br.ErrMsg == "" {
  22. br.IsSendEmail = false
  23. }
  24. this.Data["json"] = br
  25. this.ServeJSON()
  26. }()
  27. sysUser := this.SysUser
  28. if sysUser == nil {
  29. br.Msg = "请登录"
  30. br.ErrMsg = "请登录,SysUser Is Empty"
  31. br.Ret = 408
  32. return
  33. }
  34. resp := new(system.RoadshowGroupResp)
  35. productId := services.GetProductId(sysUser.RoleTypeCode)
  36. if productId == utils.COMPANY_PRODUCT_RAI_ID {
  37. br.Ret = 200
  38. br.Success = true
  39. br.Msg = "获取成功"
  40. br.Data = resp
  41. return
  42. }
  43. // 分组
  44. departmentId := 2
  45. groups, e := system.GetGroupByDepartmentId(departmentId)
  46. if e != nil {
  47. br.Msg = "获取失败"
  48. br.ErrMsg = "获取FICC分组失败, Err: " + e.Error()
  49. return
  50. }
  51. teamGroupId := make(map[int]int, 0) // 小组ID对应的大组ID
  52. var list []system.RoadshowGroups
  53. for _, g := range groups {
  54. if g.ParentId > 0 {
  55. teamGroupId[g.GroupId] = g.ParentId
  56. continue
  57. }
  58. // 大组
  59. list = append(list, system.RoadshowGroups{
  60. GroupId: g.GroupId,
  61. GroupName: g.GroupName,
  62. })
  63. }
  64. // 销售
  65. roleArr := []string{
  66. utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_GROUP,
  67. utils.ROLE_TYPE_CODE_FICC_TEAM, utils.ROLE_TYPE_CODE_FICC_SELLER,
  68. }
  69. cond := fmt.Sprintf(` AND role_type_code IN (%s) AND enabled = 1`, utils.GetOrmInReplace(len(roleArr)))
  70. pars := make([]interface{}, 0)
  71. pars = append(pars, roleArr)
  72. sellers, e := system.GetSysUserItemsOrderByCreated(cond, pars)
  73. if e != nil {
  74. br.Msg = "获取失败"
  75. br.ErrMsg = "获取FICC销售失败, Err: " + e.Error()
  76. return
  77. }
  78. groupIdChild := make(map[int][]system.RoadshowGroupSellers) // 大组ID对应的销售
  79. for _, s := range sellers {
  80. var seller system.RoadshowGroupSellers
  81. seller.AdminId = s.AdminId
  82. seller.AdminName = s.RealName
  83. gid := teamGroupId[s.GroupId]
  84. if gid > 0 {
  85. // 小组
  86. seller.GroupId = gid
  87. seller.TeamId = s.GroupId
  88. } else {
  89. // 大组
  90. seller.GroupId = s.GroupId
  91. }
  92. groupIdChild[seller.GroupId] = append(groupIdChild[seller.GroupId], seller)
  93. }
  94. // 根据当前角色过滤可选项
  95. for _, v := range list {
  96. // 如果是销售、组长、主管, 那么过滤掉自己大组外的其他组
  97. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER {
  98. if sysUser.GroupId != v.GroupId && teamGroupId[sysUser.GroupId] != v.GroupId {
  99. continue
  100. }
  101. }
  102. child := groupIdChild[v.GroupId]
  103. // 如果是小组长, 那么只能看到自己小组的信息
  104. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
  105. var team []system.RoadshowGroupSellers
  106. for _, c := range child {
  107. if c.TeamId == sysUser.GroupId {
  108. team = append(team, c)
  109. }
  110. }
  111. v.Child = team
  112. resp.List = append(resp.List, v)
  113. continue
  114. }
  115. // 如果是普通销售, 那么只能看到分组中的自己
  116. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER {
  117. var self []system.RoadshowGroupSellers
  118. for _, c := range child {
  119. if c.AdminId == sysUser.AdminId {
  120. self = append(self, c)
  121. break
  122. }
  123. }
  124. v.Child = self
  125. resp.List = append(resp.List, v)
  126. continue
  127. }
  128. // 非以上两种情况, 可见该大组所有销售
  129. v.Child = child
  130. resp.List = append(resp.List, v)
  131. }
  132. br.Ret = 200
  133. br.Success = true
  134. br.Msg = "获取成功"
  135. br.Data = resp
  136. }