文章目录
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 验证服务
商品请求
响应返回