company_contract.go 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. allFiccPermissions, e := company_report_permission.GetPermissionLookItemsByProductId(utils.COMPANY_PRODUCT_FICC_ID)
  43. if e != nil {
  44. c.FailWithMessage("获取权限信息失败", "获取权限信息失败,Err:"+err.Error())
  45. return
  46. }
  47. permissionMap := make(map[int][]*company_report_permission.PermissionLookItem, 0)
  48. for _, v := range allFiccPermissions {
  49. if v.ParentId > 0 {
  50. permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v)
  51. }
  52. }
  53. for _, v := range allFiccPermissions {
  54. if v.ParentId == 0 {
  55. plist := new(company_report_permission.PermissionLookList)
  56. plist.Items = make([]*company_report_permission.PermissionLookItem, 0)
  57. plist.CheckList = make([]int, 0)
  58. items, ok := permissionMap[v.ChartPermissionId]
  59. if ok {
  60. plist.Items = items
  61. for _, n := range items {
  62. count, err := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId)
  63. if err != nil {
  64. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  65. return
  66. }
  67. if count > 0 {
  68. plist.CheckList = append(plist.CheckList, n.ChartPermissionId)
  69. }
  70. }
  71. }
  72. plist.ClassifyName = v.PermissionName
  73. detail.PermissionList = append(detail.PermissionList, plist)
  74. }
  75. }
  76. /*for _, v := range utils.PermissionFiccClassifyArr {
  77. checkList := make([]int, 0)
  78. plist := new(company_report_permission.PermissionLookList)
  79. items, err := company_report_permission.GetPermissionLookItems(detail.ProductId, v)
  80. if err != nil {
  81. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  82. return
  83. }
  84. for _, n := range items {
  85. count, err := company_contract.GetCompanyContractPermissionCheckByContractId(companyId, detail.CompanyContractId, n.ChartPermissionId)
  86. if err != nil {
  87. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  88. return
  89. }
  90. if count > 0 {
  91. checkList = append(checkList, n.ChartPermissionId)
  92. }
  93. }
  94. plist.Items = items
  95. plist.ClassifyName = v
  96. plist.CheckList = checkList
  97. detail.PermissionList = append(detail.PermissionList, plist)
  98. }*/
  99. }
  100. if detail.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  101. classifyName := "权益"
  102. checkList := make([]int, 0)
  103. plist := new(company_report_permission.PermissionLookList)
  104. plist.ClassifyName = classifyName
  105. items, err := company_report_permission.GetPermissionLookItems(detail.ProductId, classifyName)
  106. if err != nil {
  107. c.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
  108. return
  109. }
  110. mapExpensive := make(map[int]bool) // 通过合同获取所勾选的买方研选5w
  111. permissionList, err := company_report_permission.GetCompanyContractPermissionByCompanyContractId(companyContractId)
  112. if err != nil && err.Error() != utils.ErrNoRow() {
  113. c.FailWithMessage("获取失败", "获取合同权限信息失败,Err:"+err.Error())
  114. return
  115. }
  116. permissions := make([]int, 0) // 合同权限IDs
  117. checkItems := make([]*company_report_permission.PermissionLookItem, 0)
  118. //expMap := map[bool]string{false: "(3w)", true: "(5w)"} // 买方研选价格
  119. //var expensiveYx int
  120. // 未选大套餐, 走老逻辑
  121. var points float64
  122. if detail.RaiPackageType == 0 {
  123. mapUpgrade := make(map[int]bool) // 通过合同获取所勾选的升级行业权限
  124. for _, v := range permissionList {
  125. if v.IsUpgrade == 1 {
  126. mapUpgrade[v.ChartPermissionId] = true
  127. }
  128. if v.ExpensiveYx > 0 {
  129. mapExpensive[v.ChartPermissionId] = true
  130. //expensiveYx = v.ExpensiveYx
  131. }
  132. if v.Points > 0 && v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  133. points = v.Points
  134. }
  135. permissions = append(permissions, v.ChartPermissionId)
  136. }
  137. for _, n := range items {
  138. if points > 0 && n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  139. n.PermissionName += fmt.Sprint("(", points, "点)")
  140. }
  141. if utils.InArrayByInt(permissions, n.ChartPermissionId) {
  142. checkList = append(checkList, n.ChartPermissionId)
  143. checkItems = append(checkItems, n)
  144. }
  145. }
  146. plist.Items = checkItems
  147. plist.CheckList = checkList
  148. detail.PermissionList = append(detail.PermissionList, plist)
  149. newPermissionLookList := contract.HandleEquityPermissionLookList(detail.PermissionList)
  150. for _, cc := range newPermissionLookList {
  151. if cc.ClassifyName != "权益" {
  152. continue
  153. }
  154. for _, p := range cc.Items {
  155. // 行业升级
  156. if mapUpgrade[p.ChartPermissionId] {
  157. if strings.Contains(p.PermissionName, "主观") {
  158. p.PermissionName = strings.Replace(p.PermissionName, "主观", "升级", -1)
  159. continue
  160. }
  161. if strings.Contains(p.PermissionName, "客观") {
  162. p.PermissionName = strings.Replace(p.PermissionName, "客观", "升级", -1)
  163. continue
  164. }
  165. p.PermissionName += "(升级)"
  166. continue
  167. }
  168. // 买方研选
  169. //if p.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  170. // if expensiveYx == 1 {
  171. // p.PermissionName += "(5w)"
  172. // } else if expensiveYx == 2 {
  173. // p.PermissionName += "(10w)"
  174. // }
  175. // //p.PermissionName += expMap[mapExpensive[p.ChartPermissionId]]
  176. //}
  177. }
  178. }
  179. detail.PermissionList = newPermissionLookList
  180. }
  181. // 如果选择的是大套餐, 那么不再展示每个具体的权限, 除大套餐外还需遍历一下专家和研选3w/5w是否有选(这两个与大套餐不互斥, 可额外选择)
  182. if detail.RaiPackageType > 0 {
  183. // 大套餐
  184. bigPackage := new(company_report_permission.PermissionLookItem)
  185. if detail.RaiPackageType == 1 {
  186. bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_70W
  187. bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_70W
  188. checkList = append(checkList, utils.CHART_PERMISSION_ID_70W)
  189. }
  190. if detail.RaiPackageType == 2 {
  191. bigPackage.PermissionName = utils.CHART_PERMISSION_NAME_45W
  192. bigPackage.ChartPermissionId = utils.CHART_PERMISSION_ID_45W
  193. checkList = append(checkList, utils.CHART_PERMISSION_ID_45W)
  194. }
  195. checkItems = append(checkItems, bigPackage)
  196. for _, v := range permissionList {
  197. if v.ExpensiveYx == 1 {
  198. mapExpensive[v.ChartPermissionId] = true
  199. }
  200. if v.Points > 0 && v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  201. points = v.Points
  202. }
  203. permissions = append(permissions, v.ChartPermissionId)
  204. }
  205. // 专家、研选订阅、研选扣点包
  206. for _, n := range items {
  207. if n.ChartPermissionId != utils.ZHUAN_JIA_ID && n.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN && n.ChartPermissionId != utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  208. continue
  209. }
  210. //if n.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  211. // n.PermissionName += expMap[mapExpensive[n.ChartPermissionId]]
  212. //}
  213. if n.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  214. n.PermissionName += fmt.Sprint("(", points, "点)")
  215. }
  216. if utils.InArrayByInt(permissions, n.ChartPermissionId) {
  217. checkList = append(checkList, n.ChartPermissionId)
  218. checkItems = append(checkItems, n)
  219. }
  220. }
  221. plist.Items = checkItems
  222. plist.CheckList = checkList
  223. detail.PermissionList = append(detail.PermissionList, plist)
  224. }
  225. }
  226. resp := companyContractResp.CompanyContractDetailResp{
  227. detail,
  228. }
  229. c.OkDetailed(resp, "获取成功")
  230. }