【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法)

套餐管理业务开发

一、新增套餐

需求分析

套餐就是菜品的集合。后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在移动端会按照套餐分类来展示对应的套餐。

数据模型

新增套餐,其实就是将新增页面录入的套餐信息插入到setmeal表,还需要向setmeal_dish表中插入套餐和菜品关联数据,所以在新增套餐时,涉及到两个表:

setmeal(套餐表) setmeal_dish(套餐菜品关系表)

代码开发

所需要的类和接口:实体类SetmealDish、SetmealDto;Mapper接口SetmealDishMapper;业务层接口SetmealDishService;业务层实现类SetmealDishServiceImpl;控制层StemealController

前端页面和服务端的交互过程:

1.页面(backend/page/combo/add.html)发送ajax请求,请求服务端获取套餐分类数据并展示到下拉框中;

2.页面发送ajax请求,请求服务端获取菜品分类数据并展示到添加菜品窗口中;

3.页面发送ajax请求,请求服务端,根据菜品分类查询对应的菜品数据并展示到添加菜品窗口中;

4.页面发送请求并进行图片上传,请求服务端将图片保存到服务器;

5.页面发送请求进行图片下载,将上传的图片进行回显;

6.点击保存按钮,发送ajax请求,将套餐相关数据以json形式提交到服务端。

开发新增套餐功能,其实就是在服务端编写代码去处理前端页面发送的这6次请求。

点击新增套餐,前端页面发送的请求:

请求路径category/list?type=2  获得套餐分类数据  之前已经写过

请求路径category/list/?type=1 获得菜品分类数据

 点击添加菜品,发送的请求:

请求路径dish/list

 

    /**
     * 新增套餐中,根据条件查询菜品分类下对应的菜品数据
     * @param dish
     * @return
     */
    @GetMapping("/list")
    public R<List<Dish>> list(Dish dish){
        LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
        //查询条件
        queryWrapper.eq(dish.getCategoryId() != null,Dish::getCategoryId,dish.getCategoryId());
        queryWrapper.eq(Dish::getStatus,1); //查询在售的菜品

        //添加排序条件
        queryWrapper.orderByAsc(Dish::getSort).orderByDesc(Dish::getUpdateTime);

        List<Dish> list = dishService.list(queryWrapper);
        return R.success(list);
    }

 使用SetmealDto封装stemeal和stemealdish信息,返回给页面。

SetmealService实现类重写方法来保存两部分内容

 SetmealController方法

/**
 * 套餐管理业务开发
 */
@RestController
@RequestMapping("/setmeal")
@Slf4j
public class SetmealController {

    @Autowired
    private SetmealService setmealService;

    /**
     * 新增套餐
     * @param setmealDto
     * @return
     */
    @PostMapping
    public R<String> save(@RequestBody SetmealDto setmealDto){
        log.info("套餐信息:{}",setmealDto);
        setmealService.saveWithDish(setmealDto);//Service实现类重写的方法
        return R.success("新增套餐成功");
    }
}

二、套餐信息分页查询

需求分析

系统中的套餐数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般系统中都会以分页的方式来展示列表数据。

代码开发

前端页面和服务端的交互过程:

1.页面(backend/page/combo/list.html)发送ajax请求,将分页查询参数(page、pageSize、name)提交到服务端,获取分页数据;

2.页面发送请求,请求服务端进行图片下载,用于页面图片展示。

开发套餐信息分页查询功能,其实就是在服务端编写代码去处理前端页面发送的这2次请求。

查询套餐名称时,发送的请求

    /**
     * 套餐信息分页查询
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    @GetMapping("/page")
    public R<Page> page(int page,int pageSize,String name){
        Page<Setmeal> pageInfo = new Page<>(page,pageSize);
        Page<SetmealDto> setmealdtoPage = new Page<>();

        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        //查询条件
        queryWrapper.like(name != null,Setmeal::getName,name);
        //排序条件
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
        setmealService.page(pageInfo,queryWrapper);

        //对象拷贝
        BeanUtils.copyProperties(pageInfo,setmealdtoPage,"records");
        List<Setmeal> records = pageInfo.getRecords();
        List<SetmealDto> list = records.stream().map(item ->{
            SetmealDto setmealDto = new SetmealDto(); //new出来的setmealDto没有封装信息
            Long categoryId = item.getCategoryId();
            BeanUtils.copyProperties(item,setmealDto);//把item中除了categoryName属性的信息都赋值给setmealDto
            Category category = categoryService.getById(categoryId);

            if(category != null){
                String categoryName = category.getName();
                setmealDto.setCategoryName(categoryName); //把categoryName属性赋值给setmealDto
            }
            return setmealDto;
        }).collect(Collectors.toList());
        setmealdtoPage.setRecords(list);
        return R.success(setmealdtoPage);
    }

 当没有拷贝套餐分类名称的时候

使用对象拷贝,显示套餐分类名称

 三、删除套餐

需求分析

在套餐管理列表页面点击删除按钮,可以删除对应的套餐信息,也可以通过复选框选择多个套餐,点击批量删除按钮异常删除多个套餐。注意:对应状态为售卖中的套餐不能删除,需要先停售,然后才能删除。

代码开发

前端页面和服务端的交互过程:

删除单个/批量删除套餐时,页面发送ajax请求

 删除单个、批量删除套餐的请求信息可以发现,两种请求的地址和请求方式都是相同的,不同的是传递id的个数,所以在服务端可以提供一个方法来统一处理。

要删除套餐和套餐菜品表中的内容,在SetmealService中重写删除方法

    /**
     * 删除套餐
     * @param ids
     * @return
     */
    @DeleteMapping
    public R<String> remove(@RequestParam List<Long> ids){
        log.info("ids:{}",ids);
        setmealService.removeWithDish(ids);
        return R.success("删除套餐成功");
    }

 四、套餐单个/批量起售或者停售

代码开发

前端页面发送的请求

单个请求

 批量请求

 SetmealDishService实现类重写实现方法

    /**
     * 套餐单个/批量停售或者起售
     * @param status
     * @param ids
     */
    public void updateSetmealStatus(Integer status, List<Long> ids) {
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(ids != null,Setmeal::getId,ids);
        List<Setmeal> list = this.list(queryWrapper);

        for (Setmeal setmeal : list) {
            if(setmeal != null){
                setmeal.setStatus(status);
                this.updateById(setmeal);
            }
        }
    }

SetmealController方法

五、修改套餐信息

 代码开发

修改套餐信息,需要分两步完成,首先进行数据回显,然后再修改信息

数据回显

前端页面发送的请求

 SetmealDishService实现类重写实现方法

    /**
     * 修改套餐信息:数据回显 根据id查询套餐信息和对应的菜品信息
     * @param id
     * @return
     */
    public SetmealDto getByIdWithDish(Long id) {
        //从setmeal表中查setmeal信息,并将信息赋值给SetmealDto
        Setmeal setmeal = this.getById(id);
        SetmealDto setmealDto = new SetmealDto();
        BeanUtils.copyProperties(setmeal,setmealDto);

        //从setmealdish表中查菜品信息,并将信息赋值给SetmealDto
        LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SetmealDish::getSetmealId,setmeal.getId());
        List<SetmealDish> dishes = setmealDishService.list(queryWrapper);
        setmealDto.setSetmealDishes(dishes); //设置菜品信息
        return setmealDto;
    }

SetmealController方法 

 修改信息

前端页面发送的请求

  SetmealDishService实现类重写实现方法

    /**
     * 修改套餐信息
     * @param setmealDto
     */
    public void updateWithDish(SetmealDto setmealDto) {
        //修改除菜品外的其他基本信息
        this.updateById(setmealDto);

        //修改套餐中的菜品信息,采用的方法是首先删除数据表中的原来的菜品信息,然后再添加新的菜品信息
        LambdaQueryWrapper<SetmealDish> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(SetmealDish::getSetmealId,setmealDto.getId());
        setmealDishService.remove(queryWrapper);

        List<SetmealDish> dishes = setmealDto.getSetmealDishes();
        dishes = dishes.stream().map((item) ->{
            item.setSetmealId(setmealDto.getId());
            return item;
        }).collect(Collectors.toList());
        setmealDishService.saveBatch(dishes);
    }

 SetmealController方法 

EvilChou
关注 关注
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
5W字详细-瑞吉外卖-功能开发以及拓展功能
06-07
详细讲解瑞吉外卖开发过程,并提供不同的实现方式
瑞吉外卖】SpringBoot使用邮件发送短信验证码--完善用户登录功能
06-24
黑马程序员---瑞吉外卖--SpringBoot项目 新增sendMail()方法,用户登录时使用QQ邮件发送验证码,完善用户登录功能。 亲测有效!
瑞吉外卖-套餐管理-修改操作
ihopeyousuccess的博客
03-29 302
需要注意的是如果只是根据id查询Setmeal的数据,那么菜品信息就不能查询到,所以需要使用到setmealDish这一张表,将Dish也查出来。2. 显示页面原来的数据(setmeal原来的数据先显示)接下来是controller进行直接调用就好。如图所示,/后面跟的是setmeal的id。那么Controller层就直接调用就好。根据URL的id进行查询数据。首先查看网页请求的URL。所以需要注意请求路径。
瑞吉外卖项目实战说明图文详解
02-27
瑞吉外卖项目实战说明图文详解
Java黑马的瑞吉外卖项目(SpringBoot+MyBatis-Plus)
07-24
Java黑马的瑞吉外卖项目(SpringBoot+MyBatis-Plus)
java毕业设计-基于Spring Boot的移动流量套餐推荐系统源码+数据库+部署文档.zip
06-24
java毕业设计-基于Spring Boot的移动流量套餐推荐系统源码+数据库+部署文档.。已获通过的高分项目。 启动方式 环境要求:Java 11 后端使用 Spring Boot 框架,因此按照相应的启动方式运行即可。 接口测试方式 方式一:项目已集成 Swagger 文档,项目启动后在路由:/swagger-ui 或 /doc.html 即可打开 API 文档并用于测试 方式二:在 /http-client-test 目录下有已写好的 http 测试,可以通过 IDEA 的 http-client 直接测试
java 瑞吉外卖 day5 套餐管理业务 套餐新增,套餐分页查询 套餐修改 套餐停售起售设置 短信服务
m0_73859807的博客
12-20 813
/将每页个setmeal都拷贝到setmealDto里,并且查询对应的categoryName然后封装进setmealDto,在合并成集合。前面已经写了好几个分页查询了,这里查询的关键点,是套餐分类名称,不在套餐表中,我们要到别的表里拿,然后封装进setmealDto。//首先判断查询的内容有没有状态是在售的,如果在售,就抛自定异常。//将我们处理完成的集合,设置成新page的新records。//然后我们清除原来的套餐跟菜品联系数据 封装新的数据、//接下来我们查询套餐里的菜品信息。
体检套餐管理系统
dianweishen5957的博客
04-08 465
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 第五章项目 { public class HealthCheckSet { ...
黑马瑞吉外卖套餐信息的修改
jgdabc的博客
09-25 2019
首先这里是一个自动调用的挂载的,然后挂载这里就是有一个this.id尝试获取url定向来的id这个字段参数,我们前面已经看过了,这个字段其实已经传递过来了,那就是套餐的id。下面这里就是这个具体的跟进的方法,这个方法其实就是包含了两个操作,是根据传参来决定的,我们修改这里传入的参数不是add,所以会定位到下面的修改套餐这里,这里这个添加菜品具体的方法就写在这里了。继续往下看,这里就是我们的具体的方法,prams就是我们刚刚赋值给的参数,那么我们修改的数据也会被绑定到这里,这样就成功完成了数据的绑定传递。
瑞吉外卖--套餐的添加修改等功能,短信验证登录原理操作及用户地址管理功能
花花的小脑瓜的博客
03-12 638
瑞吉外卖--套餐的添加修改等功能,短信验证登录原理操作及用户地址管理功能
黑马瑞吉外卖-菜品管理-批量删除,批量启售停售套餐管理-修改套餐批量启售停售
maohe的博客
02-01 5864
瑞吉外卖的菜品管理批量删除和批量启售停售功能需求实现。
黑马瑞吉外卖源码及工程项目全套
07-17
瑞吉外卖的课上bug进行了修复,同时对留下的内容进行了补充完善,如订单系统,地址系统,分页查询之类的,都进行了测试和跑通
Java实训项目 瑞吉外卖(项目源代码+实训报告+SQL文件+实体E-R图)
07-07
Spring Boot开发外卖平台 1.数据库设计: 设计数据库模型,包括用户信息、餐厅信息、菜单信息、订单信息等。可以使用关系型数据库(如MySQL)或非关系型数据库(如MongoDB)存储数据。 2.创建Spring Boot项目: 使用Spring Initializr或其他工具创建一个新的Spring Boot项目。 3.客户端功能: 用户注册:提供用户注册页面,用户填写必要信息并保存到数据库中。 用户登录:提供用户登录页面,进行身份验证并生成认证令牌。 餐厅搜索:允许用户通过关键字搜索餐厅,并显示搜索结果。 订单下单:用户选择菜品、填写配送地址、支付方式等信息,生成订单。 4.后台管理功能: 餐厅管理:允许餐厅管理管理餐厅信息,添加、编辑和删除菜单等。 订单管理:允许管理员查看和处理订单,标记订单状态、分配配送员等。 数据统计:提供数据报表和图表,分析订单量、菜品热度等数据。 除了以上的基本功能外,你可以根据自己的业务需求进行功能扩展和优化。使用Spring Boot的优势是可以快速构建可靠、高效的Web应用程序,并且可以轻松集成各种第三方组件和服务。
基于java瑞吉外卖项目源码.zip
11-02
基于java瑞吉外卖项目源码.zip基于java瑞吉外卖项目源码.zip基于java瑞吉外卖项目源码.zip基于java瑞吉外卖项目源码.zip基于java瑞吉外卖项目源码.zip
瑞吉外卖已完成,请查收
05-15
bilibili的瑞吉外卖,自己写的接口,很遗憾没有支付界面,没机会练手,需要的话就拿去吧。注意修改数据库就好了,另外数据库中的所有主键id均使用的string,因为我自己做的时候,long类型出现了前后端数据精度丢失问题。关于数据库资源稍后分享,或者直接去黑马拿。加油!!
最新java项目-瑞吉外卖
05-07
最新java项目-瑞吉外卖 最新java项目-瑞吉外卖最新java项目-瑞吉外卖
java上手实战项目推荐苍穹外卖详细分析和对比瑞吉外卖
最新发布
05-03
苍穹外卖是一个模拟现实世界中外卖服务的全栈Java项目。它旨在通过模拟外卖服务的整个流程,包括用户下单、餐厅接单、配送员配送等,来展示Java在实际应用中的强大能力。项目通常包含前端用户界面、后端服务、数据库...
Java后端项目瑞吉外卖-修改菜品功能
pyscl01的博客
02-13 494
Java后端项目瑞吉外卖-修改菜品功能的详细实现
Java项目实战瑞吉外卖-05 菜品管理业务开发包含删除菜品和单个/批量停售启售方法
Hello World!
06-12 2597
文件上传(upload),是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用广泛。文件上传时,对页面的form表单有如下要求:method="post" 采用post方式提交数据enctype="multipart/form-data" 采用multipart格式上传文件type="file"
java项目实战瑞吉外卖 网盘下载
07-15
### 回答1: 瑞吉外卖是一个基于Java开发项目实战,适用于在线外卖订餐系统。该项目提供了用户注册、登录、浏览餐厅、查看菜单、下订单等功能。 首先,我们需要在网盘上下载瑞吉外卖的项目源代码文件。通过提供的下载链接,我们可以将项目源代码文件下载到本地。下载完成后,我们可以将文件解压缩,并使用Java开发工具(如Eclipse或IntelliJ IDEA)导入项目。 接下来,我们需要安装项目所需的Java开发环境。确保已经安装了JDK(Java Development Kit)和Maven(项目构建工具)。这样可以保证项目能够正常编译和运行。 在导入项目后,我们可以查看项目的目录结构。主要包括源代码、配置文件和静态资源文件等。在源代码文件夹中,我们可以找到各种Java类文件,包括控制器、实体类、服务类等。配置文件夹中包含项目的配置文件,用于配置数据库连接、日志记录等。静态资源文件夹中包含了项目所需的各种图片、样式表和JavaScript文件等。 在开始开发之前,我们需要先配置数据库。将提供的SQL脚本文件导入到MySQL数据库中,并在项目配置文件中修改数据库连接相关的配置信息。 接下来,我们可以根据需求对项目进行开发和定制化。例如,我们可以根据需要添加更多的功能模块,如优惠券管理、配送员管理等。我们也可以根据需求修改前端页面的样式和布局,以满足用户的需求。 开发完成后,我们可以使用Maven将项目打包成可执行的WAR文件。将WAR文件上传至服务器,并部署在Tomcat等Java Web服务器上。通过访问服务器的IP地址和端口号,我们就可以在浏览器中访问瑞吉外卖系统了。 总之,下载并实战瑞吉外卖项目需要下载源代码文件,并在Java开发工具中导入项目。然后,我们可以根据需求进行开发和定制化,并最终将项目打包部署在服务器上。最后,我们可以通过浏览器访问项目,体验瑞吉外卖系统的功能。 ### 回答2: 瑞吉外卖是一个基于Java语言开发项目实战,项目的主要目标是实现一个在线外卖订餐系统。用户可以通过网页或手机应用程序浏览餐厅菜单、下订单、查看订单状态等功能。 该项目的开发环境主要包括Java SE、Java EE、Spring框架和MySQL数据库。其中,Java SE用于实现基本的语言特性和数据处理操作,Java EE用于构建Web应用程序,Spring框架用于实现系统的MVC架构,MySQL数据库用于存储用户信息、菜品信息和订单数据等。 项目的实施步骤如下: 1. 需求分析:首先,根据用户的需求分析,确定项目的基本功能和需求。 2. 系统设计:基于需求分析的结果,进行系统设计,包括数据库设计、界面设计和系统架构设计等。 3. 环境搭建:安装配置Java开发环境,包括JDK、开发工具(如Eclipse或IntelliJ IDEA)、Web服务器(如Tomcat)和数据库管理系统(MySQL)。 4. 数据库建模:创建数据库表结构,定义各个表之间的关系。 5. 编码实现:根据系统设计的结果,进行编码实现,包括前端界面的开发和后端功能的开发。 6. 软件测试:对已实现的功能进行测试,包括单元测试、集成测试和系统测试等,保证系统的稳定性和可靠性。 7. 部署上线:将项目部署到服务器上,使用户可以通过网络访问系统。 8. 运维和优化:监控系统运行情况,对性能进行优化和改进。 最后,用户可以通过网盘下载瑞吉外卖的源代码和相关文档,以便学习和参考。项目实战瑞吉外卖开发过程将帮助开发者熟悉Java开发技术,并理解实际项目的需求分析、系统设计和开发实施等流程。

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

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

热门文章

  • 【Java】QueryWrapper方法解释 49151
  • 【数据结构】排序(直接插入、折半插入、希尔、冒泡、快速、直接选择、堆、归并、基数排序) 5220
  • Java集合体系 4366
  • 【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法) 4050
  • PriorityQueue(优先队列) 3034

最新评论

  • PriorityQueue(优先队列)

    tao87118: 你好,想请教一下,这个小根堆只是对于单个数据排序没有问题,那比如说我{0,1}, {1,1}, {0,2}, {1,2}, {0,3},,这样入队后,可能出来顺序就是{0,1}, {0,3} {0,2}, {1,2},, {1,1},因为它只是对比优先级了,没有考虑顺序了,那这种怎么解决了

  • 【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法)

    CSDNCR: 感谢 分享!!!必须点赞!!!!!

  • PriorityQueue(优先队列)

    watershed1993: 找了半天,楼主这篇是讲PriorityQueue 最为详细的! 感谢!

  • 【SpringBoot】 jetCache缓存解决循环依赖错误问题

    zhpzhp321: 非常不错

  • 【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法)

    正在学习的浅语: 大佬,这怎么知道前端需要那些数据呀

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

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

最新文章

  • 动态规划相关
  • 二叉树相关
  • 堆排序(Heap Sort)实现
2022年30篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码来宾seo网站推广推荐郑州网站建设设计推荐佛山网络推广报价南昌建站哪家好西宁百度标王报价海南网站seo优化报价坪山外贸网站建设推荐白银网站搭建哪家好长沙百度竞价包年推广多少钱马鞍山网页制作推荐白银外贸网站设计价格衡水设计公司网站推荐汕头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 网站制作 网站优化