product_controller.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package product
  2. import (
  3. "eta/eta_mini_ht_api/common/exception"
  4. "eta/eta_mini_ht_api/common/utils/page"
  5. "eta/eta_mini_ht_api/controllers"
  6. productService "eta/eta_mini_ht_api/service/product"
  7. )
  8. var (
  9. productMap = map[string]bool{
  10. "audio": true,
  11. "video": true,
  12. "media": true,
  13. "report": true,
  14. "package": true,
  15. }
  16. )
  17. type ProductController struct {
  18. controllers.ListController
  19. }
  20. // GetProductInfo 获取商品信息
  21. // @Summary 获取商品信息
  22. // @Description 获取商品信息
  23. // @Success 200 {object} controllers.BaseResponse
  24. // @router /getProductInfo [get]
  25. func (p *ProductController) GetProductInfo(productId int) {
  26. controllers.Wrap(&p.BaseController, func() (result *controllers.WrapData, err error) {
  27. result = p.InitWrapData("获取商品详情失败")
  28. if productId <= 0 {
  29. err = exception.New(exception.IllegalProductId)
  30. p.FailedResult("获取商品详情失败", result)
  31. return
  32. }
  33. productInfo, err := productService.GetProductInfoById(productId)
  34. if err != nil {
  35. p.FailedResult("获取商品详情失败", result)
  36. return
  37. }
  38. p.SuccessResult("获取商品详情成功", productInfo, result)
  39. return
  40. })
  41. }
  42. // RelatePackage 关联套餐搜索
  43. // @Summary 关联套餐搜索
  44. // @Description 关联套餐搜索
  45. // @Success 200 {object} controllers.BaseResponse
  46. // @router /relatePackage [get]
  47. func (p *ProductController) RelatePackage(productId int) {
  48. controllers.Wrap(&p.BaseController, func() (result *controllers.WrapData, err error) {
  49. result = p.InitWrapData("获取关联套餐信息失败")
  50. if productId <= 0 {
  51. err = exception.New(exception.IllegalProductId)
  52. p.FailedResult("获取关联套餐信息失败", result)
  53. return
  54. }
  55. productInfo, err := productService.GetProductInfoById(productId)
  56. if err != nil {
  57. p.FailedResult("获取关联套餐信息失败", result)
  58. err = exception.New(exception.ProductTypeError)
  59. return
  60. }
  61. if productInfo.Type == "package" {
  62. p.FailedResult("该商品为套餐,无法获取想关联套餐商品", result)
  63. err = exception.New(exception.ProductTypeError)
  64. }
  65. switch productInfo.Type {
  66. case "audio", "video":
  67. productInfo.MediaId = productInfo.SourceId
  68. case "report":
  69. productInfo.ReportId = productInfo.SourceId
  70. }
  71. productList, err := productService.GetRelatePackage(productInfo)
  72. productList = append(productList, productInfo)
  73. if err != nil {
  74. p.FailedResult("获取关联套餐信息失败", result)
  75. return
  76. }
  77. p.SuccessResult("获取关联套餐信息成功", productList, result)
  78. return
  79. })
  80. }
  81. // ProductSearch 获取商品信息
  82. // @Summary 获取商品信息
  83. // @Description 获取商品信息
  84. // @Success 200 {object} controllers.BaseResponse
  85. // @router /productSearch [get]
  86. func (p *ProductController) ProductSearch(productType, key string, isSignal bool) {
  87. controllers.Wrap(&p.BaseController, func() (result *controllers.WrapData, err error) {
  88. result = p.InitWrapData("搜索产品信息失败")
  89. if !productMap[productType] {
  90. err = exception.New(exception.ProductTypeError)
  91. p.FailedResult("搜索产品信息失败", result)
  92. return
  93. }
  94. //if isSignal {
  95. // productList, err := productService.ProductSearch(productType, key)
  96. //} else {
  97. // productList, err := productService.PackageSearch(key)
  98. //}
  99. if err != nil {
  100. p.FailedResult("搜索产品信息失败", result)
  101. return
  102. }
  103. p.SuccessResult("搜索产品信息成功", nil, result)
  104. return
  105. })
  106. }
  107. // ProductList 产品列表
  108. // @Summary 产品列表
  109. // @Description 产品列表
  110. // @Success 200 {object} controllers.BaseResponse
  111. // @router /ProductList [get]
  112. func (p *ProductController) ProductList(productType string) {
  113. controllers.Wrap(&p.BaseController, func() (result *controllers.WrapData, err error) {
  114. result = p.InitWrapData("分页查询产品列表失败")
  115. if !productMap[productType] {
  116. err = exception.New(exception.ProductTypeError)
  117. p.FailedResult("分页查询产品列表失败", result)
  118. return
  119. }
  120. pageRes := page.Page{
  121. Current: p.PageInfo.Current,
  122. PageSize: p.PageInfo.PageSize,
  123. }
  124. pageRes.Total, pageRes.LatestId = productService.GetTotalPageCountByProductType(productType)
  125. if p.PageInfo.LatestId == 0 {
  126. p.PageInfo.LatestId = pageRes.LatestId
  127. p.PageInfo.Total = pageRes.Total
  128. } else {
  129. pageRes.LatestId = p.PageInfo.LatestId
  130. pageRes.Total = p.PageInfo.Total
  131. }
  132. pageRes.TotalPage = page.TotalPages(pageRes.Total, pageRes.PageSize)
  133. list, err := productService.ProductList(productType, p.PageInfo)
  134. if err != nil {
  135. p.FailedResult("分页查询产品列表失败", result)
  136. err = exception.NewWithException(exception.GetProductListInfoFailed, err.Error())
  137. return
  138. }
  139. productList := new(page.PageResult)
  140. productList.Data = list
  141. productList.Page = pageRes
  142. p.SuccessResult("分页查询产品列表成功", productList, result)
  143. return
  144. })
  145. }