当前位置:网站首页>商品管理系统——SPU检索功能
商品管理系统——SPU检索功能
2020-11-09 07:35:00 【osc_c67q27vg】
一 API分析
1 请求
GET /product/spuinfo/list
2 请求参数
{
page: 1, //当前页码
limit: 10, //每页记录数
sidx: 'id', //排序字段
order: 'asc/desc', //排序方式
key: '华为', //检索关键字
catelogId: 6, //三级分类id
brandId: 1, //品牌id
status: 0, //商品状态
}
3 响应
{
"msg": "success",
"code": 0,
"page": {
"totalCount": 0,
"pageSize": 10,
"totalPage": 0,
"currPage": 1,
"list": [{
"brandId": 0, //品牌id
"brandName": "品牌名字",
"catalogId": 0, //分类id
"catalogName": "分类名字",
"createTime": "2019-11-13T16:07:32.877Z", //创建时间
"id": 0, //商品id
"publishStatus": 0, //发布状态
"spuDescription": "string", //商品描述
"spuName": "string", //商品名字
"updateTime": "2019-11-13T16:07:32.877Z", //更新时间
"weight": 0 //重量
}]
}
}
二 控制器
/**
* 功能描述:按条件查询SPU信息
*
* @param params 过滤条件
* @return R 返回给前端的数据
* @author cakin
* @date 2020/11/8
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params) {
PageUtils page = spuInfoService.queryPageByCondition(params);
return R.ok().put("page", page);
}
三 服务层
/**
* 功能描述:按条件进行分页查询
*
* @param params 过滤条件
* @return PageUtils 分页信息
* @author cakin
* @date 2020/11/8
*/
@Override
public PageUtils queryPageByCondition(Map<String, Object> params) {
QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();
String key = (String) params.get("key");
// 关键字查询
if (!StringUtils.isEmpty(key)) {
wrapper.and((w) -> {
w.eq("id", key).or().like("spu_name", key);
});
}
// 拼接 status
String status = (String) params.get("status");
if (!StringUtils.isEmpty(status)) {
wrapper.eq("publish_status", status);
}
// 拼接 brandId
String brandId = (String) params.get("brandId");
if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId)) {
wrapper.eq("brand_id", brandId);
}
// 拼接 catelogId
String catelogId = (String) params.get("catelogId");
if (!StringUtils.isEmpty(catelogId) && !"0".equalsIgnoreCase(catelogId)) {
wrapper.eq("catalog_id", catelogId);
}
// 分页条件和其他复合条件拼接后的查询
IPage<SpuInfoEntity> page = this.page(new Query<SpuInfoEntity>().getPage(params), wrapper);
return new PageUtils(page);
}
四 测试

版权声明
本文为[osc_c67q27vg]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4301161/blog/4708491
边栏推荐
- Finally, the python project is released as exe executable program process
- Save code
- 非阻塞的无界线程安全队列 —— ConcurrentLinkedQueue
- 使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
- Oschina plays disorderly on Monday
- 基于链表的有界阻塞队列 —— LinkedBlockingQueue
- Have you ever thought about why the transaction and refund have to be split into different tables
- Huawei HCIA notes
- 14. Introduction to kubenetes
- FC 游戏机的工作原理是怎样的?
猜你喜欢

Detailed analysis of OpenGL es framework (8) -- OpenGL es Design Guide

How to reduce the resource consumption of istio agent through sidecar custom resource

基于LabVIEW实现的几种滚动字幕

APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!

C++邻接矩阵

How to do thread dump analysis in Windows Environment

几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!

How to get started with rabbitmq

梁老师小课堂|谈谈模板方法模式

卧槽,这年轻人不讲武德,应届生凭“小抄”干掉5年老鸟,成功拿到字节20Koffer
随机推荐
1. What does the operating system do?
使用递增计数器的线程同步工具 —— 信号量,它的原理是什么样子的?
Table join
平台商业化能力的另一种表现形式SAAS
写时复制集合 —— CopyOnWriteArrayList
14.Kubenetes简介
理论与实践相结合彻底理解CORS
APP 莫名崩溃,开始以为是 Header 中 name 大小写的锅,最后发现原来是容器的错!
梁老师小课堂|谈谈模板方法模式
CSP-S 2020 游记
Dark网站的后端为什么选择F#? - darklang
Leetcode-11: container with the most water
深度优先搜索和广度优先搜索
华为HCIA笔记
六家公司CTO讲述曾经历的“宕机噩梦”
Have you ever thought about why the transaction and refund have to be split into different tables
AQS 都看完了,Condition 原理可不能少!
Linked list
服务网格仍然很难 - cncf
老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”