Go实战 | 电商平台(10) 搜索商品
Posted 小生凡一
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go实战 | 电商平台(10) 搜索商品相关的知识,希望对你有一定的参考价值。
1. 搜索商品
1.1 路由接口注册
v1.POST("products", api.SearchProducts)
1.2 接口函数编写
1.2.1 service层
- 定义一个搜索商品的服务结构体
结构体中的info
就是传送过来的要搜索商品的信息
type SearchProductsService struct
Info string `form:"info" json:"info"`
PageNum int `form:"pageNum"`
PageSize int `form:"pageSize"`
- 定义这个结构体的搜索方法
func (service *SearchProductsService) Search() serializer.Response
...
1.2.2 api层
- 定义搜索商品服务的对象
searchProductsService := service.SearchProductsService
- 绑定这个结构对象到上下文中
c.ShouldBind(&searchProductsService)
- 调用商品服务对象下的搜索方法
res := searchProductsService.Search()
- 上下文返回
c.JSON(200, res)
- 完整代码
func SearchProducts(c *gin.Context)
searchProductsService := service.SearchProductsService
if err := c.ShouldBind(&searchProductsService); err == nil
res := searchProductsService.Search()
c.JSON(200, res)
else
c.JSON(200, ErrorResponse(err))
logging.Info(err)
1.3 服务函数编写
- 定义商品模型对象列表
var products []model.Product
code := e.SUCCESS
- 如果传送过来的是页数是0的话,就默认是15
if service.PageSize==0
service.PageSize=15
- LIKE对数据库进行模型搜索
err := model.DB.Where("name LIKE ?", "%"+service.Info+"%").
Offset((service.PageNum - 1) * service.PageSize).
Limit(service.PageSize).Find(&products).Error
- 返回数据
return serializer.Response
Status: code,
Data: serializer.BuildProducts(products),
Msg: e.GetMsg(code),
1.4 验证服务
- 商品请求
- 响应返回
以上是关于Go实战 | 电商平台(10) 搜索商品的主要内容,如果未能解决你的问题,请参考以下文章