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

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";
    }
}

猜你喜欢

转载自blog.csdn.net/JavaCoder_juejue/article/details/115353502