company_permission.go 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. package controllers
  2. import (
  3. "fmt"
  4. "hongze/hz_eta_api/models"
  5. "hongze/hz_eta_api/models/company"
  6. "hongze/hz_eta_api/services"
  7. "hongze/hz_eta_api/utils"
  8. "strings"
  9. )
  10. // CompanyPermissionController 客户权限管理
  11. type CompanyPermissionController struct {
  12. BaseAuthController
  13. }
  14. // List
  15. // @Title 获取权限设置基础信息
  16. // @Description 获取权限设置基础信息接口
  17. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  18. // @Param NoUpgrade query bool false "是否不展示升级权限,默认为 false"
  19. // @Success 200 {object} company.PermissionSetResp
  20. // @router /permission/list [get]
  21. func (this *CompanyPermissionController) List() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  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. // Tips:目前这个接口权益在添加客户、申请转正、领取客户、续约申请均有用到
  35. companyType := this.GetString("CompanyType")
  36. noUpgrade, _ := this.GetBool("NoUpgrade", false) // 添加客户、领取客户=true; 申请转正、续约申请=false
  37. var productId int
  38. resp := new(company.PermissionSetResp)
  39. roleTypeCode := sysUser.RoleTypeCode
  40. productId = services.GetProductId(roleTypeCode)
  41. // FICC
  42. if productId == utils.COMPANY_PRODUCT_FICC_ID || companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  43. for _, v := range utils.PermissionFiccClassifyArr {
  44. checkList := make([]int, 0)
  45. p := new(company.PermissionSetList)
  46. p.ClassifyName = v
  47. items, err := company.GetPermissionSetItems(utils.COMPANY_PRODUCT_FICC_ID, v)
  48. if err != nil {
  49. br.Msg = "获取失败"
  50. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  51. return
  52. }
  53. p.Items = items
  54. if v == "宏观经济" {
  55. checkList = append(checkList, 1)
  56. }
  57. p.CheckList = checkList
  58. resp.List = append(resp.List, p)
  59. }
  60. br.Ret = 200
  61. br.Success = true
  62. br.Msg = "获取成功"
  63. br.Data = resp
  64. return
  65. }
  66. // 权益
  67. if productId == utils.COMPANY_PRODUCT_RAI_ID || companyType == utils.COMPANY_PRODUCT_RAI_NAME {
  68. p := new(company.PermissionSetList)
  69. items, err := company.GetPermissionSetItemsByType(utils.COMPANY_PRODUCT_RAI_ID, utils.COMPANY_PRODUCT_RAI_NAME)
  70. if err != nil {
  71. br.Msg = "获取失败"
  72. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  73. return
  74. }
  75. // 原始版的权限
  76. if noUpgrade {
  77. for _, v := range items {
  78. p.Items = append(p.Items, v)
  79. }
  80. }
  81. // 展示升级权限, 需要有套餐的展示, 行业可能需要拆分主客观, 买方研选需要分为3w和5w两种
  82. if !noUpgrade {
  83. p.Items = append(p.Items, &company.PermissionSetItem{
  84. PermissionName: utils.CHART_PERMISSION_NAME_45W,
  85. }, &company.PermissionSetItem{
  86. PermissionName: utils.CHART_PERMISSION_NAME_70W,
  87. })
  88. // 是否为内部人员
  89. isRai, e := services.CheckRaiAdmin(sysUser.AdminId)
  90. if e != nil {
  91. br.Msg = "获取失败"
  92. br.ErrMsg = "判断是否为权益内部人员失败, GetRaiAdmin Err: " + e.Error()
  93. return
  94. }
  95. // 获取行业主客观权限ID
  96. childSubMap, childObjMap := make(map[string]int), make(map[string]int)
  97. {
  98. permissions, e := models.GetChartPermissionList()
  99. if e != nil {
  100. br.Msg = "获取失败"
  101. br.ErrMsg = "获取权限列表失败, GetChartPermissionList Err: " + e.Error()
  102. return
  103. }
  104. for _, v := range permissions {
  105. if !strings.Contains("医药消费科技智造", v.PermissionName) {
  106. continue
  107. }
  108. if strings.Contains(v.Remark, "主观") {
  109. childSubMap[v.PermissionName] = v.ChartPermissionId
  110. continue
  111. }
  112. childObjMap[v.PermissionName] = v.ChartPermissionId
  113. }
  114. }
  115. for _, v := range items {
  116. // 处理四大行业的升级展示
  117. if strings.Contains("医药消费科技智造", v.PermissionName) {
  118. // 内部人员需要拆分主客观权限
  119. if isRai {
  120. v.Child = make([]*company.PermissionSetItem, 0)
  121. v.Child = append(v.Child, &company.PermissionSetItem{
  122. ChartPermissionId: childSubMap[v.PermissionName],
  123. PermissionName: "主观",
  124. PermissionType: 1,
  125. }, &company.PermissionSetItem{
  126. ChartPermissionId: childObjMap[v.PermissionName],
  127. PermissionName: "客观",
  128. PermissionType: 2,
  129. })
  130. }
  131. p.Items = append(p.Items, v)
  132. t := new(company.PermissionSetItem)
  133. t.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_UPGRADE
  134. t.PermissionName = v.PermissionName + "(升级)"
  135. t.PermissionType = v.PermissionType
  136. t.Checked = v.Checked
  137. p.Items = append(p.Items, t)
  138. continue
  139. }
  140. // 买方研选划分为3w和5w两种
  141. if v.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
  142. m3, m5 := new(company.PermissionSetItem), new(company.PermissionSetItem)
  143. m3.ChartPermissionId = v.ChartPermissionId
  144. m3.PermissionName = fmt.Sprint(v.PermissionName, "(3w)")
  145. p.Items = append(p.Items, m3)
  146. m5.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_YANXUAN_DIFF
  147. m5.PermissionName = fmt.Sprint(v.PermissionName, "(5w)")
  148. p.Items = append(p.Items, m5)
  149. continue
  150. }
  151. p.Items = append(p.Items, v)
  152. }
  153. }
  154. p.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
  155. p.CheckList = make([]int, 0)
  156. resp.List = append(resp.List, p)
  157. }
  158. br.Ret = 200
  159. br.Success = true
  160. br.Msg = "获取成功"
  161. br.Data = resp
  162. }
  163. // PermissionVariety
  164. // @Title 品种
  165. // @Description 品种接口
  166. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  167. // @Success 200 {object} company.PermissionVarietyResp
  168. // @router /permission/variety [get]
  169. func (this *CompanyPermissionController) PermissionVariety() {
  170. br := new(models.BaseResponse).Init()
  171. defer func() {
  172. this.Data["json"] = br
  173. this.ServeJSON()
  174. }()
  175. sysUser := this.SysUser
  176. if sysUser == nil {
  177. br.Msg = "请登录"
  178. br.ErrMsg = "请登录,SysUser Is Empty"
  179. br.Ret = 408
  180. return
  181. }
  182. companyType := this.GetString("CompanyType")
  183. var productId int
  184. resp := new(company.PermissionVarietyResp)
  185. roleTypeCode := sysUser.RoleTypeCode
  186. if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
  187. productId = 2
  188. } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
  189. productId = 1
  190. } else {
  191. productId = 0
  192. }
  193. if productId == 1 {
  194. for k, v := range utils.PermissionFiccClassifyArr {
  195. p := new(company.PermissionVarietyList)
  196. p.ClassifyName = v
  197. p.ChartPermissionId = k + 100
  198. items, err := company.GetPermissionVarietyItems(productId, v)
  199. if err != nil {
  200. br.Msg = "获取失败"
  201. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  202. return
  203. }
  204. p.Items = items
  205. resp.List = append(resp.List, p)
  206. }
  207. } else if productId == 2 {
  208. v := "权益"
  209. p := new(company.PermissionVarietyList)
  210. p.ClassifyName = v
  211. p.ChartPermissionId = 105
  212. items, err := company.GetPermissionVarietyItems(productId, v)
  213. if err != nil {
  214. br.Msg = "获取失败"
  215. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  216. return
  217. }
  218. p.Items = items
  219. resp.List = append(resp.List, p)
  220. } else {
  221. if companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  222. for k, v := range utils.PermissionFiccClassifyArr {
  223. p := new(company.PermissionVarietyList)
  224. p.ClassifyName = v
  225. p.ChartPermissionId = k + 100
  226. items, err := company.GetPermissionVarietyItems(1, v)
  227. if err != nil {
  228. br.Msg = "获取失败"
  229. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  230. return
  231. }
  232. p.Items = items
  233. resp.List = append(resp.List, p)
  234. }
  235. } else if companyType == utils.COMPANY_PRODUCT_RAI_NAME {
  236. v := "权益"
  237. p := new(company.PermissionVarietyList)
  238. p.ClassifyName = v
  239. p.ChartPermissionId = 105
  240. items, err := company.GetPermissionVarietyItems(2, v)
  241. if err != nil {
  242. br.Msg = "获取失败"
  243. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  244. return
  245. }
  246. p.Items = items
  247. resp.List = append(resp.List, p)
  248. }
  249. }
  250. br.Ret = 200
  251. br.Success = true
  252. br.Msg = "获取成功"
  253. br.Data = resp
  254. }