Go实战 | 电商平台 展示商品
Posted 小生凡一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go实战 | 电商平台 展示商品相关的知识,希望对你有一定的参考价值。
1. 展示商品
1.1 路由接口注册
- GET请求获取商品列表
v1.GET("products", api.ListProducts)
1.2 接口函数编写
1.2.1 service层
- 创建一个展示商品的结构体
type ListProductsService struct
PageNum int `form:"pageNum"`
PageSize int `form:"pageSize"`
CategoryID uint `form:"category_id" json:"category_id"`
- 创建该结构体下的列表方法
func (service *ListProductsService) List() serializer.Response
...
1.2.2 api层
- 创建一个展示列表服务对象
listProductsService := service.ListProductsService
- 绑定数据
c.ShouldBind(&listProductsService)
- 调用展示商品列表对象下的展示方法
res := listProductsService.List()
- 返回上下文
c.JSON(200, res)
- api层完整代码
func ListProducts(c *gin.Context)
listProductsService := service.ListProductsService
if err := c.ShouldBind(&listProductsService); err == nil
res := listProductsService.List()
c.JSON(200, res)
else
c.JSON(200, ErrorResponse(err))
logging.Info(err)
1.3 服务函数编写
- 创建一个商品列表模型对象
var products []model.Product
- 设置分页
if service.PageSize == 0
service.PageSize = 15
- 如果分类传过来是0的话就返回所有的商品
if service.CategoryID == 0
if err := model.DB.Model(model.Product).
Count(&total).Error; err != nil
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response
Status: code,
Msg: e.GetMsg(code),
Error: err.Error(),
if err := model.DB.Offset((service.PageNum - 1) * service.PageSize).
Limit(service.PageSize).Find(&products).
Error; err != nil
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response
Status: code,
Msg: e.GetMsg(code),
Error: err.Error(),
- 不为0的话,就返回对应分类的商品
if err := model.DB.Model(model.Product).Preload("Category").
Where("category_id = ?", service.CategoryID).
Count(&total).Error; err != nil
logging.Info(err)
code = e.ErrorDatabase
return serializer.Response
Status: code,
Msg: e.GetMsg(code),
Error: err.Error(),
- 序列化返回所有的商品,注意要返回所有商品的总数
for _, item := range products
products := serializer.BuildProduct(item)
productList = append(productList, products)
return serializer.BuildListResponse(serializer.BuildProducts(products), uint(total))
1.4 验证服务
- 发送请求
- 获取响应
以上是关于Go实战 | 电商平台 展示商品的主要内容,如果未能解决你的问题,请参考以下文章