作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码

项目编号:BS-SC-023

前言:

随着21世纪的进步,社会的生活节奏越来越快,网络的迅速崛起,互联网已日益成为提供信息的最佳渠道和连步进去传统的流通领域,传统的餐饮业也面连着巨大的挑战,网上订餐主要是针对白领还有大学生这些特定群体,一些白领在中午时间或者晚上高峰时间就餐,许多顺客由于高峰时间拥挤根本没时间来享受美味,这样既可以提前订餐不浪费中午午休的时间,也可以和同事加深感情,更可以每天换各种各样的菜式,保证每天工作的效率和身体的健康,这些问题就产生了快捷订餐的要求,最快的方式莫过于利用计算机网络,将餐饮业和计算机网络结合起来,就形成了网上订餐系统,能足不出户,轻松闲逸地实现自己订购餐饮和食品(包括饭、菜、众饭便当等)。网上订餐不仅减少了传统店面所需面临的租金问题,还能提供24小时不打烊服务,让顾客随时随地点餐的同时,也为商家减少了许多负担。

一,项目简介

本项目主要基于Springboot框架开发和实现了一个三方的美食商城系统,主要包含买方,卖方,管理员三种用户角色,不同的角色在系统中操作的功能模块是不一样的。

买方用户需要注册登陆后方可进行相应的操作,主要包含餐品分类浏览,详情查看,加入购物车,联系商家,查看自己的订单等功能,也可对餐品进行相应评论操作。

卖房用户注册登陆后可以进行相应的售卖商品操作,主要包含添加商品,查看购买我商品的订单信息,对发布的商品进行维护管理等功能。

管理员用户登陆系统后台,主要进行用户管理,商品类型管理,商品管理,订单管理,评论管理,系统管理,角色管理,权限管理,日志管理等相关功能模块。

系统整体功能完整,实现了一个基于买房,商家和平台用户的几种不同角色的应用,很适合做毕设。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Bootstrap+Ajax

三,系统展示

系统首页

注册登陆

浏览商品添加购物车

查看购物车

我的订单

个人中心

商品评论

卖家登陆

发布售卖 商品

查看己售订单

商品信息维护

后台管理系统-用户登陆

后台管理首页

菜单管理

角色管理

管理员管理

分类管理

商品管理

用户管理

新闻公告管理

订单管理

四,核心代码展示

package com.dong.controller.admin;import com.dong.config.TitleConfig;
import com.dong.exception.CodeMsg;
import com.dong.exception.Result;
import com.dong.pojo.Category;
import com.dong.service.CategoryService;
import com.dong.utils.CategoryUtil;
import com.dong.utils.ValidataUtil;
import com.dong.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;/*** 分类管理控制器*/
@Controller
@RequestMapping("admin/category")
public class CategoryController {@Autowiredprivate TitleConfig titleConfig;@Autowiredprivate CategoryService categoryService;@GetMapping("list")public String list(@RequestParam(value ="name",defaultValue = "") String name, PageResult pageResult, Model model){model.addAttribute("title",titleConfig.getCategoryTitle() );model.addAttribute("name",name );model.addAttribute("pageResult", categoryService.selectPage(name, pageResult));model.addAttribute("parentList", CategoryUtil.getParentCategory(categoryService.selectAll()));return "/admin/category/list";}@GetMapping("add")public String add(Model model){model.addAttribute("parentList",  CategoryUtil.getParentCategory(categoryService.selectAll()));return "/admin/category/add";}@PostMapping("add")@ResponseBodypublic Result<Boolean> add(Category category){CodeMsg validata = ValidataUtil.validata(category);if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){return Result.exception(validata);}try {categoryService.saveCategory(category);}catch (Exception e){return Result.exception(CodeMsg.ADMIN_CATEGORY_ADD_ERROR);}return Result.success(true);}@GetMapping("edit")public String edit(Model model,@RequestParam(value = "id",required = true) Integer id){model.addAttribute("category", categoryService.selectCategoryById(id));model.addAttribute("parentList", CategoryUtil.getParentCategory(categoryService.selectAll()));return "/admin/category/edit";}@PutMapping("edit")@ResponseBodypublic Result<Boolean> edit(Category category){CodeMsg validata = ValidataUtil.validata(category);if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){return Result.exception(validata);}try {categoryService.updateCategory(category);}catch (Exception e){Result.exception(CodeMsg.ADMIN_CATEGORY_EDIT_ERROR);}return Result.success(true);}@DeleteMapping("delete")@ResponseBodypublic Result<Boolean> delete(@RequestParam(value = "id",required = true) Integer id){try {categoryService.deleteCategory(id);}catch (Exception e){Result.exception(CodeMsg.ADMIN_CATEGORY_DELETE_ERROR);}return Result.success(true);}}

package com.dong.controller.admin;import com.dong.config.TitleConfig;
import com.dong.exception.Result;
import com.dong.service.CommentService;
import com.dong.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;/*** 评论控制器*/
@Controller
@RequestMapping("admin/comment")
public class CommentController {@Autowiredprivate CommentService commentService;@Autowiredprivate TitleConfig titleConfig;@GetMapping("list")public String list(PageResult pageResult, @RequestParam(value = "name",required = false,defaultValue = " ") String name, Model model){model.addAttribute("title",titleConfig.getCommentTitle());model.addAttribute("name",name );model.addAttribute("pageResult",commentService.selectPage(pageResult,name));return "admin/comment/list";}@DeleteMapping("delete")@ResponseBodypublic Result<Boolean> delete(@RequestParam(value = "id",required = true)Integer id){commentService.deleteComment(id);return Result.success(true);}
}
package com.dong.controller.admin;import com.dong.config.TitleConfig;
import com.dong.exception.CodeMsg;
import com.dong.exception.Result;
import com.dong.service.GoodService;
import com.dong.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;/*** 商品管理控制器*/
@RequestMapping("admin/good")
@Controller
public class GoodController {@Autowiredprivate GoodService goodService;@Autowiredprivate TitleConfig titleConfig;@GetMapping("list")public String list(Model model, @RequestParam(value = "name",required = false,defaultValue = "") String name, PageResult pageResult){model.addAttribute("title", titleConfig.getGoodTitle());model.addAttribute("name",name );model.addAttribute("pageResult",goodService.selectPages(pageResult,name ));return "/admin/good/list";}@DeleteMapping("delete")@ResponseBodypublic Result<Boolean> delete(@RequestParam(value = "id") Integer id){try {goodService.deleteGood(id);} catch (Exception e) {return Result.exception(CodeMsg.ADMIN_GOODS_DELETE_ERROR);}return Result.success(true);}
}
package com.dong.controller.admin;import com.dong.constant.SessionConstant;
import com.dong.exception.CodeMsg;
import com.dong.exception.Result;
import com.dong.listener.SessionListener;
import com.dong.pojo.User;
import com.dong.service.LogService;
import com.dong.service.UserService;
import com.dong.utils.StringUtil;
import com.dong.utils.ValidataUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;
import java.util.Date;/*** 系统控制器*/
@Controller
@RequestMapping("system")
public class SystemController {@Autowiredprivate UserService userService;@Autowiredprivate LogService logService;Logger logger= LoggerFactory.getLogger(UserController.class);/*** 管理员登录* @param user* @param cpacha* @param session* @return*/@PostMapping(value = "/login_form")@ResponseBodypublic Result<Boolean> Login(User user, String cpacha,HttpSession session){CodeMsg validata = ValidataUtil.validata(user);if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){return Result.exception(validata);}if(StringUtils.isEmpty(cpacha)){return Result.exception(CodeMsg.CPACHA_EMPTY);}Object adminCpacha =session.getAttribute("admin_login");if(adminCpacha==null){return Result.exception(CodeMsg.SESSION_EXPIRED);}if(!cpacha.equalsIgnoreCase(adminCpacha.toString())){return Result.exception(CodeMsg.CPACHA_ERROR);}User users = userService.selectUserByName(user.getUsername());if(users==null){return Result.exception(CodeMsg.ADMIN_USERNAME_EXIST);}if(!users.getPassword().equals(user.getPassword())){return Result.exception(CodeMsg.ADMIN_PASSWORD_ERROR);}if(users.getStatus()==User.ADMIN_USER_STATUS_UNABLE){return Result.exception(CodeMsg.ADMIN_USER_UNABLE);}//检查一切符合,可以登录,将用户信息存放至sessionsession.setAttribute(SessionConstant.USER_SESSION, users);//销毁验证码session.removeAttribute("admin_login");logger.info("用户成功登录,user="+users);logService.addLog(user.getUsername(),"【"+user.getUsername()+"】"+"用户在"+ StringUtil.dataFormat(new Date(), "yyyy-MM-dd HH:mm:ss")+"登录系统!");return Result.success(true);}/*** 后台主页* @param model* @return*/@GetMapping(value = "index")public String index(Model model){model.addAttribute("userTotal", userService.selectUserTotal());model.addAttribute("operatorLogTotal", logService.selectLogTotal());model.addAttribute("operatorLogs", logService.selectRecentLog());model.addAttribute("onlineUserTotal", SessionListener.onlineUserCount);return "admin/system/index";}/*** 修改信息* @param user* @param session* @return*/@PutMapping(value = "update_userinfo")@ResponseBodypublic Result<Boolean> update_userinfo(User user,HttpSession session){User users =(User) session.getAttribute(SessionConstant.USER_SESSION);if(userService.selectUserByName(user.getUsername()) != null){return  Result.exception(CodeMsg.ADMIN_USERNAME_EXIST);}users.setImage(user.getImage());users.setEmail(user.getEmail());users.setMobile(user.getMobile());userService.updateUser(user);logService.addLog(user.getUsername(),"【"+user.getUsername()+"】"+"用户在"+ StringUtil.dataFormat(new Date(), "yyyy-MM-dd HH:mm:ss")+"修改了自己的信息!");return Result.success(true);}/*** 修改密码* @param oldpwd* @param newpwd* @param id* @param session* @return*/@PutMapping(value = "update_pwd")@ResponseBodypublic Result<Boolean> update_pwd(@RequestParam(value = "oldPwd",required = true) String oldpwd,@RequestParam(value = "newPwd",required = true) String newpwd,@RequestParam(value = "id",required = true) Integer id,HttpSession session){User user =(User) session.getAttribute(SessionConstant.USER_SESSION);if(!user.getPassword().equals(oldpwd)){return Result.exception(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);}if(StringUtils.isEmpty(newpwd)){return Result.exception(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);}if(newpwd.length()<6){return Result.exception(CodeMsg.ADMIN_PASSWORD_MINLENGTH);}if(newpwd.length()>18){return Result.exception(CodeMsg.ADMIN_PASSWORD_MAXLENGTH);}User user1 = new User();user1.setId(id);user1.setPassword(newpwd);userService.updateUser(user1);user.setPassword(newpwd);logService.addLog(user.getUsername(),"【"+user.getUsername()+"】"+"用户在"+ StringUtil.dataFormat(new Date(), "yyyy-MM-dd HH:mm:ss")+"更新了自己的密码!");return Result.success(true);}/*** 退出登录* @param session* @return*/@GetMapping(value = "logout")public String logout(HttpSession session){session.removeAttribute(SessionConstant.USER_SESSION);return "redirect:login";}
}

五,项目总结

在国外,许多知名餐饮企业多年前就开始提供网上订餐服务了,众所周知,肯德基、麦当劳等快餐巨头是最早开始的。现在网上订餐对餐饮企业的门槛不断降低,越来越多的餐饮企业开始提供网上订餐服务。人们只需一部电脑和一张银行卡,就可全天订座。以往一家有名的餐厅,你需要提前很多时间或安排人手前往餐厅预定,这种做法大大影响了办事效率,与现代人的生活节奏不符。如今人们只需提前登录该餐厅网站预定,而不是把大量时间浪费在无谓的路程上。网上订餐的流程一般是餐饮企业先开通网上订餐服务,再由专业的物流配送公司运送。消费者只需在网上选择餐饮企业提供的菜品,就有配送公司送货上门。网上订餐的方式已经被国外的许多家庭所认可。

在国内,2012年之前我国使用的订餐方式大都还停留在电话订餐的层次上。毋容置疑,电话订餐方便,随时打一个电话就可以预定餐品。这种订餐方式逐渐受到消费者的认可,使用量逐年增长,很多问题开始凸显出来。例如订餐效率低,信息的处理程序繁杂,耗费大量人力资源。由于这些缺点,单独的电话订餐很难满足现代人的需求。总体而言,该行业发展不够迅速,国内也缺乏龙头企业。经过这几年的初步发展和互联网技术的不断进步,网络订餐市场被迅速催化。这种双赢的模式逐渐被消费者与企业认可。网上订餐成为现在炙手可热的新兴行业,美团、饿了么等国内知名app已经成为人们生活中不可或缺的一部分。

三方线上美食城|基于Springboot的三方线上美食商城系统相关推荐

  1. 【毕业设计】基于Springboot+vue.js的校园二手商城系统

    此为原创合作开发项目 [毕业设计]基于springboot+vue.js的校园二手商城系统 一.综述 二手市场在中国是一个不够完善和成熟的市场,尤其在大学校园内.随着经济的发展,大学生生活水平的不断提 ...

  2. 基于springboot+dubbo微服务开发的商城系统

    基于springboot+dubbo微服务开发的商城系统 模仿天猫商城 更多资源,访问搬砖联盟-每天搬一点,收货多一点.

  3. java基于springboot+vue+elementui的网上图书商城系统 前后端分离

    随着时代的发展,不论是学习还是生活中,图书已经成为人们生活中必不很少的一个组成.图书是知识的载体,他是人类智慧结晶的一个体现.所以人们在现代的生活中,方方面面都离不开图书.随着信息化技术的发展,通过互 ...

  4. java基于springboot+vue的家具用品销售商城系统 前后端分离nodejs含商家用户

    在21世纪的今天.社会的不断发展和进步当中,人民对于计算机信息科学化认识的程度越来越高.由以前我们的感性认识.到现在理性认识提高了,管理员的工作重要性也越来越高,科学化现代管理手段,使现代化信息存储. ...

  5. Java基于springboot+vue的汽车饰品销售购物商城系统 前后端分离

    开发背景 随着我国科技和经济的发展,我国的汽车数量也越来越多,基本家家户户都拥有了自己的汽车,为了让汽车用起来更加的舒心,于是各类琳琅满目的汽车饰品也出现了.大多数时候人们在购买汽车饰品的时候都回到这 ...

  6. Java基于springboot+vue的眼镜销售购物商城系统 element 前后端分离

    眼睛是人类感观中最重要的器官,大脑中大约80%的知识和记忆都是通过眼睛获取.人们通过眼睛,不仅能感受到世界的美,而且任何工作都需要眼睛来配合,不管是使用电脑,还是写字.开车.走路,都需要通过眼睛来完成 ...

  7. 基于springboot+vue的前后端分离商城系统

    springboot前后端分离商城 介绍 springboot前后端分离商城 本项目由本人根据教程实现的一个springboot项目,基本已实现项目,但是本人希望加入自己的小功能, 请期待下一次的更新 ...

  8. 基于Springboot的三方线上美食商城系统

    作者主页:编程千纸鹤 作者简介:Java.前端.Pythone开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好 ...

  9. 【NodeJs-5天学习】第三天实战篇② ——基于物联网的WiFi自动打卡考勤系统

    [NodeJs-5天学习]第三天实战篇② --基于物联网的WiFi自动打卡考勤系统 1. 前言 2.实现思路 2.1 NodeJs服务器代码 2.1.1 对接Express服务器 2.1.2 对接Ma ...

最新文章

  1. YYDispatchQueuePool 学习笔记
  2. MySQL:SELECT COUNT 小结
  3. php 图片库 加星,PHP使用imagick_st类库把JPG生成GIF动画图片
  4. Long Number
  5. 用Python分析中国大学分布,终于知道为什么好大学难上了
  6. 算法复杂度O(1),O(n),O(logn),O(nlogn)的区别
  7. [Surface] 在win8.1上使用QQ截图放大问题(解决办法)
  8. java学生管理系统遇到的难题_学生信息管理系统错误总结
  9. Eviews做ARIMA模型
  10. 微信emoji表情编码 、MySQL 存储 emoji 表情符号字符集
  11. 关于深度优先遍历和广度优先遍历的一些深入思考
  12. 服务器销售术语,服务器术语大全
  13. 10系统更新后计算机不见,你好!我的电脑一不小心升级到win10以后桌面上的资料都不见了?? 爱问知识人...
  14. 使用CSS3实现流星雨动画教程
  15. boss2.0 java_bboss/bboss-core-entity at master · bbossgroups/bboss · GitHub
  16. es7.1聚合查询 javaAPI
  17. 突破NVIDIA NVENC并发Session数目限制
  18. 你知道icp许可证与edi许可证的区别吗
  19. 【8022】产品管理与产品营销的区别
  20. windows命令获取帮助_如何在Windows 10中获得帮助

热门文章

  1. 推荐学习PPT的几本书
  2. c++编码小技巧之函数返回时自动调用
  3. win7计算机无法启动,Win7 64位系统电脑无法开机进不了系统的解决方法【图】
  4. Scribus 1.4.2 发布,开源电子杂志制作软件
  5. lucksheet表格操作插件的使用
  6. React基本使用、React脚手架的使用
  7. 注册会计师考试时可用计算机吗,2019注册会计师考试:cpa机考系统计算器你会用吗?...
  8. 【待审批】开源网店系统Javashop 发布3.0beta版
  9. java xfire client_XFire的Client的三种模式(转)
  10. 【知识】Blackberry!黑莓!