service.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package contract
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/go-playground/validator/v10"
  5. "hongze/fms_api/controller/resp"
  6. "hongze/fms_api/global"
  7. "hongze/fms_api/models/fms"
  8. "strconv"
  9. )
  10. // ServiceController 合同套餐
  11. type ServiceController struct{}
  12. // ServiceList
  13. // @Title 合同套餐列表
  14. // @Description 合同套餐列表
  15. // @Param ProductId query int false "套餐类型: 1-FICC(默认); 2-权益"
  16. // @Success 200 {object} crm.ContractSearchListResp
  17. // @router /contract/service/list [get]
  18. func (sr *ServiceController) List(c *gin.Context) {
  19. var req fms.ContractServiceListReq
  20. if e := c.BindQuery(&req); e != nil {
  21. err, ok := e.(validator.ValidationErrors)
  22. if !ok {
  23. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  24. return
  25. }
  26. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  27. return
  28. }
  29. productIdStr := req.ProductId
  30. var productId int
  31. var list []*fms.ContractServiceTemplateItem
  32. var err error
  33. if productIdStr == "" {
  34. list, err = fms.GetContractServiceTemplateSecond()
  35. }else{
  36. productId, _ = strconv.Atoi(productIdStr)
  37. list, err = fms.GetContractServiceTemplateMapByProductId(productId)
  38. }
  39. if err != nil {
  40. resp.FailData("获取失败", "获取产品套餐失败, Err: "+err.Error(), c)
  41. return
  42. }
  43. allMap := make(map[int][]*fms.ContractServiceTemplateMapItems)
  44. respList := make([]*fms.ContractServiceTemplateList, 0)
  45. for i := 0; i < len(list); i++ {
  46. item := list[i]
  47. v := new(fms.ContractServiceTemplateMapItems)
  48. v.ContractServiceTemplateItem = *item
  49. secFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
  50. secList, e := fms.GetContractServiceTemplateMapByParentId(v.ServiceTemplateId)
  51. if e != nil {
  52. resp.FailData("获取失败", "Err:"+e.Error(), c)
  53. return
  54. }
  55. secondLen := len(secList)
  56. for j := 0; j < secondLen; j++ {
  57. sec := new(fms.ContractServiceTemplateMapItems)
  58. sec.ContractServiceTemplateItem = *secList[j]
  59. detail, e := fms.GetContractServiceDetailByTemplateId(secList[j].ServiceTemplateId)
  60. if e != nil {
  61. resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
  62. return
  63. }
  64. sec.Detail = detail
  65. // 权益存在第三级主客观套餐
  66. thirdFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
  67. thirdList, e := fms.GetContractServiceTemplateMapByParentId(secList[j].ServiceTemplateId)
  68. if e != nil {
  69. resp.FailData("获取失败", "获取三级套餐失败, Err:"+e.Error(), c)
  70. return
  71. }
  72. for t := range thirdList {
  73. tf := new(fms.ContractServiceTemplateMapItems)
  74. tf.ContractServiceTemplateItem = *thirdList[t]
  75. thirdFormatList = append(thirdFormatList, tf)
  76. }
  77. sec.Children = thirdFormatList
  78. secFormatList = append(secFormatList, sec)
  79. }
  80. detail, e := fms.GetContractServiceDetailByTemplateId(item.ServiceTemplateId)
  81. if e != nil {
  82. resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
  83. return
  84. }
  85. v.Detail = detail
  86. v.Children = secFormatList
  87. allMap[item.ProductId] = append(allMap[item.ProductId], v)
  88. }
  89. allTitleMap := map[int]string{
  90. 1:"FICC套餐",
  91. 2:"权益套餐",
  92. }
  93. if productId == 0 {
  94. tmp1 := &fms.ContractServiceTemplateList{
  95. Title: allTitleMap[1],
  96. Children: allMap[1],
  97. }
  98. tmp2 := &fms.ContractServiceTemplateList{
  99. Title: allTitleMap[2],
  100. Children: allMap[2],
  101. }
  102. respList = append(respList, tmp1)
  103. respList = append(respList, tmp2)
  104. }else{
  105. tmp := &fms.ContractServiceTemplateList{
  106. Title: allTitleMap[productId],
  107. Children: allMap[productId],
  108. }
  109. respList = append(respList, tmp)
  110. }
  111. resp.OkData("获取成功", respList, c)
  112. }
  113. // ServiceList
  114. // @Title 合同套餐列表
  115. // @Description 合同套餐列表
  116. // @Param ProductId query int false "套餐类型: 1-FICC(默认); 2-权益"
  117. // @Success 200 {object} crm.ContractSearchListResp
  118. // @router /contract/service/simple [get]
  119. func (sr *ServiceController) SimpleList(c *gin.Context) {
  120. list, err := fms.GetContractServiceTemplateSecond()
  121. if err != nil {
  122. resp.FailData("获取失败", "获取产品套餐失败, Err: "+err.Error(), c)
  123. return
  124. }
  125. allList := make([]*fms.ContractServiceTemplateItem, 0)
  126. allMap := make(map[int][]*fms.ContractServiceTemplateMapItems)
  127. respList := make([]*fms.ContractServiceTemplateList, 0)
  128. for i := 0; i < len(list); i++ {
  129. if list[i].Title == "行业套餐" {
  130. industryList, e := fms.GetContractServiceTemplateMapByParentId(list[i].ServiceTemplateId)
  131. if e != nil {
  132. resp.FailData("获取失败", "Err:"+e.Error(), c)
  133. return
  134. }
  135. for _, sv := range industryList {
  136. allList = append(allList, sv)
  137. }
  138. }else{
  139. allList = append(allList, list[i])
  140. }
  141. }
  142. for i := 0; i < len(allList); i++ {
  143. item := allList[i]
  144. v := new(fms.ContractServiceTemplateMapItems)
  145. v.ContractServiceTemplateItem = *item
  146. allMap[item.ProductId] = append(allMap[item.ProductId], v)
  147. }
  148. allTitleMap := map[int]string{
  149. 1:"FICC套餐",
  150. 2:"权益套餐",
  151. }
  152. tmp1 := &fms.ContractServiceTemplateList{
  153. Title: allTitleMap[1],
  154. Children: allMap[1],
  155. }
  156. tmp2 := &fms.ContractServiceTemplateList{
  157. Title: allTitleMap[2],
  158. Children: allMap[2],
  159. }
  160. respList = append(respList, tmp1)
  161. respList = append(respList, tmp2)
  162. resp.OkData("获取成功", respList, c)
  163. }