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或网络请求)完成时,不必停下来等待,而是继续执行其他任务。当异步操作完成时,回调函数或任务调度器会处理结果&…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 .requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
