product_controller.go 5.7 KB

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