day115-mall business-search service-search query parameter model + search return result model análisis y extracción

1. Mira la imagen y piensa

Compare la página de Jingdong y el modelo de datos de nuestro sku anterior, y luego piense qué condiciones de consulta y entidades de resultado de consulta deben encapsularse. 

2. Varias partes de las condiciones de la consulta

3. Embalaje físico

La entidad del paquete de condiciones de consulta es la siguiente

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;//页码
}

 La entidad de resultado de la consulta es la siguiente

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. Consultar el código general

Primero escriba un modelo y luego implemente la lógica específica de la consulta

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

 

Supongo que te gusta

Origin blog.csdn.net/JavaCoder_juejue/article/details/115353502
Recomendado
Clasificación