goodscontroller.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "strconv"
  5. "trading-go/model"
  6. "trading-go/response"
  7. )
  8. //// GetAllGoods
  9. //// @Tags 商品模块
  10. //// @Summary 获取所有商品
  11. //// @Produce application/json
  12. //// @Success 200 {object} response.Response
  13. //// @Router /goods [get]
  14. //func GetAllGoods(c *gin.Context) {
  15. // var goods []model.GoodsSurface
  16. // goods = append(goods, model.GoodsSurface{})
  17. // goods = append(goods, model.GoodsSurface{})
  18. // response.Success(c.Writer, "success", goods)
  19. //}
  20. // CreatGoods
  21. // @Tags 商品模块
  22. // @Summary 创建商品
  23. // @Accept application/json
  24. // @Produce application/json
  25. // @Param json body model.GoodsJson true "商品信息"
  26. // @Success 200 {object} response.Response
  27. // @Router /goods/create [post]
  28. func CreatGoods(c *gin.Context) {
  29. var goodsJson model.GoodsJson
  30. var category model.CategoryOfGoods
  31. err := c.ShouldBindJSON(&goodsJson)
  32. if err != nil {
  33. msg := err.Error()
  34. response.Fail(c.Writer, msg, 500)
  35. return
  36. }
  37. if err != nil {
  38. msg := err.Error()
  39. response.Fail(c.Writer, msg, 500)
  40. return
  41. }
  42. goods := goodsJson.Change()
  43. id, err := goods.Create()
  44. err = category.Save(id, goodsJson.Categories)
  45. if err != nil {
  46. msg := err.Error()
  47. response.Fail(c.Writer, msg, 500)
  48. return
  49. }
  50. response.Success(c.Writer, "success", nil)
  51. }
  52. // DGoods
  53. // @Tags 商品模块
  54. // @Summary 删除商品
  55. // @Produce application/json
  56. // @Param id path int64 true "商品id"
  57. // @Success 200 {object} response.Response
  58. // @Router /goods/delete/{id} [delete]
  59. func DGoods(c *gin.Context) {
  60. var goods model.Goods
  61. ids := c.Param("id")
  62. id, err := strconv.Atoi(ids)
  63. if err != nil {
  64. response.Fail(c.Writer, err.Error(), 500)
  65. return
  66. }
  67. goods.Id = uint(id)
  68. err = goods.Delete()
  69. if err != nil {
  70. msg := err.Error()
  71. response.Fail(c.Writer, msg, 500)
  72. return
  73. }
  74. response.Success(c.Writer, "success", nil)
  75. }
  76. // GetGoodsPage
  77. // @Tags 商品模块
  78. // @Summary 获取所有商品
  79. // @Produce application/json
  80. // @Param page path int true "页数"
  81. // @Param pageSize path int true "一页的大小"
  82. // @Success 200 {object} response.Response
  83. // @Router /goods/{page}/{pageSize} [get]
  84. func GetGoodsPage(c *gin.Context) {
  85. var goods model.GoodsSurface
  86. p := c.Param("page")
  87. pS := c.Param("pageSize")
  88. page, err := strconv.Atoi(p)
  89. pageSize, err := strconv.Atoi(pS)
  90. if err != nil {
  91. msg := err.Error()
  92. response.Fail(c.Writer, msg, 500)
  93. return
  94. }
  95. rsp, err := goods.GetPaged(page, pageSize)
  96. if err != nil {
  97. msg := err.Error()
  98. response.Fail(c.Writer, msg, 500)
  99. return
  100. }
  101. cnt, err := goods.GetCnt()
  102. if err != nil {
  103. msg := err.Error()
  104. response.Fail(c.Writer, msg, 500)
  105. return
  106. }
  107. if cnt > page*pageSize {
  108. rsp.HNext = true
  109. }
  110. response.Success(c.Writer, "success", rsp)
  111. }
  112. // GetRecommend
  113. // @Tags 商品模块
  114. // @Summary 分页获取推荐商品
  115. // @Produce application/json
  116. // @Param id query int64 true "用户id"
  117. // @Param page path int true "页数"
  118. // @Param pageSize path int true "一页的大小"
  119. // @Success 200 {object} response.Response
  120. // @Router /goods/recommend/{page}/{pageSize} [get]
  121. func GetRecommend(c *gin.Context) {
  122. var goods []model.GoodsSurface
  123. var rsp response.PageResponse
  124. goods = append(goods, model.GoodsSurface{})
  125. goods = append(goods, model.GoodsSurface{})
  126. //rsp.Data = goods
  127. response.Success(c.Writer, "success", rsp)
  128. }
  129. // ReviseGoods
  130. // @Tags 商品模块
  131. // @Summary 修改商品信息
  132. // @Produce application/json
  133. // @Param json body model.Goods true "商品信息"
  134. // @Success 200 {object} response.Response
  135. // @Router /goods/revise [post]
  136. func ReviseGoods(c *gin.Context) {
  137. var goods model.Goods
  138. err := c.ShouldBindJSON(&goods)
  139. if err != nil {
  140. msg := err.Error()
  141. response.Fail(c.Writer, msg, 500)
  142. return
  143. }
  144. err = goods.Revise()
  145. if err != nil {
  146. msg := err.Error()
  147. response.Fail(c.Writer, msg, 500)
  148. return
  149. }
  150. response.Success(c.Writer, "success", nil)
  151. }
  152. // GetGoodDetail
  153. // @Tags 商品模块
  154. // @Summary 获取商品详细信息
  155. // @Produce application/json
  156. // @Param id path int64 true "商品id"
  157. // @Success 200 {object} response.Response
  158. // @Router /goods/detail/{id} [get]
  159. func GetGoodDetail(c *gin.Context) {
  160. var goods model.Goods
  161. ids := c.Param("id")
  162. id, err := strconv.Atoi(ids)
  163. if err != nil {
  164. response.Fail(c.Writer, err.Error(), 500)
  165. return
  166. }
  167. goods.Id = uint(id)
  168. err = goods.GetDetail()
  169. if err != nil {
  170. response.Fail(c.Writer, err.Error(), 500)
  171. return
  172. }
  173. response.Success(c.Writer, "success", model.Goods{})
  174. }
  175. // GetUserGoods
  176. // @Tags 商品模块
  177. // @Summary 获取某个用户的所有商品
  178. // @Produce application/json
  179. // @Param id path int64 true "用户id"
  180. // @Success 200 {object} response.Response
  181. // @Router /goods/user/{id} [get]
  182. func GetUserGoods(c *gin.Context) {
  183. var goods model.Goods
  184. ids := c.Param("id")
  185. id, err := strconv.Atoi(ids)
  186. if err != nil {
  187. response.Fail(c.Writer, err.Error(), 500)
  188. return
  189. }
  190. goods.OwnerId = uint(id)
  191. data, err := goods.GetUserGoods()
  192. if err != nil {
  193. response.Fail(c.Writer, err.Error(), 500)
  194. return
  195. }
  196. response.Success(c.Writer, "success", data)
  197. }
  198. // SearchGoods
  199. // @Tags 商品模块
  200. // @Summary 搜索商品并分页显示
  201. // @Produce application/json
  202. // @Param page path int true "页数"
  203. // @Param pageSize path int true "一页的大小"
  204. // @Param keyword query string true "搜素关键词"
  205. // @Success 200 {object} response.Response
  206. // @Router /goods/search/{page}/{pageSize} [get]
  207. func SearchGoods(c *gin.Context) {
  208. var goods []model.GoodsSurface
  209. var rsp response.PageResponse
  210. goods = append(goods, model.GoodsSurface{})
  211. goods = append(goods, model.GoodsSurface{})
  212. //rsp.Data = goods
  213. response.Success(c.Writer, "success", rsp)
  214. }
  215. // GetGoodsCategory
  216. // @Tags 商品模块
  217. // @Summary 按分类查找商品并分页显示
  218. // @Produce application/json
  219. // @Param page path int true "页数"
  220. // @Param pageSize path int true "一页的大小"
  221. // @Param category query uint true "商品分类id"
  222. // @Success 200 {object} response.Response
  223. // @Router /goods/category/{page}/{pageSize} [get]
  224. func GetGoodsCategory(c *gin.Context) {
  225. var goods model.GoodsSurface
  226. p := c.Param("page")
  227. pS := c.Param("pageSize")
  228. ca := c.Query("category")
  229. category, err := strconv.Atoi(ca)
  230. page, err := strconv.Atoi(p)
  231. pageSize, err := strconv.Atoi(pS)
  232. if err != nil {
  233. msg := err.Error()
  234. response.Fail(c.Writer, msg, 500)
  235. return
  236. }
  237. rsp, err := goods.GetCategoryPaged(page, pageSize, uint(category))
  238. if err != nil {
  239. msg := err.Error()
  240. response.Fail(c.Writer, msg, 500)
  241. return
  242. }
  243. cnt, err := goods.GetCategoryCnt(uint(category))
  244. if err != nil {
  245. msg := err.Error()
  246. response.Fail(c.Writer, msg, 500)
  247. return
  248. }
  249. if cnt > page*pageSize {
  250. rsp.HNext = true
  251. }
  252. response.Success(c.Writer, "success", rsp)
  253. }