controller层把查询条件封装在productListReq对象中
![在这里插入图片描述](https://img-blog.csdnimg.cn/22f3980d759b4a58beeb5d290b6edbb3.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/89e77b732cf544a88c612e7349d8795c.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ac36bdb7343444689889cd902575b610.png)
servier层再把查询封装在ProductListQuery对象中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/dab52fcb2cb84791841e2d6a0929cc69.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8b8ad754cd4a4acdb79d982a54c94c48.png)
在sql语句中传入的就是ProductListQuery.keyword和ProductListQuery.categoryIds属性(关键字和商品种类id)
-
搜索功能和平铺展示通过sql的过滤实现
就是模糊查询和遍历筛选categoryIds
![在这里插入图片描述](https://img-blog.csdnimg.cn/06d1e75c671b46b5bc7539b788be53fb.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/43b4c352000e4a06987c0704411f8dac.png)
-
排序就是通过PageHelper.startPage实现
搜索功能
1 入参判空
2 加%通配符
3 sql语句like关键字
复杂查询再构建一个ProductListQuery对象
![在这里插入图片描述](https://img-blog.csdnimg.cn/658ca3fedfe5453db2c360f565e35a26.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d191eba4add46d7b4bceb1b36601cf8.png)
平铺展示该商品类别及其子类别下的所有商品
目录处理∶如果查某个目录下的商品,不仅是需要查出来该目录的,还需要查出来子目录的所有商品。
-
使用递归拿到某一个目录Id下的所有子目录id的List
![在这里插入图片描述](https://img-blog.csdnimg.cn/e84964a3583c4de0808b0f59216f45d3.png)
(问题是这个List是嵌套的List,我们需要取所有的id并展开为一个list)
-
用查询嵌套列表的方式把内容(categoryVOList)查出来。
(递归)
![在这里插入图片描述](https://img-blog.csdnimg.cn/9fc582c6ab2b4696bd47edbebe5e23e3.png)
把查的id都放到categoryIds列表中。
- 最后,在sql语句进行查询商品的时候用目录id进行过滤。。。
完整代码如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/4e19f67d67884307b2e90db6d90fe8e9.png)
取具有层级结构(包含子目录)的目录查询结果categoryVOList的所有id,并保存到categoryIds列表中。
递归调用getCategoryIds
categoryVO.getChildCategory()是保存当前节点的子节点列表
将当前categoryVO的id和他的子节点id都加入到categoryIds中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e9dea44d62f04b4ba263f2fa08c2178f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a10d16c318ae461492b481bbd43c37f3.png)
sql按照商品类别id过滤商品
![在这里插入图片描述](https://img-blog.csdnimg.cn/e4c4c96d37b34c1dbfb77d39b3be5771.png)
排序功能
为了安全性,排序规则需要我们指定,用户输入的排序规则不符合就不执行排序。
order by的规则是我们定义的枚举。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8023ff87b1794f9faca8cce8aba7da69.png)
规则在Constant类定义
![在这里插入图片描述](https://img-blog.csdnimg.cn/495a74fbb8954f3ca254500419ab6ac7.png)
测试
查询、排序
![在这里插入图片描述](https://img-blog.csdnimg.cn/a28b04fa15c1471daf34723eb3cb1708.png)
按照类别展示该类别和他子类别下的所有商品
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5efe4b9ae5146c2bb722ddc73b85e18.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ca955bd13064cf7931eb1cb901070c7.png)
查询类别3和他所有子类别的商品
catagory表的parent_id和id是父子结构对应;
catagory表的id对应product表的category_id.
商品模块+前台+list的web接口 传入的categoryId是catagory表的parentId。。。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f218a0b8826e4fb2a4d98a91aa4b9a8a.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b1bc5ae23a04b59a3e4217c15d95a71.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8854886d44b746748af1a4c821250429.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/8a70a028a1674b54a0087a390edef76f.png)
{
"status": 10000,
"msg": "SUCCESS",
"data": {
"total": 8,
"list": [
{
"id": 37,
"name": "进口牛油果 中果6粒装 单果约130-160g",
"image": "http://111.231.103.117:8081/images/niuyouguo.jpg",
"detail": "商品名称:京觅进口牛油果 6个装商品编号:3628240商品毛重:1.2kg商品产地:秘鲁、智利、墨西哥重量:1000g以下国产/进口:进口",
"categoryId": 28,
"price": 222,
"stock": 222,
"status": 1,
"createTime": "2019-12-28T16:06:34.000+0000",
"updateTime": "2020-02-11T00:47:42.000+0000"
},
{
"id": 26,
"name": "越南进口红心火龙果 4个装 红肉中果 单果约330-420g",
"image": "http://111.231.103.117:8081/images/hongxinhuolongguo.jpg",
"detail": "商品毛重:1.79kg商品产地:越南重量:1000-1999g类别:红心火龙果包装:简装国产/进口:进口",
"categoryId": 28,
"price": 222,
"stock": 222,
"status": 1,
"createTime": "2019-12-28T16:06:34.000+0000",
"updateTime": "2020-02-11T00:44:11.000+0000"
},
{
"id": 25,
"name": "新疆库尔勒克伦生无籽红提 国产新鲜红提葡萄 提子 5斤装",
"image": "http://111.231.103.117:8081/images/hongti.jpg",
"detail": "商品毛重:2.5kg商品产地:中国大陆货号:XZL201909002重量:2000-3999g套餐份量:2人份国产/进口:国产是否有机:非有机单箱规格:3个装,4个装,5个装类别:红提包装:简装原产地:中国大陆售卖方式:单品",
"categoryId": 28,
"price": 222,
"stock": 222,
"status": 1,
"createTime": "2019-12-28T16:06:34.000+0000",
"updateTime": "2020-02-11T00:44:05.000+0000"
},
{
"id": 23,
"name": "澳大利亚直采鲜橙 精品澳橙12粒 单果130-180g",
"image": "http://111.231.103.117:8081/images/chengzi.jpg",
"detail": "商品毛重:2.27kg商品产地:澳大利亚类别:脐橙包装:简装国产/进口:进口原产地:澳大利亚",
"categoryId": 4,
"price": 12,
"stock": 12,
"status": 1,
"createTime": "2019-12-28T16:02:13.000+0000",
"updateTime": "2020-02-11T00:40:15.000+0000"
},
{
"id": 36,
"name": "四川果冻橙 吹弹可破",
"image": "http://111.231.103.117:8081/images/guodongcheng.jpg",
"detail": "商品毛重:370.00g商品产地:四川 重量:1000g",
"categoryId": 19,
"price": 222,
"stock": 222,
"status": 1,
"createTime": "2019-12-28T16:06:34.000+0000",
"updateTime": "2020-02-11T00:38:14.000+0000"
},
{
"id": 2,
"name": "澳洲进口大黑车厘子大樱桃包甜黑樱桃大果多汁 500g 特大果",
"image": "http://111.231.103.117:8081/images/chelizi2.jpg",
"detail": "商品毛重:1.0kg货号:608323093445原产地:智利类别:美早热卖时间:1月,11月,12月国产/进口:进口售卖方式:单品",
"categoryId": 14,
"price": 50,
"stock": 100,
"status": 1,
"createTime": "2019-12-18T16:08:15.000+0000",
"updateTime": "2020-02-11T00:08:25.000+0000"
},
{
"id": 17,
"name": "红颜奶油草莓 约重500g/20-24颗 新鲜水果",
"image": "http://111.231.103.117:8081/images/caomei2.jpg",
"detail": "商品毛重:0.58kg商品产地:丹东/南通/武汉类别:红颜草莓包装:简装国产/进口:国产",
"categoryId": 11,
"price": 99,
"stock": 84,
"status": 1,
"createTime": "2019-12-18T16:11:13.000+0000",
"updateTime": "2020-02-10T23:37:48.000+0000"
},
{
"id": 14,
"name": "Zespri佳沛 新西兰阳光金奇异果 6个装",
"image": "http://111.231.103.117:8081/images/mihoutao2.jpg",
"detail": "商品编号:4635056商品毛重:0.71kg商品产地:新西兰类别:金果包装:简装国产/进口:进口原产地:新西兰",
"categoryId": 12,
"price": 39,
"stock": 77,
"status": 1,
"createTime": "2019-12-18T16:11:13.000+0000",
"updateTime": "2020-02-10T23:36:48.000+0000"
}
],
"pageNum": 1,
"pageSize": 30,
"size": 8,
"startRow": 1,
"endRow": 8,
"pages": 1,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b23f40e293f84680a0365eaa22699918.png)