商城项目-实现基本搜索

74 篇文章 9 订阅
订阅专栏

2.实现基本搜索

2.1.页面分析

2.1.1.页面跳转

在首页的顶部,有一个输入框:

在这里插入图片描述

当我们输入任何文本,点击搜索,就会跳转到搜索页search.html了:

并且将搜索关键字以请求参数携带过来:

在这里插入图片描述

我们打开search.html,在最下面会有提前定义好的Vue实例:

<script type="text/javascript">
    var vm = new Vue({
        el: "#searchApp",
        data: {
        },
        components:{
            // 加载页面顶部组件
            lyTop: () => import("./js/pages/top.js")
        }
    });
</script>

这个Vue实例中,通过import导入的方式,加载了另外一个js:top.js并作为一个局部组件。top其实是页面顶部导航组件,我们暂时不管

2.1.2.发起异步请求

要想在页面加载后,就展示出搜索结果。我们应该在页面加载时,获取地址栏请求参数,并发起异步请求,查询后台数据,然后在页面渲染。

我们在data中定义一个对象,记录请求的参数:

data: {
    search:{
        key:"", // 搜索页面的关键字
    }
}

我们通过钩子函数created,在页面加载时获取请求参数,并记录下来。

created(){
    // 判断是否有请求参数
    if(!location.search){
        return;
    }
    // 将请求参数转为对象
    const search = ly.parse(location.search.substring(1));
    // 记录在data的search对象中
    this.search = search;
    
    // 发起请求,根据条件搜索
    this.loadData();
}

然后发起请求,搜索数据。

methods: {
    loadData(){
        // ly.http.post("/search/page", ly.stringify(this.search)).then(resp=>{
        ly.http.post("/search/page", this.search).then(resp=>{
            console.log(resp);
        });
    }
}
  • 我们这里使用ly是common.js中定义的工具对象。
  • 这里使用的是post请求,这样可以携带更多参数,并且以json格式发送

在leyou-gateway中,添加允许信任域名:

在这里插入图片描述
并添加网关映射:

在这里插入图片描述

刷新页面试试:

在这里插入图片描述

因为后台没有提供接口,所以无法访问。没关系,接下来我们实现后台接口

2.2.后台提供搜索接口

2.2.1.controller

首先分析几个问题:

  • 请求方式:Post

  • 请求路径:/search/page,不过前面的/search应该是网关的映射路径,因此真实映射路径page,代表分页查询

  • 请求参数:json格式,目前只有一个属性:key-搜索关键字,但是搜索结果页一定是带有分页查询的,所以将来肯定会有page属性,因此我们可以用一个对象来接收请求的json数据:

    public class SearchRequest {
        private String key;// 搜索条件
    
        private Integer page;// 当前页
    
        private static final Integer DEFAULT_SIZE = 20;// 每页大小,不从页面接收,而是固定大小
        private static final Integer DEFAULT_PAGE = 1;// 默认页
    
        public String getKey() {
            return key;
        }
    
        public void setKey(String key) {
            this.key = key;
        }
    
        public Integer getPage() {
            if(page == null){
                return DEFAULT_PAGE;
            }
            // 获取页码时做一些校验,不能小于1
            return Math.max(DEFAULT_PAGE, page);
        }
    
        public void setPage(Integer page) {
            this.page = page;
        }
    
        public Integer getSize() {
            return DEFAULT_SIZE;
        }
    }
    
  • 返回结果:作为分页结果,一般都两个属性:当前页数据、总条数信息,我们可以使用之前定义的PageResult类

代码:

@RestController
@RequestMapping
public class SearchController {

    @Autowired
    private SearchService searchService;

    /**
     * 搜索商品
     *
     * @param request
     * @return
     */
    @PostMapping("page")
    public ResponseEntity<PageResult<Goods>> search(@RequestBody SearchRequest request) {
        PageResult<Goods> result = this.searchService.search(request);
        if (result == null) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        return ResponseEntity.ok(result);
    }
}

2.2.2.service

@Service
public class SearchService {

    @Autowired
    private GoodsRepository goodsRepository;

    public PageResult<Goods> search(SearchRequest request) {
        String key = request.getKey();
        // 判断是否有搜索条件,如果没有,直接返回null。不允许搜索全部商品
        if (StringUtils.isBlank(key)) {
            return null;
        }

        // 构建查询条件
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        
        // 1、对key进行全文检索查询
        queryBuilder.withQuery(QueryBuilders.matchQuery("all", key).operator(Operator.AND));
        
        // 2、通过sourceFilter设置返回的结果字段,我们只需要id、skus、subTitle
        queryBuilder.withSourceFilter(new FetchSourceFilter(
                new String[]{"id","skus","subTitle"}, null));
        
        // 3、分页
        // 准备分页参数
        int page = request.getPage();
        int size = request.getSize();
        queryBuilder.withPageable(PageRequest.of(page - 1, size));

        // 4、查询,获取结果
        Page<Goods> pageInfo = this.goodsRepository.search(queryBuilder.build());

        // 封装结果并返回
        return new PageResult<>(goodsPage.getTotalElements(), goodsPage.getTotalPages(), goodsPage.getContent());
    }
}

注意点:我们要设置SourceFilter,来选择要返回的结果,否则返回一堆没用的数据,影响查询效率。

2.2.3.测试

刷新页面测试:

在这里插入图片描述

在这里插入图片描述

数据是查到了,但是因为我们只查询部分字段,所以结果json 数据中有很多null,这很不优雅。

解决办法很简单,在leyou-search的application.yml中添加一行配置,json处理时忽略空值:

spring:
  jackson:
    default-property-inclusion: non_null # 配置json处理时忽略空值

结果:

在这里插入图片描述

2.3.页面渲染

页面已经拿到了结果,接下来就要渲染样式了。

2.3.1.保存搜索结果

首先,在data中定义属性,保存搜索的结果:

在这里插入图片描述
loadData的异步查询中,将结果赋值给goodsList

在这里插入图片描述

2.3.2.循环展示商品

在search.html的中部,有一个div,用来展示所有搜索到的商品:

在这里插入图片描述

可以看到,div中有一个无序列表ul,内部的每一个li就是一个商品spu了。

我们删除多余的,只保留一个li,然后利用vue的循环来展示搜索到的结果:

在这里插入图片描述

2.3.3.多sku展示

2.3.3.1.分析

接下来展示具体的商品信息,来看图:

在这里插入图片描述

这里我们可以发现,一个商品位置,是多个sku的信息集合。当用户鼠标选择某个sku,对应的图片、价格、标题会随之改变!

我们先来实现sku的选择,才能去展示不同sku的数据。

在这里插入图片描述

可以看到,在列表中默认第一个是被选中的,那我们就需要做两件事情:

  • 在搜索到数据时,先默认把第一个sku作为被选中的,记录下来

  • 记录当前被选中的是哪一个sku,记录在哪里比较合适呢?显然是遍历到的goods对象自己内部,因为每一个goods都会有自己的sku信息。

2.3.3.2.初始化sku

查询出的结果集skus是一个json类型的字符串,不是js对象
在这里插入图片描述

我们在查询成功的回调函数中,对goods进行遍历,把skus转化成对象,并添加一个selected属性保存被选中的sku:

在这里插入图片描述

在这里插入图片描述

2.3.3.3.多sku图片列表

接下来,我们看看多个sku的图片列表位置:

在这里插入图片描述

看到又是一个无序列表,这里我们也一样删掉多余的,保留一个li,需要注意选中的项有一个样式类:selected

我们的代码:

<!--多sku图片列表-->
<ul class="skus">
    <li :class="{selected: sku.id == goods.selected.id}" v-for="sku in goods.skus" :key="sku.id"
        @mouseEnter="goods.selected=sku">
        <img :src="sku.image">
    </li>
</ul>

注意:

  • class样式通过 goods.selected的id是否与当前sku的id一致来判断
  • 绑定了鼠标事件,鼠标进入后把当前sku赋值到goods.selected

2.3.4.展示sku其它属性

现在,我们已经可以通过goods.selected获取用户选中的sku,那么我们就可以在页面展示了:

在这里插入图片描述

刷新页面:

在这里插入图片描述

看起来很完美是吧!

但其实有一些瑕疵

2.3.5.几个问题

2.3.5.1.价格显示的是分

首先价格显示就不正确,我们数据库中存放的是以分为单位,所以这里要格式化。

好在我们之前common.js中定义了工具类,可以帮我们转换。

改造:

在这里插入图片描述

结果报错:

在这里插入图片描述

为啥?

因为在Vue范围内使用任何变量,都会默认去Vue实例中寻找,我们使用ly,但是Vue实例中没有这个变量。所以解决办法就是把ly记录到Vue实例:

在这里插入图片描述
然后刷新页面:

在这里插入图片描述

2.3.5.2.标题过长

标题内容太长了,已经无法完全显示,怎么办?

截取一下:
最好在加个悬停展示所有内容的效果

2.3.5.3.sku点击不切换

还有一个错误比较隐蔽,不容易被发现。我们点击sku 的图片列表,发现没有任何变化。

这不科学啊,为什么?

通过控制台观察,发现数据其实是变化了,但是Vue却没有重新渲染视图。

这是因为Vue的自动渲染是基于对象的属性变化的。比如页面使用GoodsList进行渲染,如果GoodsList变化,或者其内部的任何子对象变化,都会Vue感知,从而从新渲染页面。

然而,这一切有一个前提,那就是当你第一次渲染时,对象中有哪些属性,Vue就只监视这些属性,后来添加的属性发生改变,是不会被监视到的。

而我们的goods对象中,本身是没有selected属性的,是我们后来才添加进去的:
在这里插入图片描述
这段代码稍微改造一下,即可:

在这里插入图片描述

也就是说,我们先把selected属性初始化完毕,然后才把整个对象赋值给goodsList,这样,goodsList已初始化时就有selected属性,以后就会被正常监控了。

在这里插入图片描述

框架 day81 涛涛商城项目-实现首页搜索功能,商品详情,描述,规格展示
飛白的学习笔记
01-01 3602
淘淘商城第九天                                      讲师:入云龙 今天的内容: 1、在taotao-portal工程中调用taotao-search工程发布的服务。实现商品搜索功能。 2、点击商品的图片,打开商品详情页面 a)      商品基本信息 b)      延迟加载商品详情。延迟一秒加载使用ajax c)      商品的规格参数。按
商城-Elasticsearch-实现基本搜索
shenzhen_zsw的专栏
06-17 3054
商城-Elasticsearch-实现基本搜索 2.实现基本搜索2.1.页面分析2.1.1.页面跳转2.1.2.发起异步请求2.2.后台提供搜索接口2.2.1.controller2.2.2.service2.2.3.测试2.3.页面渲染2.3.1.保存搜索结果2.3.2.循环展示商品2.3.3.多sku展示2.3.3.1.分析2.3.3.2.初始化sku2.3.3.3.多sku图片列表2.3.4...
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十五(实现商品页面搜索功能,以及分页功能)(1)
2401_84097427的博客
04-19 740
showMore: false //是否显示更多。
创建一个存储过程proc_goods_search,用“keyword”称作为输入,用来查询所有产品名称中包含该Keyword的订货情况...
weixin_35756373的博客
01-12 170
创建存储过程的语法如下: CREATE PROCEDURE proc_goods_search (IN keyword VARCHAR(255)) BEGIN SELECT * FROM orders WHERE product_name LIKE CONCAT('%', keyword, '%'); END 说明: IN keyword VARCHAR(255) 表示存储过程...
es——java实现基本搜索功能
LINING_GG的博客
12-12 3987
es——java实现基本搜索功能
第18天-商城业务(商品检索服务,基于Elastic Search完成商品检索)
zenggeweiss的博客
03-10 839
商品检索服务,基于Elastic Search完成商品检索
ElasticSearch——京东商城搜索项目实战
万里顾一程的博客
11-10 3051
文章目录ElasticSearch——京东商城搜索项目实战1、项目搭建2、爬取数据3、编写业务4、前后端交互5、关键字高亮6、最终效果 ElasticSearch——京东商城搜索项目实战 技术栈: SpringBoot 2.5.6 ElasticSearch 7.8.0 Vue 1、项目搭建 1、新建一个Spring Boot 项目 2、导入依赖 ​ 2.1、 修改Springboot中的ElasticSearch版本和本地的版本一致 <properties> <java.
JavaWeb音乐商城项目-音乐海
07-06
【JavaWeb音乐商城项目-音乐海】是一个使用JavaWeb技术构建的在线音乐商店应用,它主要基于SSM(Spring、SpringMVC、MyBatis)框架进行开发。这个项目是针对Java课程设计或大作业而设计的,旨在帮助学生理解和实践...
毕设项目-购物商城电商项目
01-15
《毕设项目-购物商城电商系统详解》 在信息技术领域,电子商务系统是现代商业不可或缺的一部分。本毕设项目——购物商城电商系统,采用的是经典的Java Web技术栈,以Spring、SpringMVC和MyBatis为核心,配合MySQL...
python项目源码-51商城的程序.rar
06-07
【标题】"Python项目源码-51商城的程序.rar" 涉及的主要知识点是Python编程语言在实际项目中的应用,尤其是电商系统的实现。在这个项目中,开发者可能使用了Python来构建一个模拟51商城的后端服务,可能包括用户管理...
THML+CSS静态页面实战项目-小米商城
05-20
在创建小米商城页面时,我们需要用到如`<header>`、`<nav>`、`<section>`、`<article>`、`<aside>`和`<footer>`等语义化的标签,它们有助于搜索引擎理解和呈现页面内容,同时提高可访问性。 接着,CSS(Cascading ...
uniapp-仿京东商城首页、分类页实现
最新发布
06-20
1. **导航栏**:京东商城的顶部通常包含品牌Logo、搜索框、购物车图标和用户中心等元素。在uniapp中,可以使用`u-navbar`组件来创建自定义导航栏,并通过事件监听处理用户交互。 2. **轮播图**:首页往往有动态展示...
商城】Elasticsearch搜索引擎
一个人的人生
01-16 673
Elasticsearch作为商城核心框架,主要应用在商城搜索商品搜索、订单搜索、店铺搜索搜索场景,起到支撑核心业务的重要作用。下面以为Elasticsearch 6.x为例搭建一套完整的搜索引擎。 系统参数配置 (1)打开/etc/security/limits.conf,在文件末尾,修改对应参数 soft nofile 65536, 可以适当增大到2倍; hard nofile 65536, 可以适当增大到2倍; (2)配置虚拟内存大小 打开/etc/sysctl.conf在文件最后添加一行
基于SpringCloud+ElasticSearch+Vue分布式微服务全品类购物商城设计-计算机毕业源码设计
热门推荐
计算机源码设计案例的博客
02-09 1万+
开发工具: Idea + WebStorm + Mysql5.6 + Redis + RabbitMQ + ElasticSearch + Nginx反向代理服务器 这是一个基于SpringCloud分布式微服务框架开发的一个购物商城网站,前端开发技术vue实现ui。项目工程量很大,涉及的技术点很多,所以这里我们这个项目实现了最核心的功能,包括管理员再后台进行商品的添加维护操作,商品信息包括了Spu信息和Sku信息,不了解这个概念的可以百度下,用户在前台可以注册登录,注册的时候需要用户手机验证码,这个.
ElasticSearch查询实战之电商商城商品搜索
程序员小强的博客
01-05 8405
1.简介 Elasticsearch是一个基于Lucene的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎,在前面的文章中讲解了单机、集群搭建、DSL语句、分词器、以及整合SpringBoot的Demo。 Elasticsearch专题篇 ElasticSearch基本概念(索引,分片,节点,倒排索引…) ElasticSearch7.x单机版安装 ElasticSearch7.x高可用集群版搭建 Elasticsearch 7x 配置文件详解 Elasticsearch客户端工具之kibana E
京东的商品搜索功能是如何实现的_如何为 app 设计一个合适的搜索功能?
weixin_39674978的博客
12-04 444
上周去一位朋友公司,帮他们看看客户端新的设计方案。他们对搜索功能的设计一直不太满意,总希望将很多功能、设计融入进去。这些功能点单独来看每一个都很正常,但放在一起却一点也不协调,于是和大家一起花了一个多小时重新对搜索功能做了一次深入的分析。这是一个非常有趣的讨论,想和大家也分享一下。搜索几乎是每款 app 都会涉及到的一个功能模块,从最开始的功能提供到如今的运营阵地,搜索已经成为承接用户需求、引导用...
谷粒商城--整合Elasticsearch和商品的上架
全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战
09-18 2156
,数据库创建索引,增加搜索速度。 是根据关键字去找文档,然后记录一下出现的位置和次数。根据关键字去找文档,然后记录一下出现的位置和次数ElasticSearch中一个重要的概念 : ,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是。首先弄懂几个概念,如果类比现代汉语词典的话,那么就相当于,相当于,相当于词典的,相当于:ES工作原理还是很复杂的,现阶段我们学会使用即可,到后期准备面试了,在继续深入学习! ES 查看elasticsearch版本信息: http://192.
ElasticSearch零基础至电商项目实战(含ES集群搭建)
10-03
本课程提供所有代码笔记素材以及答疑服务 涉及知识点如下: 1、ElasticSearch下载安装(window以及linux下安装) 2、集群环境搭建 3、客户端Kibana安装与使用 4、集群管理插件head安装使用 5、java api 操作 ES 6、电商项目实战应用等等 ...
基于javaweb的网上商城设计与实现项目
06-30
### 回答1: 基于JavaWeb的网上商城设计与实现项目需求如下: 1.前端设计:通过HTML、CSS和JavaScript等技术,设计一个友好、美观且易于使用的商城界面,包括商品展示、购物车、下单结算、用户登录注册等功能。 2.后台管理系统:实现一个后台管理系统,管理员可以对商品信息、订单管理、用户管理等进行操作和管理,保证商城运营的正常进行。 3.商品管理:管理员可以对商品信息进行添加、删除、修改和查询,包括商品名称、价格、库存、图片等信息。 4.购物车功能:用户可以将商品添加到购物车中,可以随时查看购物车中的商品,也可以对商品数量进行增加或减少。 5.用户登录注册:用户可以注册新账号,通过账号和密码登录,同时应该有忘记密码的找回功能,并且确保用户的密码安全性。 6.订单管理:用户可以在购物车结算时生成订单,后台管理员可以查看所有订单、进行订单处理、发货等操作。 7.支付功能:集成第三方支付接口,实现用户在线支付功能,确保交易安全和及时到账。 8.数据存储:使用关系型数据库存储商品信息、用户信息、订单信息等数据。 9.系统安全:保证用户数据的安全性,对用户密码进行加密存储,并使用防止SQL注入等安全措施。 10.性能优化:对系统进行性能优化,减少响应时间和内存占用,提高用户体验。 整个项目实现可以按照模块划分,采用分层架构,前端与后台之间通过接口进行数据交互。同时,还需要测试工程师进行系统测试,确保系统功能的正常运行。以上是基于JavaWeb的网上商城设计与实现项目基本需求,通过合理的规划和实施,使得网上商城能够实现商品展示、订单管理、用户交互等功能,提供便捷、安全的购物体验。 ### 回答2: 基于JavaWeb的网上商城设计与实现项目涉及到多个方面的内容。首先,需要进行数据库设计,包括商品表、用户表、订单表等。商品表需要存储商品基本信息,如商品名称、价格、库存等;用户表需要存储用户的基本信息,如用户名、密码、地址等;订单表需要存储用户的购买订单信息,如订单编号、商品信息、数量等。 其次,需要实现用户注册和登录功能。用户注册时,需要验证用户名是否已存在,并将用户输入的信息存入数据库中的用户表;用户登录时,需要验证用户名和密码是否匹配,验证成功后可以进入网上商城进行购物。 接着,需要实现商品分类和商品搜索功能。商品分类可以按照商品的不同属性进行分类,如按照商品类型、品牌等;商品搜索可以根据用户输入的关键字查询相关商品,并展示在页面上。 然后,需要实现购物车和订单功能。购物车可以记录用户选择的商品和对应的数量,用户可以将商品加入购物车并随时查看、修改;订单功能可根据用户购买的商品生成订单,并计算总金额,用户可以选择支付方式完成订单。 同时,还需要实现用户评价和售后服务功能。用户可以对购买的商品进行评价,评价内容包括商品质量、服务态度等;售后服务可以提供商品退换货、维修等服务,用户可以根据需要提交相应的申请。 最后,需要进行系统性能优化和安全性设计。系统性能优化可以通过对数据库索引的优化、页面静态化等方式提高系统响应速度;安全性设计可以通过密码加密、用户权限管理等手段确保用户的账号信息安全。 综上所述,基于JavaWeb的网上商城设计与实现项目需要考虑到数据库设计、用户注册和登录、商品分类和搜索、购物车和订单、用户评价和售后服务、系统性能优化以及安全性设计等方面。通过合理的规划和实施,可以实现一个功能完善、性能优越、安全可靠的网上商城

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • CMS-项目的技术架构 9699
  • C++经典算法题-输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数 9349
  • C++经典算法题-求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如 2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 9216
  • 快速学习-MetaMask的安装与使用 9071
  • IDEA-代码自动补全设置 9044

分类专栏

  • 项目 74篇
  • 快速学习 751篇
  • 经典面试题 113篇
  • 翻译 3篇
  • 异常问题 4篇
  • JDK1.9 94篇
  • PHP 100篇
  • Web编程 5篇
  • 速读原著 287篇
  • Java工具集 94篇
  • GO 8篇
  • 前端基础 152篇
  • 大数据 66篇
  • 经典算法题 83篇
  • Java基础 42篇
  • IDEA 9篇
  • 经典笔试题 33篇
  • C++ 127篇
  • 性能优化 37篇
  • JVM性能调优 32篇
  • 人工智能 4篇
  • Docker 7篇
  • 数据结构与算法 24篇
  • 软考 79篇
  • ElasticSearch(7.2.2) 38篇
  • 数据库 162篇
  • 设计模式 23篇

最新评论

  • C++经典算法题-输入两个正整数m和n,求其最大公约数和最小公倍数。

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/7997365, 请多输出高质量博客, 帮助更多的人

  • 快速学习Ant Design-布局

    薛定谔的猫7081: 找到了吗,哥们

  • 快速学习Ant Design-布局

    薛定谔的猫7081: 找到了吗,哥们

  • 快速学习Ant Design-布局

    薛定谔的猫7081: 他这有问题

  • C++经典算法题-求一个3*3矩阵对角线元素之和

    宅阳: 这个不是c++啊,c语言吧

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 翻译: Nacos版本发布-0.2.1-2018年8月28号
  • 翻译: Nacos版本发布-0.2.0-2018年8月15号
  • 翻译: Nacos版本发布-0.1.0-2018年7月20号
2021年99篇
2020年1533篇
2019年842篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码福永网站优化软件塘坑如何制作网站东莞关键词按天计费福田关键词按天计费南山SEO按天计费龙华网站优化推广广州网站优化按天计费坑梓网站搜索优化坪山网站排名优化南山SEO按效果付费宝安高端网站设计龙华企业网站改版广州百度竞价包年推广南澳关键词排名盐田网站建设设计大浪网站设计坑梓优化广州建网站木棉湾seo排名坂田网站优化软件沙井网页制作沙井阿里店铺托管丹竹头关键词按天扣费南联建设网站塘坑关键词按天扣费惠州企业网站制作深圳网站制作南山关键词排名东莞百搜词包福永外贸网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化