【Go实战 | 电商平台】(10) 搜索商品

文章目录

1. 搜索商品

1.1 路由接口注册

1.2 接口函数编写

1.2.1 service层

1.2.2 api层

1.3 服务函数编写

1.4 验证服务

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实战 | 电商平台】(10) 搜索商品

上一篇:【Go实战 | 电商平台】(9) 展示商品


下一篇:【Go实战 | 电商平台】(11) 更新商品