package controller import ( "fmt" "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 pic model.Pic 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 } fmt.Println(goodsJson) goods := goodsJson.Change() id, err := goods.Create() go util.NewIndex(id, goodsJson.Desc+goodsJson.Title) err = category.Save(id, goodsJson.Categories) err = pic.Save(id, goodsJson.Pic) 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 var pic model.Pic ids := c.Param("id") id, err := strconv.Atoi(ids) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } goods.Id = uint(id) pic.Id = uint(id) err = goods.Delete() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } err = pic.Delete() if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } 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.Query("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 var pic model.Pic 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 } pic.Id = goods.Id err = pic.Delete() err = pic.Save(pic.Id, goods.Pic) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } go func() { util.DelIndex(goods.Id) util.NewIndex(goods.Id, goods.Desc+goods.Title) }() response.Success(c.Writer, "success", nil) } // GetGoodDetail // @Tags 商品模块 // @Summary 获取商品详细信息 // @Produce application/json // @Param id path int64 true "商品id" // @Param uid query int64 true "访问的用户id" // @Success 200 {object} response.Response // @Router /goods/detail/{id} [get] func GetGoodDetail(c *gin.Context) { var goods model.Goods var pic model.Pic ids := c.Param("id") uids := c.Query("uid") id, err := strconv.Atoi(ids) uid, err := strconv.Atoi(uids) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } goods.Id = uint(id) err = goods.GetDetail() pics, err := pic.GetGoodsPic(uint(id)) goods.Pic = pics if err != nil { response.Fail(c.Writer, err.Error(), 500) return } err = model.Recommend(uint(uid), uint(id)) if err != nil { response.Fail(c.Writer, err.Error(), 500) return } 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) } // GetGoodsList // @Tags 商品模块 // @Summary 批量获取商品信息 // @Produce application/json // @Param id body []string true "商品id列表" // @Success 200 {object} response.Response // @Router /goods/list [post] func GetGoodsList(c *gin.Context) { var g model.GoodsSurface jsonData := struct { Id []uint `json:"id"` }{} err := c.ShouldBindJSON(&jsonData) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } goodsInfo, err := g.GetGoodsList(jsonData.Id) if err != nil { msg := err.Error() response.Fail(c.Writer, msg, 500) return } response.Success(c.Writer, "success", gin.H{"goods": goodsInfo}) }