goodscontroller.go 6.9 KB

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