company_contract.go 6.6 KB

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