当前位置: 首页 > article >正文

033 商品搜索

文章目录

    • SearchController.java
    • Page.java
    • SpuInfoServiceImpl.java
    • SpuInfoService.java
    • CubemallSearchApplication.java
    • search.html
    • pom.xml

功能分析

页面回显的数据:
searchMap

keywords:搜索的关键词

brand:过滤条件-品牌

category:过滤条件-分类列表

price:价格区间过滤条件

result:
brandList 品牌列表,可以通过聚合查询得到
categoryList
rows 商品列表

url:回显搜索的url,其中包含查询条件和过滤条件

page:
upper 上一页
currentpage 当前页
lpage、rpage 显示的最左和最右的页数
next 下一页
last 最后一页
total 总页数

请求的url:
/search/list

请求的方法:
get

参数:
keywords:查询的关键词
brand:品牌名称
category:分类名称
price:价格区间,使用"-"分割区间
sortRule:排序规则
sortField:排序字段
pageNum:页码

Service

  1. 接收controller传递的参数
  2. 根据参数封装查询条件
    根据关键词查询
    品牌过滤
    分类过滤
    价格区间过滤
    排序
    分页
    高亮
    聚合条件:品牌、分类
  3. 执行查询
  4. 取返回结果
    总记录数
    商品列表
    聚合结果

Controller

  1. 接收页面提交的参数,封装成一个Map对象
  2. 调用service完成搜索功能,参数就是页面传递过来的参数
  3. 封装返回的数据
  4. 返回逻辑视图,模板的名称

SearchController.java

package com.xd.cubemall.search.controller;


import com.xd.cubemall.search.model.Page;
import com.xd.cubemall.search.service.SpuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

@Controller
public class SearchController {


    @Autowired
    private SpuInfoService spuInfoService;

    @GetMapping("/search/list")
    public String search(@RequestParam Map<String,String> paramMap, Model model)  {
        if (!paramMap.containsKey("keywords")) {
            paramMap.put("keywords","");
        }

        Map<String, Object> resultMap = spuInfoService.search(paramMap);
        //取分页数据
        Long totalRows = Long.parseLong(resultMap.get("totalRows").toString());
        //当前页码
        int pageNum = Integer.parseInt(resultMap.get("pageNum").toString());

        Page page = new Page(totalRows, pageNum, 60);

        //4.url回显  /search/list?keywords=手机&brand=华为&category=手机
        StringBuilder url = new StringBuilder();
        url.append("/search/list");

        //8.排序url特殊处理
        StringBuilder sortUrl = new StringBuilder();
        sortUrl.append("/search/list");
        builderUrl(url, sortUrl, paramMap);
        model.addAttribute("url", url);
        model.addAttribute("sortUrl", sortUrl);

        //向页面返回结果
        model.addAttribute("searchMap",paramMap);
        model.addAttribute("result",resultMap);
        model.addAttribute("url",url);
        model.addAttribute("page",page);

        //返回模板名称
        return "search";


    }




    /**
     * 拼接翻页url地址中的携带参数
     * @param url
     * @param sortUrl
     * @param searchMap
     */
    private void builderUrl(StringBuilder url, StringBuilder sortUrl, Map<String, String> searchMap) {
        if(!CollectionUtils.isEmpty(searchMap)){
            // /search/list?keywords=手机&brand=华为
            url.append("?");
            sortUrl.append("?");
            for (Map.Entry<String, String> entry : searchMap.entrySet()) {
                String key = entry.getKey();
                String value = entry.getValue();
                //7.排除pageNum参与url拼接
                if(!key.equals("pageNum")){
                    //5.特殊符号 + 处理
                    if(key.startsWith("spec")){
                        value = value.replace("+", "%2B");

                    }
                    //6. 删除版本特殊字符页面问题 482行 改为
                    //  <a th:href="@{${#strings.replace(url,'&'+sm.key+'='+#strings.replace(sm.value,'+','%2B'),'')}}">×</a>
                    //拼接查询条件
                    url.append(key);
                    url.append("=");
                    url.append(value);
                    url.append("&");


                 /*
                    方式二: 将sortUrl拼接放到pageNum的判断中
                    排序url特殊处理不需要拼接排序字段和规则
                 */
                    if(!key.equals("sortRule") && !key.equals("sortField")){
                        sortUrl.append(key);
                        sortUrl.append("=");
                        sortUrl.append(value);
                        sortUrl.append("&");
                    }
                }
            }
            //将最后一位删除 根据下标删除元素
            url.deleteCharAt(url.length()-1);
            sortUrl.deleteCharAt(sortUrl.length()-1);

        }
    }
}

Page.java

package com.xd.cubemall.search.model;

import java.io.Serializable;
import java.util.List;

/**
 * 分页对象
 * @param <T>
 */
public class Page<T> implements Serializable{

	//当前默认为第一页
	public static final Integer pageNum = 1;
	//默认每页显示条件
	public static final Integer pageSize = 20;


	//判断当前页是否为空或是小于1
	public static Integer cpn(Integer pageNum){
		if(null == pageNum || pageNum < 1){
			pageNum = 1;
		}
		return pageNum;
	}


	// 页数(第几页)
	private long currentpage;

	// 查询数据库里面对应的数据有多少条
	private long total;// 从数据库查处的总记录数

	// 每页查5条
	private int size;

	// 下页
	private int next;

	private List<T> list;

	// 最后一页
	private int last;

	private int lpage;

	private int rpage;

	//从哪条开始查
	private long start;

	//全局偏移量
	public int offsize = 2;

	public Page() {
		super();
	}

	/****
	 *
	 * @param currentpage
	 * @param total
	 * @param pagesize
	 */
	public void setCurrentpage(long currentpage,long total,long pagesize) {
		//可以整除的情况下
		long pagecount =  total/pagesize;

		//如果整除表示正好分N页,如果不能整除在N页的基础上+1页
		int totalPages = (int) (total%pagesize==0? total/pagesize : (total/pagesize)+1);

		//总页数
		this.last = totalPages;

		//判断当前页是否越界,如果越界,我们就查最后一页
		if(currentpage>totalPages){
			this.currentpage = totalPages;
		}else{
			this.currentpage=currentpage;
		}

		//计算start
		this.start = (this.currentpage-1)*pagesize;
	}

	//上一页
	public long getUpper() {
		return currentpage>1? currentpage-1: currentpage;
	}

	//总共有多少页,即末页
	public void setLast(int last) {
		this.last = (int) (total%size==0? total/size : (total/size)+1);
	}

	/****
	 * 带有偏移量设置的分页
	 * @param total
	 * @param currentpage
	 * @param pagesize
	 * @param offsize
	 */
	public Page(long total, int currentpage, int pagesize, int offsize) {
		this.offsize = offsize;
		initPage(total, currentpage, pagesize);
	}

	/****
	 *
	 * @param total   总记录数
	 * @param currentpage	当前页
	 * @param pagesize	每页显示多少条
	 */
	public Page(long total, int currentpage, int pagesize) {
		initPage(total,currentpage,pagesize);
	}

	/****
	 * 初始化分页
	 * @param total
	 * @param currentpage
	 * @param pagesize
	 */
	public void initPage(long total,int currentpage,int pagesize){
		//总记录数
		this.total = total;
		//每页显示多少条
		this.size=pagesize;

		//计算当前页和数据库查询起始值以及总页数
		setCurrentpage(currentpage, total, pagesize);

		//分页计算
		int leftcount =this.offsize,	//需要向上一页执行多少次
				rightcount =this.offsize;

		//起点页
		this.lpage =currentpage;
		//结束页
		this.rpage =currentpage;

		//2点判断
		this.lpage = currentpage-leftcount;			//正常情况下的起点
		this.rpage = currentpage+rightcount;		//正常情况下的终点

		//页差=总页数和结束页的差
		int topdiv = this.last-rpage;				//判断是否大于最大页数

		/***
		 * 起点页
		 * 1、页差<0  起点页=起点页+页差值
		 * 2、页差>=0 起点和终点判断
		 */
		this.lpage=topdiv<0? this.lpage+topdiv:this.lpage;

		/***
		 * 结束页
		 * 1、起点页<=0   结束页=|起点页|+1
		 * 2、起点页>0    结束页
		 */
		this.rpage=this.lpage<=0? this.rpage+(this.lpage*-1)+1: this.rpage;

		/***
		 * 当起点页<=0  让起点页为第一页
		 * 否则不管
		 */
		this.lpage=this.lpage<=0? 1:this.lpage;

		/***
		 * 如果结束页>总页数   结束页=总页数
		 * 否则不管
		 */
		this.rpage=this.rpage>last? this.last:this.rpage;
	}

	public long getNext() {
		return  currentpage<last? currentpage+1: last;
	}

	public void setNext(int next) {
		this.next = next;
	}

	public long getCurrentpage() {
		return currentpage;
	}

	public long getTotal() {
		return total;
	}

	public void setTotal(long total) {
		this.total = total;
	}

	public long getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	public long getLast() {
		return last;
	}

	public long getLpage() {
		return lpage;
	}

	public void setLpage(int lpage) {
		this.lpage = lpage;
	}

	public long getRpage() {
		return rpage;
	}

	public void setRpage(int rpage) {
		this.rpage = rpage;
	}

	public long getStart() {
		return start;
	}

	public void setStart(long start) {
		this.start = start;
	}

	public void setCurrentpage(long currentpage) {
		this.currentpage = currentpage;
	}

	/**
	 * @return the list
	 */
	public List<T> getList() {
		return list;
	}

	/**
	 * @param list the list to set
	 */
	public void setList(List<T> list) {
		this.list = list;
	}

}

SpuInfoServiceImpl.java

package com.xd.cubemall.search.service.impl;

import com.xd.cubemall.common.utils.R;
import com.xd.cubemall.search.dao.SpuInfoDao;
import com.xd.cubemall.search.model.SpuInfo;
import com.xd.cubemall.search.repository.SpuInfoRepository;
import com.xd.cubemall.search.service.SpuInfoService;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.Aggregations;
import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@Service
public class SpuInfoServiceImpl implements SpuInfoService {

    @Autowired
    private SpuInfoDao spuInfoDao;
    @Autowired
    private SpuInfoRepository spuInfoRepository;

    @Autowired
    private ElasticsearchRestTemplate template;


    @Override
    public Map<String, Object> search(Map<String, String> paramMap) {



//      1) 接收controller传递的参数
//      2) 根据参数封装查询条件
//      根据关键词查询
//      品牌过滤
//      分类过滤
//      价格区间过滤
//      排序
//      分页
//      高亮
//      聚合条件:品牌、分类
        NativeSearchQuery query = buildQuery(paramMap);
//      3) 执行查询
        SearchHits<SpuInfo> searchHits = template.search(query, SpuInfo.class);
//      4) 取返回结果
        Map<String, Object> resultMap = parseResponse(searchHits);
        //计算页面
        long totalHits = searchHits.getTotalHits();
        //取当前页码
        String pageNumStr = paramMap.get("pageNum");
        int pageNum = StringUtils.isNotBlank(pageNumStr)?Integer.parseInt(pageNumStr):1;
        resultMap.put("pageNum", pageNum);
        //计算总页数
        int totalPages = (int) Math.ceil(totalHits / 60);
        resultMap.put("totalPages",totalPages);
//      总记录数
//      商品列表
//      聚合结果
        return resultMap;
    }

    private NativeSearchQuery buildQuery(Map<String,String> paramMap) {
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        String keywords = paramMap.get("keywords");
        if (keywords == null) {
            keywords = "";
        }
//      根据关键词查询
        builder.withQuery(QueryBuilders.matchQuery("spuName",keywords));
//      品牌过滤
        String brand = paramMap.get("brand");
        if (StringUtils.isNotBlank(brand)) {
            builder.withFilter(QueryBuilders.termQuery("brandName",brand));
        }
//      分类过滤
        String category = paramMap.get("category");
        if (StringUtils.isNotBlank(category)) {
            builder.withFilter(QueryBuilders.termQuery("categoryName",category));
        }
//      价格区间过滤
        String price = paramMap.get("price");
        if (StringUtils.isNotBlank(price)) {
            String[] split = price.split("-");
            builder.withFilter(QueryBuilders.rangeQuery("price").gte(split[0]).lte(split[1]));
        }
//      排序
        String sortRule = paramMap.get("sortRule");
        String sortField = paramMap.get("sortField");
        if (StringUtils.isNotBlank(sortRule) && StringUtils.isNotBlank(sortField)) {
            if ("ASC".equals(sortRule)) {
                builder.withSort(SortBuilders.fieldSort(sortField).order(SortOrder.ASC));
            } else {
                builder.withSort(SortBuilders.fieldSort(sortField).order(SortOrder.DESC));
            }

        }
//      分页
        String pageNumString = paramMap.get("pageNum");
        int pageNum = 1;
        if (StringUtils.isNotBlank(pageNumString)) {
            pageNum = Integer.parseInt(pageNumString);
        }
        builder.withPageable(PageRequest.of(pageNum - 1, 60));
//      高亮
        builder.withHighlightBuilder(new HighlightBuilder()
                .field("spuName")
                .preTags("<em style=\"color:red\">")
                .postTags("</em>"));
//      聚合条件:品牌、分类
        builder.addAggregation(AggregationBuilders.terms("brandGroup").field("brandName"));
        builder.addAggregation(AggregationBuilders.terms("categoryGroup").field("categoryName"));

        return builder.build();

    }

    private Map<String, Object> parseResponse(SearchHits<SpuInfo> searchHits) {
        Map<String, Object> resultMap = new HashMap<>();
        //总记录数
        long totalHits = searchHits.getTotalHits();
        resultMap.put("totalRows",totalHits);
        //商品列表
        List<SpuInfo> spuInfoList = searchHits.getSearchHits().stream()
                .map(e -> {
                    SpuInfo spuInfo = e.getContent();
                    List<String> highlightField = e.getHighlightField("spuName");
                    if (highlightField.size() > 0) {
                        spuInfo.setSpuName(highlightField.get(0));
                    }
                    return spuInfo;

                })
                .collect(Collectors.toList());
        resultMap.put("rows",spuInfoList);

        //聚合结果
        Aggregations aggregations = searchHits.getAggregations();
        //取品牌列表
        ParsedStringTerms brandGroup = aggregations.get("brandGroup");
        List<String> brandList = brandGroup.getBuckets().stream()
                .map(b -> b.getKeyAsString())
                .collect(Collectors.toList());
        resultMap.put("brandList",brandList);
        //取分类列表
        ParsedStringTerms categoryGroup = aggregations.get("categoryGroup");
        List<String> categoryList = categoryGroup.getBuckets().stream()
                .map(b -> b.getKeyAsString())
                .collect(Collectors.toList());
        resultMap.put("categoryList",categoryList);
        return resultMap;
    }






    @Override
    public R putOnSale(long spuId) {
//        1.根据spuId查询对象的商品数据
        SpuInfo spuInfo = spuInfoDao.getSpuInfoById(spuId);

//        2.商品数据包含的字段 Entity中包含的字段
//        3.使用ElasticSearchRepository对象将数据添加到索引库中
        spuInfoRepository.save(spuInfo);
//        4.返回结果
        return R.ok();
    }


    @Override
    public R syncSpuInfo() {
//        1) 把所有的商品数据查询出来
        List<SpuInfo> infoList = spuInfoDao.getSpuInfoList();

//        2) 把商品数据导入到ES中
        spuInfoRepository.saveAll(infoList);
        //返回结果
        return R.ok();
    }
}

SpuInfoService.java

package com.xd.cubemall.search.service;

import com.xd.cubemall.common.utils.R;

import java.util.Map;

public interface SpuInfoService {

    public R putOnSale(long spuId);
    public R syncSpuInfo();

    Map<String, Object> search(Map<String,String> paramMap);

}

CubemallSearchApplication.java

package com.xd.cubemall.search;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@MapperScan("com.xd.cubemall.search.dao")
public class CubemallSearchApplication{
    public static void main(String[] args) {
        SpringApplication.run(CubemallSearchApplication.class);
    }
}

search.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
	<title>产品列表页</title>
	 <link rel="icon" href="/img/favicon.ico">
    <link rel="stylesheet" type="text/css" href="/css/all.css" />
    <link rel="stylesheet" type="text/css" href="/css/pages-list.css" />
</head>

<body>
	<!-- 头部栏位 -->
	<!--页面顶部-->
<div id="nav-bottom">
	<!--顶部-->
	<div class="nav-top">
		<div class="top">
			<div class="py-container">
				<div class="shortcut">
					<ul class="fl">
						<li class="f-item">魔方欢迎您!</li>
						<li class="f-item"><a href="http://login.jn.com:9200/oauth/toLogin" target="_blank">登录</a> <span><a href="register.html" target="_blank">免费注册</a></span></li>
					</ul>
					<div class="fr typelist">
						<ul class="types">
							<li class="f-item"><span>我的订单</span></li>

							<li class="f-item"><span><a href="http://web.jn.com:9001/wcart/list" target="_blank">我的购物车</a></span></li>
							<li class="f-item"><span><a href="home.html" target="_blank">我的魔方</a></span></li>
							<li class="f-item"><span>魔方会员</span></li>
							<li class="f-item"><span>企业采购</span></li>
							<li class="f-item"><span>关注魔方</span></li>
							<li class="f-item"><span><a href="cooperation.html" target="_blank">合作招商</a></span></li>
							<li class="f-item"><span><a href="shoplogin.html" target="_blank">商家后台</a></span></li>
                            <li class="f-item"><span>网站导航</span></li>
						</ul>
					</div>

				</div>
			</div>
		</div>

		<!--头部-->
		<div class="header">
			<div class="py-container">
				<div class="yui3-g Logo">
					<div class="yui3-u Left logoArea">
						<a class="logo-bd" title="魔方" href="index.html" target="_blank"></a>
					</div>
					<div class="yui3-u Rit searchArea">
						<div class="search">
							<form action="/search/list" class="sui-form form-inline">
								<!--searchAutoComplete-->
								<div class="input-append">
									<input type="text" id="autocomplete" name="keywords" th:value="${searchMap.keywords}"  class="input-error input-xxlarge" />
									<button class="sui-btn btn-xlarge btn-danger" type="submit">搜索</button>
								</div>
							</form>
						</div>
					</div>

				</div>

			</div>
		</div>
	</div>
</div>

	<!-- 商品分类导航 -->
	<div class="typeNav">
			<div class="py-container">
				<div class="yui3-g NavList">
    <div class="all-sorts-list">
        <div class="yui3-u Left all-sort">
            <h4>全部商品分类</h4>
        </div>
        <div class="sort">
                <div class="all-sort-list2">
                    <div class="item bo">
                        <h3><a href="">图书、音像、数字商品</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书</a></dt>
                                    <dd><a href="">免费</a><a href="">小说</a></em><a href="">励志与成功</a><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                            <h3><a href="">家用电器</a></h3>
                            <div class="item-list clearfix">
                                <div class="subitem">
                                    <dl class="fore1">
                                        <dt><a href="">电子书1</a></dt>
                                        <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                    </dl>
                                    <dl class="fore2">
                                        <dt><a href="">数字音乐</a></dt>
                                        <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                    </dl>
                                    <dl class="fore3">
                                        <dt><a href="">音像</a></dt>
                                        <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                    </dl>
                                    <dl class="fore4">
                                        <dt>文艺</dt>
                                        <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                    </dl>
                                    <dl class="fore5">
                                        <dt>人文社科</dt>
                                        <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                    </dl>
                                    <dl class="fore6">
                                        <dt>经管励志</dt>
                                        <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                    </dl>
                                    <dl class="fore7">
                                        <dt>生活</dt>
                                        <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                    </dl>
                                    <dl class="fore8">
                                        <dt>科技</dt>
                                        <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                    </dl>
                                    <dl class="fore9">
                                        <dt>少儿</dt>
                                        <dd><em><a href="">少儿</a></em><em><a href="">0-2岁</a></em><em><a href="">3-6岁</a></em><em><a href="">7-10岁</a></em><em><a href="">11-14岁</a></em></dd>
                                    </dl>
                                </div>
                            </div>
                    </div>
                    <div class="item">
                        <h3><a href="">手机、数码</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书2</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                                <dl class="fore5">
                                    <dt>人文社科</dt>
                                    <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <h3><a href="">电脑、办公</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书3</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                                <dl class="fore5">
                                    <dt>人文社科</dt>
                                    <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                </dl>
                                <dl class="fore6">
                                    <dt>经管励志</dt>
                                    <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                </dl>
                                <dl class="fore7">
                                    <dt>生活</dt>
                                    <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                </dl>
                                <dl class="fore8">
                                    <dt>科技</dt>
                                    <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                </dl>
                                <dl class="fore9">
                                    <dt>少儿</dt>
                                    <dd><em><a href="">少儿</a></em><em><a href="">0-2岁</a></em><em><a href="">3-6岁</a></em><em><a href="">7-10岁</a></em><em><a href="">11-14岁</a></em></dd>
                                </dl>
                                <dl class="fore10">
                                    <dt>教育</dt>
                                    <dd><em><a href="">教材教辅</a></em><em><a href="">考试</a></em><em><a href="">外语学习</a></em></dd>
                                </dl>
                                <dl class="fore11">
                                    <dt>其它</dt>
                                    <dd><em><a href="">英文原版书</a></em><em><a href="">港台图书</a></em><em><a href="">工具书</a></em><em><a href="">套装书</a></em><em><a href="">杂志/期刊</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                            <h3><a href="">家居、家具、家装、厨具</a></h3>
                            <div class="item-list clearfix">
                                <div class="subitem">
                                    <dl class="fore1">
                                        <dt><a href="">电子书4</a></dt>
                                        <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                    </dl>
                                    <dl class="fore2">
                                        <dt><a href="">数字音乐</a></dt>
                                        <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                    </dl>
                                    <dl class="fore3">
                                        <dt><a href="">音像</a></dt>
                                        <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                    </dl>
                                    <dl class="fore4">
                                        <dt>文艺</dt>
                                        <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                    </dl>
                                    <dl class="fore5">
                                        <dt>人文社科</dt>
                                        <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                    </dl>
                                    <dl class="fore6">
                                        <dt>经管励志</dt>
                                        <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                    </dl>
                                    <dl class="fore7">
                                        <dt>生活</dt>
                                        <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                    </dl>
                                    <dl class="fore8">
                                        <dt>科技</dt>
                                        <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                    </dl>
                                    <dl class="fore9">
                                        <dt>少儿</dt>
                                        <dd><em><a href="">少儿</a></em><em><a href="">0-2岁</a></em><em><a href="">3-6岁</a></em><em><a href="">7-10岁</a></em><em><a href="">11-14岁</a></em></dd>
                                    </dl>
                                </div>
                            </div>
                    </div>
                    <div class="item">
                        <h3><a href="">服饰内衣</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书5</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                                <dl class="fore5">
                                    <dt>人文社科</dt>
                                    <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                </dl>
                                <dl class="fore6">
                                    <dt>经管励志</dt>
                                    <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                </dl>
                                <dl class="fore7">
                                    <dt>生活</dt>
                                    <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                </dl>
                                <dl class="fore8">
                                    <dt>科技</dt>
                                    <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <h3><a href="">个护化妆</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书6</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                                <dl class="fore5">
                                    <dt>人文社科</dt>
                                    <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                </dl>
                                <dl class="fore6">
                                    <dt>经管励志</dt>
                                    <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                </dl>
                                <dl class="fore7">
                                    <dt>生活</dt>
                                    <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                </dl>
                                <dl class="fore8">
                                    <dt>科技</dt>
                                    <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                </dl>
                                <dl class="fore9">
                                    <dt>少儿</dt>
                                    <dd><em><a href="">少儿</a></em><em><a href="">0-2岁</a></em><em><a href="">3-6岁</a></em><em><a href="">7-10岁</a></em><em><a href="">11-14岁</a></em></dd>
                                </dl>
                                <dl class="fore10">
                                    <dt>教育</dt>
                                    <dd><em><a href="">教材教辅</a></em><em><a href="">考试</a></em><em><a href="">外语学习</a></em></dd>
                                </dl>
                                <dl class="fore11">
                                    <dt>其它</dt>
                                    <dd><em><a href="">英文原版书</a></em><em><a href="">港台图书</a></em><em><a href="">工具书</a></em><em><a href="">套装书</a></em><em><a href="">杂志/期刊</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <h3><a href="">运动健康</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书7</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                            </div>
                            <div class="cat-right">
                                <dl class="categorys-brands" clstag="homepage|keycount|home2013|0601d">
                                    <dt>推荐品牌出版商</dt>
                                    <dd>
                                        <ul>
                                            <li>
                                                <a href="">中华书局</a>
                                            </li>
                                            <li>
                                                <a href="">人民邮电出版社</a>
                                            </li>
                                        </ul>
                                    </dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <h3><a href="">汽车用品</a></h3>
                        <div class="item-list clearfix">
                            <div class="subitem">
                                <dl class="fore1">
                                    <dt><a href="">电子书8</a></dt>
                                    <dd><em><a href="">免费</a></em><em><a href="">小说</a></em><em><a href="">励志与成功</a></em><em><a href="">婚恋/两性</a></em><em><a href="">文学</a></em><em><a href="">经管</a></em><em><a href="">畅读VIP</a></em></dd>
                                </dl>
                                <dl class="fore2">
                                    <dt><a href="">数字音乐</a></dt>
                                    <dd><em><a href="">通俗流行</a></em><em><a href="">古典音乐</a></em><em><a href="">摇滚说唱</a></em><em><a href="">爵士蓝调</a></em><em><a href="">乡村民谣</a></em><em><a href="">有声读物</a></em></dd>
                                </dl>
                                <dl class="fore3">
                                    <dt><a href="">音像</a></dt>
                                    <dd><em><a href="">音乐</a></em><em><a href="">影视</a></em><em><a href="">教育音像</a></em><em><a href="">游戏</a></em></dd>
                                </dl>
                                <dl class="fore4">
                                    <dt>文艺</dt>
                                    <dd><em><a href="">小说</a></em><em><a href="">文学</a></em><em><a href="">青春文学</a></em><em><a href="">传记</a></em><em><a href="">艺术</a></em></dd>
                                </dl>
                                <dl class="fore5">
                                    <dt>人文社科</dt>
                                    <dd><em><a href="">历史</a></em><em><a href="">心理学</a></em><em><a href="">政治/军事</a></em><em><a href="">国学/古籍</a></em><em><a href="">哲学/宗教</a></em><em><a href="">社会科学</a></em></dd>
                                </dl>
                                <dl class="fore6">
                                    <dt>经管励志</dt>
                                    <dd><em><a href="">经济</a></em><em><a href="">金融与投资</a></em><em><a href="">管理</a></em><em><a href="">励志与成功</a></em></dd>
                                </dl>
                                <dl class="fore7">
                                    <dt>生活</dt>
                                    <dd><em><a href="">家庭与育儿</a></em><em><a href="">旅游/地图</a></em><em><a href="">烹饪/美食</a></em><em><a href="">时尚/美妆</a></em><em><a href="">家居</a></em><em><a href="">婚恋与两性</a></em><em><a href="">娱乐/休闲</a></em><em><a href="">健身与保健</a></em><em><a href="">动漫/幽默</a></em><em><a href="">体育/运动</a></em></dd>
                                </dl>
                                <dl class="fore8">
                                    <dt>科技</dt>
                                    <dd><em><a href="">科普</a></em><em><a href="">IT</a></em><em><a href="">建筑</a></em><em><a href="">医学</a></em><em><a href="">工业技术</a></em><em><a href="">电子/通信</a></em><em><a href="">农林</a></em><em><a href="">科学与自然</a></em></dd>
                                </dl>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <h3><a href="">彩票、旅行</a></h3>
                    </div>
                    <div class="item">
                        <h3><a href="">理财、众筹</a></h3>
                    </div>
                    <div class="item">
                        <h3><a href="">母婴、玩具</a></h3>
                    </div>
                    <div class="item">
                        <h3><a href="">箱包</a></h3>
                    </div>
                    <div class="item">
                        <h3><a href="">运动户外</a></h3>
                    </div>
                    <div class="item">
                        <h3><a href="">箱包</a></h3>
                    </div>
                </div>
            </div>
    </div>
    <div class="yui3-u Center navArea">
        <ul class="nav">
            <li class="f-item">服装城</li>
            <li class="f-item">美妆馆</li>
            <li class="f-item">魔方超市</li>
            <li class="f-item">全球购</li>
            <li class="f-item">闪购</li>
            <li class="f-item">团购</li>
            <li class="f-item">有趣</li>
            <li class="f-item"><a href="seckill-index.html" target="_blank">秒杀</a></li>
        </ul>
    </div>
    <div class="yui3-u Right"></div>
</div>
			</div>
		</div>
	<!--list-content-->
	<div class="main">
		<div class="py-container">
			<!--bread-->
			<div class="bread">
				<ul class="fl sui-breadcrumb">
					<li>
						<a href="#">全部结果</a>
					</li>
					<li  class="active">
                        <span th:text="${searchMap.keywords}"></span>
                    </li>
				</ul>
				<ul class="fl sui-tag">
                    <li th:if="${#maps.containsKey(searchMap, 'brand')}" class="with-x">
                        品牌:<span th:text="${searchMap.brand}"></span><a th:href="@{${#strings.replace(url,'&brand='+searchMap.brand,'')}}">×</a>
                    </li>
					<li th:if="${#maps.containsKey(searchMap, 'category')}" class="with-x">
                        分类:<span th:text="${searchMap.category}"></span><a th:href="@{${#strings.replace(url,'&category='+searchMap.category,'')}}">×</a>
                    </li>
					<li th:if="${#maps.containsKey(searchMap, 'price')}" class="with-x">
                        价格:<span th:text="${searchMap.price}"></span><a th:href="@{${#strings.replace(url,'&price='+searchMap.price,'')}}">×</a>
                    </li>
					<!-- <li th:if="${#strings.startsWith(sm.key,'spec_')}" th:each="sm : ${searchMap}" class="with-x">
                        <span th:text="${#strings.replace(sm.key,'spec_','')}"></span>:<span th:text="${#strings.replace(sm.value,'%2B','+')}"></span>
                        <a th:href="@{${#strings.replace(url,'&'+sm.key+'='+sm.value,'')}}">×</a>
                    </li> -->
				</ul>

			</div>
            <script>
                function toSearch(url){
                    window.location.href = encodeURIComponent(url);
                }
            </script>
			<!--selector-->
			<div class="clearfix selector">
				<div class="type-wrap logo" th:unless="${#maps.containsKey(searchMap, 'brand')}">
					<div class="fl key brand">品牌</div>
					<div class="value logos">
						<ul class="logo-list">
							<li th:each="brand,brandStat:${result.brandList}">
                                <a th:href="@{${url}(brand=${brand})}" th:text="${brand}"></a>
                            </li>
						</ul>
					</div>
					<div class="ext">
						<a href="javascript:void(0);" class="sui-btn">多选</a>
						<a href="javascript:void(0);">更多</a>
					</div>
				</div>
				<div class="clearfix selector">
					<div class="type-wrap logo" th:unless="${#maps.containsKey(searchMap, 'category')}">
						<div class="fl key category">分类</div>
						<div class="value logos">
							<ul class="type-list">
								<li th:each="cat,catStat:${result.categoryList}">
									<a th:href="@{${url}(category=${cat})}" th:text="${cat}"></a>
								</li>
							</ul>
						</div>
						<div class="ext">
							<a href="javascript:void(0);" class="sui-btn">多选</a>
							<a href="javascript:void(0);">更多</a>
						</div>
					</div>
				<!-- <div class="type-wrap" th:each="spec,specStat:${result.specList}" th:unless="${#maps.containsKey(searchMap, 'spec_'+spec.key)}">
					<div class="fl key" th:text="${spec.key}"></div>
					<div class="fl value">
						<ul class="type-list">
							<li th:each="op,opStat:${spec.value}">
								<a th:href="@{${url}('spec_'+${spec.key}=${op})}" th:text="${op}"></a>
							</li>
						</ul>
					</div>
					<div class="fl ext"></div>
				</div> -->

				<div class="type-wrap" th:unless="${#maps.containsKey(searchMap, 'price')}">
					<div class="fl key">价格</div>
					<div class="fl value">
						<ul class="type-list">
							<li>
								<a th:href="@{${url}(price='0-500')}" th:text="0-500元"></a>
							</li>
							<li>
                                <a th:href="@{${url}(price='500-1000')}" th:text="500-1000元"></a>
							</li>
							<li>
                                <a th:href="@{${url}(price='1000-1500')}" th:text="1000-1500元"></a>
							</li>
							<li>
                                <a th:href="@{${url}(price='1500-2000')}" th:text="1500-2000元"></a>
							</li>
							<li>
                                <a th:href="@{${url}(price='2000-3000')}" th:text="2000-3000元"></a>
							</li>
							<li>
                                <a th:href="@{${url}(price='3000-*')}" th:text="3000元以上"></a>
							</li>
						</ul>
					</div>
					<div class="fl ext">
					</div>
				</div>
				<div class="type-wrap">
					<div class="fl key">更多筛选项</div>
					<div class="fl value">
						<ul class="type-list">
							<li>
								<a>特点</a>
							</li>
							<li>
								<a>系统</a>
							</li>
							<li>
								<a>手机内存 </a>
							</li>
							<li>
								<a>单卡双卡</a>
							</li>
							<li>
								<a>其他</a>
							</li>
						</ul>
					</div>
					<div class="fl ext">
					</div>
				</div>
			</div>
			<!--details-->
			<div id="glist" class="details">
				<div class="sui-navbar">
					<div class="navbar-inner filter">
						<ul class="sui-nav">
							<li class="active">
								<a href="#">综合</a>
							</li>
							<li>
                                <a href="#">销量</a>
							</li>
							<li>
								<a href="#">新品</a>
							</li>
							<li>
								<a href="#">评价</a>
							</li>
							<li>
								<a th:href="@{${url}(sortRule='ASC',sortField='price')}">价格↑</a>
							</li>
                            <li>
                                <a th:href="@{${url}(sortRule='DESC',sortField='price')}">价格↓</a>
                            </li>
						</ul>
					</div>
				</div>
				<div class="goods-list">
					<ul class="yui3-g">
						<li class="yui3-u-1-5" th:each="spu,spuStat:${result.rows}">
							<div class="list-wrap">
								<div class="p-img">
									<a th:href="'//item.jn.com:9011/items/'+${spu.id}+'.html'"  target="_blank"><img th:src="${spu.imgUrl}" /></a>
								</div>
								<div class="price">
									<strong>
											<em>¥</em>
											<i th:text="${spu.price}"></i>
										</strong>
								</div>
								<div class="attr">
									<a th:utext="${spu.spuName}" target="_blank" th:href="'//item.jn.com:9011/items/'+${spu.id}+'.html'"   th:title="${spu.spuName}"></a>
								</div>
								<div class="commit">
									<i class="command">已有<span>2000</span>人评价</i>
								</div>
								<div class="operate">
									<a href="success-cart.html" target="_blank" class="sui-btn btn-bordered btn-danger">加入购物车</a>
									<a href="javascript:void(0);" class="sui-btn btn-bordered">收藏</a>
								</div>
							</div>
						</li>
					</ul>
				</div>
				<div class="fr page">
					<div class="sui-pagination pagination-large">
						<ul>
							<li class="prev disabled">
								<a th:href="@{${url}(pageNum=page.upper)}">«上一页</a>
							</li>
							<li th:each="i:${#numbers.sequence(page.lpage,page.rpage)}" th:class="${i}==${page.currentpage}? 'active':''">
								<a th:href="@{${url}(pageNum=${i})}" th:text="${i}"></a>
							</li>
							<li class="next">
								<a th:href="@{${url}(pageNum=${page.next})}">下一页»</a>
							</li>

						</ul>
                        <div>
                            <span><i th:text="${page.last}"></i>&nbsp;</span>
                            <span><i th:text="${page.total}"></i>条数&nbsp;</span>
                        </div>
					</div>
				</div>
			</div>
			<!--hotsale-->
			<div class="clearfix hot-sale">
				<h4 class="title">热卖商品</h4>
				<div class="hot-list">
					<ul class="yui3-g">
						<li class="yui3-u-1-4">
							<div class="list-wrap">
								<div class="p-img">
									<img src="/img/like_01.png" />
								</div>
								<div class="attr">
									<em>Apple苹果iPhone 6s (A1699)</em>
								</div>
								<div class="price">
									<strong>
											<em>¥</em>
											<i>4088.00</i>
										</strong>
								</div>
								<div class="commit">
									<i class="command">已有700人评价</i>
								</div>
							</div>
						</li>
						<li class="yui3-u-1-4">
							<div class="list-wrap">
								<div class="p-img">
									<img src="/img/like_03.png" />
								</div>
								<div class="attr">
									<em>金属A面,360°翻转,APP下单省300!</em>
								</div>
								<div class="price">
									<strong>
											<em>¥</em>
											<i>4088.00</i>
										</strong>
								</div>
								<div class="commit">
									<i class="command">已有700人评价</i>
								</div>
							</div>
						</li>
						<li class="yui3-u-1-4">
							<div class="list-wrap">
								<div class="p-img">
									<img src="/img/like_04.png" />
								</div>
								<div class="attr">
									<em>256SSD商务大咖,完爆职场,APP下单立减200</em>
								</div>
								<div class="price">
									<strong>
											<em>¥</em>
											<i>4068.00</i>
										</strong>
								</div>
								<div class="commit">
									<i class="command">已有20人评价</i>
								</div>
							</div>
						</li>
						<li class="yui3-u-1-4">
							<div class="list-wrap">
								<div class="p-img">
									<img src="/img/like_02.png" />
								</div>
								<div class="attr">
									<em>Apple苹果iPhone 6s (A1699)</em>
								</div>
								<div class="price">
									<strong>
											<em>¥</em>
											<i>4088.00</i>
										</strong>
								</div>
								<div class="commit">
									<i class="command">已有700人评价</i>
								</div>
							</div>
						</li>
					</ul>
				</div>
			</div>
		</div>
	</div>
	<!-- 底部栏位 -->
	<!--页面底部-->
<div class="clearfix footer">
	<div class="py-container">
		<div class="footlink">
			<div class="Mod-service">
				<ul class="Mod-Service-list">
					<li class="grid-service-item intro  intro1">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
					<li class="grid-service-item  intro intro2">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
					<li class="grid-service-item intro  intro3">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
					<li class="grid-service-item  intro intro4">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
					<li class="grid-service-item intro intro5">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
				</ul>
			</div>
			<div class="clearfix Mod-list">
				<div class="yui3-g">
					<div class="yui3-u-1-6">
						<h4>购物指南</h4>
						<ul class="unstyled">
							<li>购物流程</li>
							<li>会员介绍</li>
							<li>生活旅行/团购</li>
							<li>常见问题</li>
							<li>购物指南</li>
						</ul>

					</div>
					<div class="yui3-u-1-6">
						<h4>配送方式</h4>
						<ul class="unstyled">
							<li>上门自提</li>
							<li>211限时达</li>
							<li>配送服务查询</li>
							<li>配送费收取标准</li>
							<li>海外配送</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>支付方式</h4>
						<ul class="unstyled">
							<li>货到付款</li>
							<li>在线支付</li>
							<li>分期付款</li>
							<li>邮局汇款</li>
							<li>公司转账</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>售后服务</h4>
						<ul class="unstyled">
							<li>售后政策</li>
							<li>价格保护</li>
							<li>退款说明</li>
							<li>返修/退换货</li>
							<li>取消订单</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>特色服务</h4>
						<ul class="unstyled">
							<li>夺宝岛</li>
							<li>DIY装机</li>
							<li>延保服务</li>
							<li>魔方E卡</li>
							<li>魔方通信</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>帮助中心</h4>
						<img src="./img/wx_cz.jpg">
					</div>
				</div>
			</div>
			<div class="Mod-copyright">
				<ul class="helpLink">
					<li>关于我们<span class="space"></span></li>
					<li>联系我们<span class="space"></span></li>
					<li>关于我们<span class="space"></span></li>
					<li>商家入驻<span class="space"></span></li>
					<li>营销中心<span class="space"></span></li>
					<li>友情链接<span class="space"></span></li>
					<li>关于我们<span class="space"></span></li>
					<li>营销中心<span class="space"></span></li>
					<li>友情链接<span class="space"></span></li>
					<li>关于我们</li>
				</ul>
				<p></p>
				<p></p>
			</div>
		</div>
	</div>
</div>
<!--页面底部END-->

	<!-- 基础js库 -->

	<!--侧栏面板开始-->
<div class="J-global-toolbar">
	<div class="toolbar-wrap J-wrap">
		<div class="toolbar">
			<div class="toolbar-panels J-panel">

				<!-- 购物车 -->
				<div style="visibility: hidden;" class="J-content toolbar-panel tbar-panel-cart toolbar-animate-out">
					<h3 class="tbar-panel-header J-panel-header">
						<a href="" class="title"><i></i><em class="title">购物车</em></a>
						<span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('cart');" ></span>
					</h3>
					<div class="tbar-panel-main">
						<div class="tbar-panel-content J-panel-content">
							<div id="J-cart-tips" class="tbar-tipbox hide">
								<div class="tip-inner">
									<span class="tip-text">还没有登录,登录后商品将被保存</span>
									<a href="#none" class="tip-btn J-login">登录</a>
								</div>
							</div>
							<div id="J-cart-render">
								<!-- 列表 -->
								<div id="cart-list" class="tbar-cart-list">
								</div>
							</div>
						</div>
					</div>
					<!-- 小计 -->
					<div id="cart-footer" class="tbar-panel-footer J-panel-footer">
						<div class="tbar-checkout">
							<div class="jtc-number"> <strong class="J-count" id="cart-number">0</strong>件商品 </div>
							<div class="jtc-sum"> 共计:<strong class="J-total" id="cart-sum">¥0</strong> </div>
							<a class="jtc-btn J-btn" href="#none" target="_blank">去购物车结算</a>
						</div>
					</div>
				</div>

				<!-- 我的关注 -->
				<div style="visibility: hidden;" data-name="follow" class="J-content toolbar-panel tbar-panel-follow">
					<h3 class="tbar-panel-header J-panel-header">
						<a href="#" target="_blank" class="title"> <i></i> <em class="title">我的关注</em> </a>
						<span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('follow');"></span>
					</h3>
					<div class="tbar-panel-main">
						<div class="tbar-panel-content J-panel-content">
							<div class="tbar-tipbox2">
								<div class="tip-inner"> <i class="i-loading"></i> </div>
							</div>
						</div>
					</div>
					<div class="tbar-panel-footer J-panel-footer"></div>
				</div>

				<!-- 我的足迹 -->
				<div style="visibility: hidden;" class="J-content toolbar-panel tbar-panel-history toolbar-animate-in">
					<h3 class="tbar-panel-header J-panel-header">
						<a href="#" target="_blank" class="title"> <i></i> <em class="title">我的足迹</em> </a>
						<span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('history');"></span>
					</h3>
					<div class="tbar-panel-main">
						<div class="tbar-panel-content J-panel-content">
							<div class="jt-history-wrap">
								<ul>
									<!--<li class="jth-item">
										<a href="#" class="img-wrap"> <img src="../../.../portal/img/like_03.png" height="100" width="100" /> </a>
										<a class="add-cart-button" href="#" target="_blank">加入购物车</a>
										<a href="#" target="_blank" class="price">¥498.00</a>
									</li>
									<li class="jth-item">
										<a href="#" class="img-wrap"> <img src="../../../portal/img/like_02.png" height="100" width="100" /></a>
										<a class="add-cart-button" href="#" target="_blank">加入购物车</a>
										<a href="#" target="_blank" class="price">¥498.00</a>
									</li>-->
								</ul>
								<a href="#" class="history-bottom-more" target="_blank">查看更多足迹商品 &gt;&gt;</a>
							</div>
						</div>
					</div>
					<div class="tbar-panel-footer J-panel-footer"></div>
				</div>

			</div>

			<div class="toolbar-header"></div>

			<!-- 侧栏按钮 -->
			<div class="toolbar-tabs J-tab">
				<div onclick="cartPanelView.tabItemClick('cart')" class="toolbar-tab tbar-tab-cart" data="购物车" tag="cart" >
					<i class="tab-ico"></i>
					<em class="tab-text"></em>
					<span class="tab-sub J-count " id="tab-sub-cart-count">0</span>
				</div>
				<div onclick="cartPanelView.tabItemClick('follow')" class="toolbar-tab tbar-tab-follow" data="我的关注" tag="follow" >
					<i class="tab-ico"></i>
					<em class="tab-text"></em>
					<span class="tab-sub J-count hide">0</span>
				</div>
				<div onclick="cartPanelView.tabItemClick('history')" class="toolbar-tab tbar-tab-history" data="我的足迹" tag="history" >
					<i class="tab-ico"></i>
					<em class="tab-text"></em>
					<span class="tab-sub J-count hide">0</span>
				</div>
			</div>

			<div class="toolbar-footer">
				<div class="toolbar-tab tbar-tab-top" > <a href="#"> <i class="tab-ico  "></i> <em class="footer-tab-text">顶部</em> </a> </div>
				<div class="toolbar-tab tbar-tab-feedback" > <a href="#" target="_blank"> <i class="tab-ico"></i> <em class="footer-tab-text ">反馈</em> </a> </div>
			</div>

			<div class="toolbar-mini"></div>

		</div>

		<div id="J-toolbar-load-hook"></div>

	</div>
</div>
<script type="text/javascript" src="/js/all.js"></script>

</body>

</html>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <artifactId>cubemall-search</artifactId>
    <packaging>jar</packaging>

    <name>chubemall-search</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
        <elasticsearch.version>7.10.2</elasticsearch.version>
    </properties>



    <dependencies>
<!--        <dependency>-->
<!--            <groupId>junit</groupId>-->
<!--            <artifactId>junit</artifactId>-->
<!--            <version>3.8.1</version>-->
<!--            <scope>test</scope>-->
<!--        </dependency>-->

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
            <scope>provided</scope>
        </dependency>

        <!--引入common公共模块-->
        <dependency>
            <groupId>com.xd.cubemall</groupId>
            <artifactId>cubemall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>



        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>org.elasticsearch.client</groupId>-->
<!--            <artifactId>elasticsearch-rest-high-level-client</artifactId>-->
<!--            <version>7.10.2</version>-->
<!--        </dependency>-->


        <!--阿里云OSS-->
        <!--        <dependency>-->
        <!--            <groupId>com.aliyun.oss</groupId>-->
        <!--            <artifactId>aliyun-sdk-oss</artifactId>-->
        <!--            <version>3.17.4</version>-->
        <!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.thymeleaf</groupId>-->
<!--            <artifactId>thymeleaf</artifactId>-->
<!--            <version>3.0.11.RELEASE</version>-->
<!--        </dependency>-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>


    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


        </dependencies>
    </dependencyManagement>
</project>


http://www.kler.cn/news/358378.html

相关文章:

  • Mybatis day 1020
  • 基于springboot的网上服装商城推荐系统的设计与实现
  • WPF入门_03路由事件
  • git reset --hard 恢复
  • ElasticSearch-7.17.10集群升级至ElasticSearch-7.17.24
  • ApacheShiro反序列化 550 721漏洞
  • 上海市货运资格证二寸照片要求及手机拍照方法
  • Java后端面试题:JVM篇
  • Linux期末考试编程题汇编
  • Jenkins+Ant+Jmeter接口自动化集成测试
  • 基于x86_64汇编语言简单教程3: 一些概念的补充与整理
  • 基于Matlab进行H5读写操作
  • vue使用jquery的ajax,页面跳转
  • VMware虚拟机连不上网络,但VMware网络服务和网络适配器均正常
  • Android音视频 MediaCodec框架-创建流程(3)
  • resnetv1骨干
  • 阿里巴巴 | 推出升级版AI翻译工具:Marco MT 性能超越Google和ChatGPT
  • oracle创建用户与表空间,用户授权、以及导入dmp数据泵文件
  • Python----QT篇基础篇(一)
  • 图像中的融合