1.写真を見て、考えます
Jingdongのページと以前の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";
}
}