day115-商城业务-检索服务-检索查询参数模型+检索返回结果模型 分析抽取

本文探讨了如何根据京东页面结构和商品SKU数据模型,设计SearchParam和SearchResult实体,以及如何实现查询条件的封装和查询结果的展示。涉及的关键部分包括全文搜索、分类筛选、库存状态等,旨在提供电商搜索服务的详细实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.看图思考

对比京东的页面,以及之前我们sku的数据模型然后,思考我们查询条件与查询结果实体都该封装些啥 

2. 查询条件包含的几部分

3.实体封装

查询条件封装实体如下

package com.atguigu.gulimall.search.vo;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/3/31 11:00
 */

import lombok.Data;

import java.util.List;

/**
 * 封装页面所有可能传递的查询条件
 */
@Data
public class SearchParam {

    private String keyWord;//页面传过来的全文匹配关键字

    private Long catelog3Id;//三级分类Id

    private String sort;//排序

    private Integer hasStock;//是否有货 0/1

    private String skuPrice;//价格区间 0-199/199-/-199

    private List<Long> brandId;//brandId=2&brandId=7

    private List<String> attrs;//属性 attrs=1_其他:安卓&attrs=2_黑色:绿色 1号属性为其它或者安卓 2号属性为 ..或者..

    private Integer pageNum;//页码
}

 查询结果实体如下

package com.atguigu.gulimall.search.vo;

import com.atguigu.common.to.es.SkuEsModel;
import lombok.Data;

import java.util.List;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/3/31 16:05
 */
@Data
public class SearchResult {

    //所有商品信息
    private List<SkuEsModel> products;

    //分页信息
    private Integer pageNo;//当前页码
    private Integer totalPages;//总页码
    private Integer total;//总记录数

    private List<CatalogVo> catalogs;
    private List<BrandVo> brands;
    private List<AttrVo> attrs;


    class CatalogVo{
        private Long catelogId;
        private String catelogName;
    }

    class BrandVo{
        private Long brandId;
        private String  brandName;
        private String brandImg;
    }

    class AttrVo{
        private Long attrId;
        private String attrName;
        private List<String> attrValues;
    }

}

4.查询大体代码

先写个模子出来,后面实现查询具体逻辑

package com.atguigu.gulimall.search.service;

import com.atguigu.gulimall.search.vo.SearchParam;
import com.atguigu.gulimall.search.vo.SearchResult;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/3/31 11:09
 */
public interface MallSearchService {
    SearchResult search(SearchParam searchParam);
}
package com.atguigu.gulimall.search.service.impl;

import com.atguigu.gulimall.search.service.MallSearchService;
import com.atguigu.gulimall.search.vo.SearchParam;
import com.atguigu.gulimall.search.vo.SearchResult;
import org.springframework.stereotype.Service;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/3/31 11:09
 */
@Service
public class MallSearchServiceImpl implements MallSearchService {
    @Override
    public SearchResult search(SearchParam searchParam) {
        return null;
    }
}
package com.atguigu.gulimall.search.controller;

import com.atguigu.gulimall.search.service.MallSearchService;
import com.atguigu.gulimall.search.vo.SearchParam;
import com.atguigu.gulimall.search.vo.SearchResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @author rengang
 * @version 1.0
 * @date 2021/3/30 22:42
 */
@Controller
public class SearchController {

    @Autowired
    MallSearchService mallSearchService;

    @GetMapping("/list.html")
    public String listPage(SearchParam searchParam){
       SearchResult result =  mallSearchService.search(searchParam);

        return "list";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值