company_contract.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package controllers
  2. import (
  3. companyContractResp "hongze/hongze_mobile_admin/models/response/company_contract"
  4. "hongze/hongze_mobile_admin/models/tables/company_contract"
  5. "hongze/hongze_mobile_admin/models/tables/company_report_permission"
  6. "hongze/hongze_mobile_admin/services"
  7. "hongze/hongze_mobile_admin/services/contract"
  8. "hongze/hongze_mobile_admin/utils"
  9. )
  10. // 客户合同模块
  11. type CompanyContractCommon struct {
  12. BaseAuth
  13. }
  14. // @Title 合同详情详情
  15. // @Description 合同详情接口
  16. // @Param CompanyId query int true "客户ID"
  17. // @Param CompanyContractId query int true "合同id"
  18. // @Success 200 {object} company_contract.CompanyContractDetailResp
  19. // @router /detail [get]
  20. func (c *CompanyContractCommon) ApplyContractDetail() {
  21. sysUser := c.AdminWx
  22. companyId, _ := c.GetInt("CompanyId")
  23. if companyId <= 0 {
  24. c.FailWithMessage("参数错误", "参数错误,客户id小于等于0")
  25. return
  26. }
  27. companyContractId, _ := c.GetInt("CompanyContractId")
  28. roleTypeCode := sysUser.RoleTypeCode
  29. productId := services.GetProductId(roleTypeCode)
  30. //if productId == 0 {
  31. // c.FailWithMessage("当前账户类型异常", "客户类型为:"+roleTypeCode)
  32. // return
  33. //}
  34. detail, err := company_contract.GetCompanyContractDetail(companyId, productId, companyContractId)
  35. if err != nil {
  36. c.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
  37. return
  38. }
  39. if detail.ProductId == utils.COMPANY_PRODUCT_FICC_ID {
  40. for _, v := range utils.PermissionFiccClassifyArr {
  41. checkList := make([]int, 0)
  42. plist := new(company_report_permission.PermissionLookList)
  43. items, err := company_report_permission.GetPermissionLookItems(detail.ProductId, v)
  44. if err != nil {
  45. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  46. return
  47. }
  48. for _, n := range items {
  49. count, err := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId)
  50. if err != nil {
  51. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  52. return
  53. }
  54. if count > 0 {
  55. checkList = append(checkList, n.ChartPermissionId)
  56. }
  57. }
  58. plist.Items = items
  59. plist.ClassifyName = v
  60. plist.CheckList = checkList
  61. detail.PermissionList = append(detail.PermissionList, plist)
  62. }
  63. }
  64. if detail.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  65. classifyName := "权益"
  66. checkList := make([]int, 0)
  67. plist := new(company_report_permission.PermissionLookList)
  68. plist.ClassifyName = classifyName
  69. items, err := company_report_permission.GetPermissionLookItems(detail.ProductId, classifyName)
  70. if err != nil {
  71. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  72. return
  73. }
  74. mapExpensive := make(map[int]bool) // 通过合同获取所勾选的买方研选5w
  75. permissionList, err := company_report_permission.GetCompanyContractPermissionByCompanyContractId(companyContractId)
  76. if err != nil && err.Error() != utils.ErrNoRow() {
  77. c.FailWithMessage("获取失败", "获取合同权限信息失败,Err:"+err.Error())
  78. return
  79. }
  80. permissions := make([]int, 0) // 合同权限IDs
  81. checkItems := make([]*company_report_permission.PermissionLookItem, 0)
  82. expMap := map[bool]string{false: "(3w)", true: "(5w)"} // 买方研选价格
  83. // 未选大套餐, 走老逻辑
  84. if detail.RaiPackageType == 0 {
  85. mapUpgrade := make(map[int]bool) // 通过合同获取所勾选的升级行业权限
  86. for _, v := range permissionList {
  87. if v.IsUpgrade == 1 {
  88. mapUpgrade[v.ChartPermissionId] = true
  89. }
  90. if v.ExpensiveYx == 1 {
  91. mapExpensive[v.ChartPermissionId] = true
  92. }
  93. permissions = append(permissions, v.ChartPermissionId)
  94. }
  95. for _, n := range items {
  96. if utils.InArrayByInt(permissions, n.ChartPermissionId) {
  97. checkList = append(checkList, n.ChartPermissionId)
  98. checkItems = append(checkItems, n)
  99. }
  100. }
  101. plist.Items = checkItems
  102. plist.CheckList = checkList
  103. detail.PermissionList = append(detail.PermissionList, plist)
  104. newPermissionLookList := contract.HandleEquityPermissionLookList(detail.PermissionList)
  105. for _, cc := range newPermissionLookList {
  106. if cc.ClassifyName != "权益" {
  107. continue
  108. }
  109. for _, p := range cc.Items {
  110. // 行业升级
  111. if mapUpgrade[p.ChartPermissionId] {
  112. p.PermissionName += "(升级)"
  113. continue
  114. }
  115. // 买方研选
  116. if p.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  117. p.PermissionName += expMap[mapExpensive[p.ChartPermissionId]]
  118. }
  119. }
  120. }
  121. detail.PermissionList = newPermissionLookList
  122. }
  123. // 如果选择的是大套餐, 那么不再展示每个具体的权限, 除大套餐外还需遍历一下专家和研选3w/5w是否有选(这两个与大套餐不互斥, 可额外选择)
  124. if detail.RaiPackageType > 0 {
  125. // 大套餐
  126. bigPackage := new(company_report_permission.PermissionLookItem)
  127. if detail.RaiPackageType == 1 {
  128. bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_70W
  129. bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_70W
  130. checkList = append(checkList, utils.CHART_PERMISSION_ID_70W)
  131. }
  132. if detail.RaiPackageType == 2 {
  133. bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_45W
  134. bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_45W
  135. checkList = append(checkList, utils.CHART_PERMISSION_ID_45W)
  136. }
  137. checkItems = append(checkItems, bigPackage)
  138. for _, v := range permissionList {
  139. if v.ExpensiveYx == 1 {
  140. mapExpensive[v.ChartPermissionId] = true
  141. }
  142. permissions = append(permissions, v.ChartPermissionId)
  143. }
  144. // 专家和研选
  145. for _, n := range items {
  146. if n.ChartPermissionId != utils.ZHUAN_JIA_ID && n.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  147. continue
  148. }
  149. if n.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  150. n.PermissionName += expMap[mapExpensive[n.ChartPermissionId]]
  151. }
  152. if utils.InArrayByInt(permissions, n.ChartPermissionId) {
  153. checkList = append(checkList, n.ChartPermissionId)
  154. checkItems = append(checkItems, n)
  155. }
  156. }
  157. plist.Items = checkItems
  158. plist.CheckList = checkList
  159. detail.PermissionList = append(detail.PermissionList, plist)
  160. }
  161. }
  162. resp := companyContractResp.CompanyContractDetailResp{
  163. detail,
  164. }
  165. c.OkDetailed(resp, "获取成功")
  166. }