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
- 接收controller传递的参数
- 根据参数封装查询条件
根据关键词查询
品牌过滤
分类过滤
价格区间过滤
排序
分页
高亮
聚合条件:品牌、分类 - 执行查询
- 取返回结果
总记录数
商品列表
聚合结果
Controller
- 接收页面提交的参数,封装成一个Map对象
- 调用service完成搜索功能,参数就是页面传递过来的参数
- 封装返回的数据
- 返回逻辑视图,模板的名称
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 {@Autowiredprivate 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;//判断当前页是否为空或是小于1public 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;}//计算startthis.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 {@Autowiredprivate SpuInfoDao spuInfoDao;@Autowiredprivate SpuInfoRepository spuInfoRepository;@Autowiredprivate ElasticsearchRestTemplate template;@Overridepublic 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;}@Overridepublic R putOnSale(long spuId) {
// 1.根据spuId查询对象的商品数据SpuInfo spuInfo = spuInfoDao.getSpuInfoById(spuId);// 2.商品数据包含的字段 Entity中包含的字段
// 3.使用ElasticSearchRepository对象将数据添加到索引库中spuInfoRepository.save(spuInfo);
// 4.返回结果return R.ok();}@Overridepublic 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>页 </span><span>共<i th:text="${page.total}"></i>条数 </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">查看更多足迹商品 >></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>
相关文章:
033 商品搜索
文章目录 SearchController.javaPage.javaSpuInfoServiceImpl.javaSpuInfoService.javaCubemallSearchApplication.javasearch.htmlpom.xml 功能分析 页面回显的数据: searchMap keywords:搜索的关键词 brand:过滤条件-品牌 category&…...
身份证二要素实名认证接口-身份证核验接口-身份证实名API
接口简介:企业三要素验证,输入公司名称、统一社会信用代码、法人姓名验证是否一致 接口地址:https://www.wapi.cn/api_detail/62/169.html 在线核验:https://www.wapi.cn/icardauth.html 网站地址:https://www.wapi.cn…...

一次恶意程序分析
首先F12shift查看字符表 字符表发现可疑字符串 双击进入 再tab 进入这里 推测为main函数 可见一些可疑的api FindResourceW推测该木马使用了资源加载 VirtualAlloc申请内存 然后sub_1400796E0 有 dwSize 参数 推测为 拷贝内存 memcpy类似函数 、 然后sub_140078CB0函数 跟进函…...

Javaweb基础-vue
Vue.js Vue是一套用于构建用户界面的渐进式框架。 起步 引入vue <head><script src"static/js/vue2.6.12.min.js"></script> </head> 创建vue应用 <body> <div id"index"><p>{{message}}</p> </div>…...

2. MySQL数据库基础
一、数据库的操作 1. 显示当前的数据库 SHOW DATABASES;2. 创建数据库 语法: CREATE DATABASE [IF NOT EXISTS] db_name [create_specification...];//create_specification包括:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_n…...

java集合进阶篇-《泛型》
个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、泛型的简要概述 三、泛型的基本概念 类型参数: 通配符: 边界: 使用泛型的好处: 四、泛型类 五、泛型方法 六、思考 七、疑惑 一、前言 泛型对于我来说又…...

pytorh学习笔记——cifar10(三)模仿VGGNet创建卷积网络
VGG16是由牛津大学视觉几何组(Visual Geometry Group)提出的一种深度卷积神经网络模型。 VGGNet 探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了 16~19 层深的卷积神经网络,同时拓展性又很强,迁移到其它图片…...

题目:连续子序列
解题思路: 首先,不能使用暴力枚举,时间为O(n2),超时。以下为正确做法: 假设找到一段区间(其和>m),如上图黄色部分,那么该区间加上i后面的元素形成的新区间和都>m&a…...

深入解析:Nacos AP 模式的实现原理与应用场景
优质博文:IT-BLOG-CN 一、CAP 基础 Nacos作为注册中心同时支持CP和AP模式。 Nacos通过不同的协议和机制来实现这两种模式,以满足不同的需求场景。 在Nacos中,默认情况下使用的是AP模式,通过Distro协议来实现。AP模式主要关…...
snmpnetstat使用说明
1.snmpnetstat介绍 snmpnetstat命令是用来查看snmp服务器的端口连接信息。 2.snmpnetstat安装 1.snmpnetstat安装 命令: yum -y install net-snmp net-snmp-utils [root@logstash ~]# yum -y install net-snmp net-snmp-utils Loaded plugins: fastestmirror Loading mi…...

linux线程 | 同步与互斥 | 互斥(下)
前言:本篇文章主要讲述linux线程的互斥的知识。 讲解流程为先讲解锁的工作原理, 再自己封装一下锁并且使用一下。 做完这些就要输出一堆理论性的东西, 但博主会总结两条结论!!最后就是讲一下死锁。 那么, 废…...
2024-10-17 问AI: [AI面试题] 讨论 AI 的挑战和局限性
文心一言 AI(人工智能)虽然取得了显著的进步,但仍面临多方面的挑战和局限性。以下是对AI挑战和局限性的详细讨论: 一、数据质量与可靠性 数据质量:AI系统依赖于高质量的数据进行训练和学习。如果数据质量低劣或包含…...
go基础(一)
包声明引入包函数变量语句&表达式注释 package main//包声明import "fmt"//引入包 //函数 func main() {/* 这是我的第一个简单的程序 */fmt.Println("Hello, World!") }基础语法 标记 go程序可以由多个标记组成,可以是关键字࿰…...
python忽略warnings 的方法
我在训练深度学习模型的时候一直出现这样的警告,但是不影响运行: UserWarning: Failed to load image Python extension: [WinError 127] 找不到指定的程序。 warn(f"Failed to load image Python extension: {e}") 要避免在 Python 程序运…...

2024年底蓝奏云最新可用API接口列表 支持优享版 无需手动抓取cookie
Lanzou Pro V1 接口列表 API状态版本路由获取文件与目录✅^1.0.1/v1/getFilesAndDirectories?url{}&page{}获取目录✅^1.0.0/v1/getDirectory?url{}获取文件✅^1.0.1/v1/getFiles?url{}&page{}搜索文件✅^1.0.0/v1/searchFile?url{}&wd{}依Id解析✅^1.0.2/v1/…...

Linux常用命令详细解析(含完整命令演示过程)
目录 1. 目录结构介绍 2. Linux命令基础 2.1 命令和命令行 2.2 格式 3. 常用命令 3.1 产看目录命令——ls 3.2 通配符 3.3 改变工作目录命令——cd 3.4 查看当前路径命令——pwd 3.5 创建新的目录命令——mkdir 3.6 创建文件目录命令——touch 3.7 查看…...

《使用Gin框架构建分布式应用》阅读笔记:p101-p107
《用Gin框架构建分布式应用》学习第7天,p101-p107总结,总计7页。 一、技术总结 1.StatusBadRequest vs StatusInternalServerError 写代码的时候有一个问题,什么时候使用 StatusBadRequest(400错误),什么时候使用 StatusIntern…...

014集——c#实现打开、另存对话框(CAD—C#二次开发入门)
如下图所示,运行后实现如下功能: 打开对话框,选择一个文件,并获取文件名变量。 打开另存对话框,输入路径和文件名,获取另存文件名变量。 部分代码如下: public static void Ofd(this Database…...

全面升级:亚马逊测评环境方案的最新趋势与实践
在亚马逊测评领域深耕多年,见证了无数环境方案的更迭与演变,每一次变化都体现了国人不畏艰难、勇于创新的精神。面对平台的政策调整,总能找到相应的对策。那么,当前是否存在一套相对稳定且高效的技术方案呢?答案是肯定…...
Java中的异步编程模型
1.什么是异步编程? 异步编程是一种编程模式,允许程序在等待某些操作(例如文件I/O或网络请求)完成时,不必停下来等待,而是继续执行其他任务。当异步操作完成时,回调函数或任务调度器会处理结果&…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...