day115-mall modèle de paramètre de requête de recherche de service de recherche d'entreprise + analyse et extraction du modèle de résultat de recherche

1. Regardez l'image et réfléchissez

Comparez la page de Jingdong et le modèle de données de notre sku avant, puis réfléchissez à ce que nos conditions de requête et les entités de résultat de la requête doivent être encapsulées. 

2. Plusieurs parties des conditions de requête

3. Emballage physique

L'entité de package de conditions de requête est la suivante

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

 L'entité de résultat de la requête est la suivante

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. Interrogez le code général

Écrivez d'abord un modèle, puis implémentez la logique spécifique de la requête

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

 

Je suppose que tu aimes

Origine blog.csdn.net/JavaCoder_juejue/article/details/115353502
conseillé
Classement