商品管理系统——SKU检索功能

我怕爱的太早我们不能终老 提交于 2021-02-19 01:59:53

一 API分析

1 请求

GET /product/skuinfo/list

2 请求参数

{
    page: 1, //当前页码
    limit: 10, //每页记录数
    sidx: 'id', //排序字段
    order: 'asc/desc', //排序方式
    key: '华为', //检索关键字
    catelogId: 0,
    brandId: 0,
    min: 0,
    max: 0
}

3 响应数据

{
    "msg": "success",
    "code": 0,
    "page": {
        "totalCount": 26,
        "pageSize": 10,
        "totalPage": 3,
        "currPage": 1,
        "list": [{
            "skuId": 1,
            "spuId": 11,
            "skuName": "华为 HUAWEI Mate 30 Pro 星河银 8GB+256GB",
            "skuDesc": null,
            "catalogId": 225,
            "brandId": 9,
            "skuDefaultImg": "https://gulimall-hello.oss-cn-beijing.aliyuncs.com/2019-11-26/60e65a44-f943-4ed5-87c8-8cf90f403018_d511faab82abb34b.jpg",
            "skuTitle": "华为 HUAWEI Mate 30 Pro 星河银 8GB+256GB麒麟990旗舰芯片OLED环幕屏双4000万徕卡电影四摄4G全网通手机",
            "skuSubtitle": "【现货抢购!享白条12期免息!】麒麟990,OLED环幕屏双4000万徕卡电影四摄;Mate30系列享12期免息》",
            "price": 6299.0000,
            "saleCount": 0
        }]
    }
}

二 控制器

    /**
     * 功能描述:条件查询SKU信息
     *
     * @param params 分页过滤条件
     * @return R 返回给前端的数据
     * @author cakin
     * @date 2020/11/8
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params) {
        PageUtils page = skuInfoService.queryPageByCondition(params);
        return R.ok().put("page", page);
    }

三 服务层

    /**
     * 功能描述:条件查询SKU信息
     *
     * @param params 分页查询参数
     * @return PageUtils 分页信息
     * @author cakin
     * @date 2020/11/8
     */
    @Override
    public PageUtils queryPageByCondition(Map<String, Object> params) {
        QueryWrapper<SkuInfoEntity> queryWrapper = new QueryWrapper<>();
        // 关键字检索
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)) {
            queryWrapper.and((wrapper) -> {
                wrapper.eq("sku_id", key).or().like("sku_name", key);
            });
        }
        // catelogId 检索,等于0就是查全部
        String catelogId = (String) params.get("catelogId");
        if (!StringUtils.isEmpty(catelogId) && !"0".equalsIgnoreCase(catelogId)) {
            queryWrapper.eq("catalog_id", catelogId);
        }
        // brandId 检索,等于0就是查全部
        String brandId = (String) params.get("brandId");
        if (!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(catelogId)) {
            queryWrapper.eq("brand_id", brandId);
        }
        // min 必须大于等于最小值
        String min = (String) params.get("min");
        if (!StringUtils.isEmpty(min)) {
            queryWrapper.ge("price", min);
        }
        // max 必须小于等于最大值
        String max = (String) params.get("max");
        // 最大值为空就不判断了
        if (!StringUtils.isEmpty(max)) {
            try {
                BigDecimal bigDecimal = new BigDecimal(max);
                // 最大值大于0才判断
                if (bigDecimal.compareTo(new BigDecimal("0")) == 1) {
                    queryWrapper.le("price", max);
                }
            } catch (Exception e) {
            }
        }
        // 分页过滤查询和其他条件组合的复合查询
        IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params), queryWrapper);
        return new PageUtils(page);
    }

四 测试 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!