package controller import ( "github.com/gin-gonic/gin" "strconv" "trading-go/model" "trading-go/response" "trading-go/util" ) //// 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() go util.NewIndex(id, goodsJson.Desc+goodsJson.Title) 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() go util.DelIndex(goods.Id) 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 size query int true "推荐的数目" // @Success 200 {object} response.Response // @Router /goods/recommend [get] func GetRecommend(c *gin.Context) { var goods model.GoodsSurface ids := c.Param("id") s := c.Query("size") id, err := strconv.Atoi(ids) size, err := strconv.Atoi(s) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } data, err := goods.GetRecommend(uint(id), size) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } //rsp.Data = goods response.Success(c.Writer, "success", data) } // 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 } go util.DelIndex(goods.Id) err = goods.Revise() go util.NewIndex(goods.Id, goods.Desc+goods.Title) 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" // @Param uid query int64 true "访问的用户id" // @Param date query int64 true "访问时间的时间戳" // @Success 200 {object} response.Response // @Router /goods/detail/{id} [get] func GetGoodDetail(c *gin.Context) { var goods model.Goods ids := c.Param("id") uids := c.Query("uid") ts := c.Query("date") id, err := strconv.Atoi(ids) uid, err := strconv.Atoi(uids) date, err := strconv.Atoi(ts) 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 } go util.Recommend(uint(uid), uint(id), uint(date)) response.Success(c.Writer, "success", 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 good model.GoodsSurface p := c.Param("page") pS := c.Param("pageSize") key := c.Query("keyword") 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 := good.SearchPaged(key, page, pageSize) if err != nil { response.Fail(c.Writer, err.Error(), 400) return } 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) }