company_contract.go 7.4 KB

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