SpringBoot+Vue项目外卖点餐系统

文末获取源码

开发语言:Java

开发工具:IDEA /Eclipse

数据库:MYSQL5.7

使用框架:springboot+vue

JDK版本:jdk1.8

前言介绍  

本文从用户的功能要求出发,建立了外卖点餐系统  ,系统中的功能模块主要是实现管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理、菜品管理、订单管理、配送单管理、商品评价管理,商家;首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理,用户;首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理、骑手;首页、个人中心、订单管理、配送单管理、商品评价管理等功能部分;经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。

系统功能设计 

软件的用户界面是最直接接触的对象,包括是否允许用户使用简单方便,请求的响应时间,主图像的整体质量,整体布局的质量。

外卖点餐系统   的设计基于现有的网络平台,可以实现用户管理及数据信息管理等功能。方便管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理、菜品管理、订单管理、配送单管理、商品评价管理有详细的了解及统计分析,随时查看信息状态。 

系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现外卖点餐系统 管理,使用户可以通过指令完成整个外卖点餐系统的操作。

从上面的描述中可以基本可以实现软件的功能:

1、开发实现外卖点餐系统的整个系统程序; 

2、管理员;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理、菜品管理、订单管理、配送单管理、商品评价管理等模块信息的查看及相应操作;

3、用户:实现首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理等相应操作;

4、商家:实现首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理等相应操作;

5、骑手;首页、个人中心、订单管理、配送单管理、商品评价管理等相应操作;

6、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行留言信息的查看及回复相应操作。

系统功能结构图

系统实现

用户前台功能模块

通过进入网站可以查看首页、商家、菜品、登录、后台管理等功能模块,如图1所示;通过点击登录可以填写账号、密码等详细信息,进行登录操作,如图2

登录界面图 

 

用户通过点击个人中心进入页面,可以查看个人信息、信息修改等信息,进行操作,如图1所示。用户通过点击菜品详情进入页面,可以填写名称、类型、口味、价格等信息,进行提交操作,如图

菜品详情界面图 

 

管理员功能模块

管理员通过后台登录窗口进行输入自己的账号信息、密码等信息,进行登录,如图

个人信息,管理员通过列表进行查看用户名等信息,进行查看、修改或删除操作,如图

 

用户管理,管理员通过用户管理可以在线查看账号、密码、姓名、性别、头像等信息,进行详情或修改、删除操作,如图

商家管理,管理员通过商家管理可以在线查看商家编号、密码、商家名称、图片等信息,进行查看或修改、删除操作,如图

 

菜品分类管理,管理员通过菜品分类管理可以在线查看类型等信息,进行查看或添加修改或删除,如图

菜品管理:通过列表可以获取名称、类型、图片、口味、价格等信息,进行查看、详情、修改或删除操作  ,如图

订单管理:通过列表可以获取名称、类型、图片、价格等信息,进行查看、详情、修改或删除操作  ,如图

商家功能模块

商家通过点击后台管理,进入页面可以进行首页、个人中心、菜品管理、订单管理、配送单管理、商品评价管理、我的收藏管理等功能模块,进行相对应操作,如图

 

菜品管理:通过菜品管理可以进行获取名称、类型、图片、口味等信息,如图

 

订单管理:商家通过列表可以获取名称、类型、图片、价格、购买数量等信息,进行查看订单管理等信息操作,如图

 

配送单管理:商家通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作,如图

 

用户功能模块

用户通过点击后台管理,进入页面可以进行首页、个人中心、订单管理、配送单管理、商品评价管理、我的收藏管理等功能模块,进行相对应操作,如图

 

订单管理:通过订单管理可以进行获取名称、类型、图片、价格、购买数量、总价格等信息,如图 

配送单管理:用户通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作,如图

 

商品评价管理:用户通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看商品评价管理等信息操作,如图

我的收藏管理:用户通过列表可以获取收藏id、收藏名称、收藏图片等信息,进行查看我的收藏管理等信息操作,如图

骑手功能模块

骑手通过点击后台管理,进入页面可以进行首页、个人中心、订单管理、配送单管理、商品评价管理等功能模块,进行相对应操作,如图 

订单管理:通过订单管理可以进行获取名称、类型、图片、价格、购买数量等信息,如图

 

配送单管理:骑手通过列表可以获取名称、图片、购买数量、商家编号等信息,进行查看配送单管理等信息操作,如图

 

 部分核心代码:   

/**
 * 配送单
 * 后端接口
 * @author 
 * @email 
 * @date 2020-09-23 18:00:25
 */
@RestController
@RequestMapping("/peisongdan")
public class PeisongdanController {
    @Autowired
    private PeisongdanService peisongdanService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,PeisongdanEntity peisongdan, HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("shangjia")) {
			peisongdan.setShangjiabianhao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("yonghu")) {
			peisongdan.setZhanghao((String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("qishou")) {
			peisongdan.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<PeisongdanEntity> ew = new EntityWrapper<PeisongdanEntity>();
		PageUtils page = peisongdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, peisongdan), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,PeisongdanEntity peisongdan, HttpServletRequest request){
        EntityWrapper<PeisongdanEntity> ew = new EntityWrapper<PeisongdanEntity>();
		PageUtils page = peisongdanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, peisongdan), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( PeisongdanEntity peisongdan){
       	EntityWrapper<PeisongdanEntity> ew = new EntityWrapper<PeisongdanEntity>();
      	ew.allEq(MPUtil.allEQMapPre( peisongdan, "peisongdan")); 
        return R.ok().put("data", peisongdanService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(PeisongdanEntity peisongdan){
        EntityWrapper< PeisongdanEntity> ew = new EntityWrapper< PeisongdanEntity>();
 		ew.allEq(MPUtil.allEQMapPre( peisongdan, "peisongdan")); 
		PeisongdanView peisongdanView =  peisongdanService.selectView(ew);
		return R.ok("查询配送单成功").put("data", peisongdanView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        PeisongdanEntity peisongdan = peisongdanService.selectById(id);
        return R.ok().put("data", peisongdan);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        PeisongdanEntity peisongdan = peisongdanService.selectById(id);
        return R.ok().put("data", peisongdan);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody PeisongdanEntity peisongdan, HttpServletRequest request){
    	peisongdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(peisongdan);
        peisongdanService.insert(peisongdan);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody PeisongdanEntity peisongdan, HttpServletRequest request){
    	peisongdan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(peisongdan);
        peisongdanService.insert(peisongdan);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody PeisongdanEntity peisongdan, HttpServletRequest request){
        //ValidatorUtils.validateEntity(peisongdan);
        peisongdanService.updateById(peisongdan);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        peisongdanService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<PeisongdanEntity> wrapper = new EntityWrapper<PeisongdanEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("shangjia")) {
			wrapper.eq("shangjiabianhao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("yonghu")) {
			wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
		}
		if(tableName.equals("qishou")) {
			wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
		}

		int count = peisongdanService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

 

一个完整的外卖系统,包括手机端,后台管理,api 基于spring bootvue的前后端分离的外卖系统 包含完整的手机端,后台管理功能 技术选型 核心框架:Spring Boot 数据库层:Spring data jpa/Spring data mongodb 数据库连接池:Druid 缓存:Ehcache 前端Vue.js 数据库:mysql5.5以上,Mongodb4.0(不要使用最新版4.2) 模块 flash-waimai-mobile 手机端站点 flash-waimai-manage后台管理系统 flash-waimai-api java接口服务 flash-waimai-core 底层核心模块 flash-waimai-generate 代码生成模块 快速开始 数据存储采用了mysql和mongodb,其中基础管理配置功能数据使用mysql,业务数据使用mongodb存储。 创建mysql数据库 CREATE DATABASE IF NOT EXISTS waimai DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE USER 'waimai'@'%' IDENTIFIED BY 'waimai123'; GRANT ALL privileges ON waimai.* TO 'waimai'@'%'; flush privileges; mysql数据库创建好了之后,启动flash-waimai-api服务,会自动初始化数据,无需开发人员自己手动初始化数据 安装mongodb并创建数据库:flash-waimai 使用mongorestore命令 导入mongodb数据,由于测试数据量较大,打包放在了百度云盘:链接:https://pan.baidu.com/s/1mfO7yckFL7lMb_O0BPsviw 提取码:apgd 下载后将文件解压到d:\elm,如下命令导入数据: mongorestore.exe -d flash-waimai d:\\elm 下载项目测试数据的图片(商家和食品图片):链接:https://pan.baidu.com/s/1rvZDspoapWa6rEq2D_5kzw 提取码:urzw ,将图片存放到t_sys_cfg表中system.file.upload.path配置的目录下 启动管理平台:进入flash-waimai-manage目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run dev启动成功后访问 http://localhost:9528 ,登录,用户名密码:admin/admin 启动手机端:进入flash-waimai-mobile目录:运行 npm install --registry=https://registry.npm.taobao.org运行npm run local启动成功后访问 http://localhost:8000
基于Springboot外卖点餐系统是一款致力于提供高效、便捷的外卖订餐服务的应用程序。该系统采用Springboot框架进行开发,使用MySQL作为数据库,Tomcat作为运行环境,Eclipse作为开发平台。该系统主要包括用户注册、菜品浏览、订单下单、支付结算等多种功能。 在该系统中,用户注册模块可以让用户进行注册并完善个人信息,方便进行外卖点餐和交流。菜品浏览模块可以让用户方便地浏览各类菜品,包括热菜、凉菜、饮料等,同时可以根据用户的需求进行菜品分类展示,例如按照口味、价格、品牌等多个维度进行分类展示。订单下单模块可以让用户方便地下单并选择配送方式,包括外卖配送和自提服务。支付结算模块可以让用户方便地进行订单的支付和结算。 该系统还具备良好的可扩展性、可维护性和稳定性。采用了Springboot框架和MySQL数据库,具有良好的性能和稳定性,同时也可以轻松地进行系统扩展和后期维护。此外,该系统还具备良好的安全性,采用了多种安全措施,如防止SQL注入、XSS攻击等,保证用户信息的安全性和机密性。 总之,基于Springboot外卖点餐系统是一款功能丰富、易用便捷、稳定可靠、安全高效的外卖点餐应用程序,为用户提供了一个高效、便捷、可靠的外卖点餐平台,提高了外卖点餐服务的效率和质量。该系统可以满足用户对菜品浏览、订单下单、支付结算等需求,是外卖点餐服务领域的一款优秀应用程序。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一季春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值