service.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. )
  9. // ServiceController 合同套餐
  10. type ServiceController struct{}
  11. // ServiceList
  12. // @Title 合同套餐列表
  13. // @Description 合同套餐列表
  14. // @Param ProductId query int false "套餐类型: 1-FICC(默认); 2-权益"
  15. // @Success 200 {object} crm.ContractSearchListResp
  16. // @router /contract/service/list [get]
  17. func (sr *ServiceController) List(c *gin.Context) {
  18. var req fms.ContractServiceListReq
  19. if e := c.BindQuery(&req); e != nil {
  20. err, ok := e.(validator.ValidationErrors)
  21. if !ok {
  22. resp.FailData("参数解析失败", "Err:"+e.Error(), c)
  23. return
  24. }
  25. resp.FailData("参数解析失败", err.Translate(global.Trans), c)
  26. return
  27. }
  28. productId := req.ProductId
  29. if productId == 0 {
  30. productId = 1
  31. }
  32. list, e := fms.GetContractServiceTemplateMapByProductId(productId)
  33. if e != nil {
  34. resp.FailData("获取失败", "获取产品套餐失败, Err: "+e.Error(), c)
  35. return
  36. }
  37. respList := make([]*fms.ContractServiceTemplateMapItems, 0)
  38. for i := 0; i < len(list); i++ {
  39. v := new(fms.ContractServiceTemplateMapItems)
  40. v.ContractServiceTemplateItem = *list[i]
  41. secFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
  42. secList, e := fms.GetContractServiceTemplateMapByParentId(v.ServiceTemplateId)
  43. if e != nil {
  44. resp.FailData("获取失败", "Err:"+e.Error(), c)
  45. return
  46. }
  47. secondLen := len(secList)
  48. for j := 0; j < secondLen; j++ {
  49. sec := new(fms.ContractServiceTemplateMapItems)
  50. sec.ContractServiceTemplateItem = *secList[j]
  51. detail, e := fms.GetContractServiceDetailByTemplateId(secList[j].ServiceTemplateId)
  52. if e != nil {
  53. resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
  54. return
  55. }
  56. sec.Detail = detail
  57. // 权益存在第三级主客观套餐
  58. thirdFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
  59. thirdList, e := fms.GetContractServiceTemplateMapByParentId(secList[j].ServiceTemplateId)
  60. if e != nil {
  61. resp.FailData("获取失败", "获取三级套餐失败, Err:"+e.Error(), c)
  62. return
  63. }
  64. for t := range thirdList {
  65. tf := new(fms.ContractServiceTemplateMapItems)
  66. tf.ContractServiceTemplateItem = *thirdList[t]
  67. thirdFormatList = append(thirdFormatList, tf)
  68. }
  69. sec.Children = thirdFormatList
  70. secFormatList = append(secFormatList, sec)
  71. }
  72. detail, e := fms.GetContractServiceDetailByTemplateId(list[i].ServiceTemplateId)
  73. if e != nil {
  74. resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
  75. return
  76. }
  77. v.Detail = detail
  78. v.Children = secFormatList
  79. respList = append(respList, v)
  80. }
  81. resp.OkData("获取成功", respList, c)
  82. }