package controller import ( "github.com/gin-gonic/gin" "strconv" "trading-go/model" "trading-go/response" ) //// GetAllGoods //// @Tags 商品模块 //// @Summary 获取所有商品 //// @Produce application/json //// @Success 200 {object} response.Response //// @Router /goods [get] //func GetAllGoods(c *gin.Context) { // var goods []model.GoodsSurface // goods = append(goods, model.GoodsSurface{}) // goods = append(goods, model.GoodsSurface{}) // response.Success(c.Writer, "success", goods) //} // CreatGoods // @Tags 商品模块 // @Summary 创建商品 // @Accept application/json // @Produce application/json // @Param json body model.GoodsJson true "商品信息" // @Success 200 {object} response.Response // @Router /goods/create [post] func CreatGoods(c *gin.Context) { var goodsJson model.GoodsJson var category model.CategoryOfGoods err := c.ShouldBindJSON(&goodsJson) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } goods := goodsJson.Change() id, err := goods.Create() err = category.Save(id, goodsJson.Categories) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } response.Success(c.Writer, "success", nil) } // DGoods // @Tags 商品模块 // @Summary 删除商品 // @Produce application/json // @Param id path int64 true "商品id" // @Success 200 {object} response.Response // @Router /goods/delete/{id} [delete] func DGoods(c *gin.Context) { var goods model.Goods ids := c.Param("id") id, err := strconv.Atoi(ids) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } goods.Id = uint(id) err = goods.Delete() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } response.Success(c.Writer, "success", nil) } // GetGoodsPage // @Tags 商品模块 // @Summary 获取所有商品 // @Produce application/json // @Param page path int true "页数" // @Param pageSize path int true "一页的大小" // @Success 200 {object} response.Response // @Router /goods/{page}/{pageSize} [get] func GetGoodsPage(c *gin.Context) { var goods model.GoodsSurface p := c.Param("page") pS := c.Param("pageSize") page, err := strconv.Atoi(p) pageSize, err := strconv.Atoi(pS) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } rsp, err := goods.GetPaged(page, pageSize) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } cnt, err := goods.GetCnt() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } if cnt > page*pageSize { rsp.HNext = true } response.Success(c.Writer, "success", rsp) } // GetRecommend // @Tags 商品模块 // @Summary 分页获取推荐商品 // @Produce application/json // @Param id query int64 true "用户id" // @Param page path int true "页数" // @Param pageSize path int true "一页的大小" // @Success 200 {object} response.Response // @Router /goods/recommend/{page}/{pageSize} [get] func GetRecommend(c *gin.Context) { var goods []model.GoodsSurface var rsp response.PageResponse goods = append(goods, model.GoodsSurface{}) goods = append(goods, model.GoodsSurface{}) //rsp.Data = goods response.Success(c.Writer, "success", rsp) } // ReviseGoods // @Tags 商品模块 // @Summary 修改商品信息 // @Produce application/json // @Param json body model.Goods true "商品信息" // @Success 200 {object} response.Response // @Router /goods/revise [post] func ReviseGoods(c *gin.Context) { var goods model.Goods err := c.ShouldBindJSON(&goods) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } err = goods.Revise() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } response.Success(c.Writer, "success", nil) } // GetGoodDetail // @Tags 商品模块 // @Summary 获取商品详细信息 // @Produce application/json // @Param id path int64 true "商品id" // @Success 200 {object} response.Response // @Router /goods/detail/{id} [get] func GetGoodDetail(c *gin.Context) { var goods model.Goods ids := c.Param("id") id, err := strconv.Atoi(ids) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } goods.Id = uint(id) err = goods.GetDetail() if err != nil { response.Fail(c.Writer, err.Error(), 500) return } response.Success(c.Writer, "success", model.Goods{}) } // GetUserGoods // @Tags 商品模块 // @Summary 获取某个用户的所有商品 // @Produce application/json // @Param id path int64 true "用户id" // @Success 200 {object} response.Response // @Router /goods/user/{id} [get] func GetUserGoods(c *gin.Context) { var goods model.Goods ids := c.Param("id") id, err := strconv.Atoi(ids) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } goods.OwnerId = uint(id) data, err := goods.GetUserGoods() if err != nil { response.Fail(c.Writer, err.Error(), 500) return } response.Success(c.Writer, "success", data) } // SearchGoods // @Tags 商品模块 // @Summary 搜索商品并分页显示 // @Produce application/json // @Param page path int true "页数" // @Param pageSize path int true "一页的大小" // @Param keyword query string true "搜素关键词" // @Success 200 {object} response.Response // @Router /goods/search/{page}/{pageSize} [get] func SearchGoods(c *gin.Context) { var goods []model.GoodsSurface var rsp response.PageResponse goods = append(goods, model.GoodsSurface{}) goods = append(goods, model.GoodsSurface{}) //rsp.Data = goods response.Success(c.Writer, "success", rsp) } // GetGoodsCategory // @Tags 商品模块 // @Summary 按分类查找商品并分页显示 // @Produce application/json // @Param page path int true "页数" // @Param pageSize path int true "一页的大小" // @Param category query uint true "商品分类id" // @Success 200 {object} response.Response // @Router /goods/category/{page}/{pageSize} [get] func GetGoodsCategory(c *gin.Context) { var goods model.GoodsSurface p := c.Param("page") pS := c.Param("pageSize") ca := c.Query("category") category, err := strconv.Atoi(ca) page, err := strconv.Atoi(p) pageSize, err := strconv.Atoi(pS) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } rsp, err := goods.GetCategoryPaged(page, pageSize, uint(category)) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } cnt, err := goods.GetCategoryCnt(uint(category)) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } if cnt > page*pageSize { rsp.HNext = true } response.Success(c.Writer, "success", rsp) }