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) 搜索商品的主要内容,如果未能解决你的问题,请参考以下文章

Go实战 | 电商平台(11) 更新商品

Go实战 | 电商平台(12) 删除商品

Go实战 | 电商平台 创建商品

Golang实战项目-B2C电商平台项目

Go实战 | 电商平台 需求分析

Go实战 | 电商平台 图片上传到七牛云