当前位置:   article > 正文

Java项目:springboot网上点餐系统_点餐java系统项目详细描述

点餐java系统项目详细描述

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

功能介绍

SpringBoot在线订餐系统项目。主要功能说明: 分为两个角色,餐厅老板、普通用户

餐厅老板可以登录,注册,可以在后台设置菜品目录,菜品详情,查看订单,用户管理,个人中心等
用户查看首页菜品信息,登录后可以点餐,形成购物车,支付后会出现订单详情
 

本系统采用的技术栈有:springboot、spring、springmvc、mybatis、shiro、jsp、javascript、layui。数据库采用mysql作为数据存储,系统中涉及到的关键表有,用户表、用户详情表、商品表、订单表、商品订单关联表、评价表等等。

本系统分为前台和后台,

前台功能有:

登录注册、修改个人信息、修改收货地址、查看商品、加购商品、结算商品,对订单进行评价、用户留言等功能;

后台功能有:

登录、商品管理、用户管理、订单管理、留言公告管理等功能。本系统中的购物车功能设计、io读写图片存放本地、订单导出、echarts插件实现订单信息统计、后台批量操作、pagehelper实现分页等细节值得学习。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

6.数据库:MySql 5.7版本;

技术栈

1. 后端:SpringBoot+MyBatis

2. 前端:Jsp+bootstrap+jQuery

使用说明

1. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需要的jar包;

2. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
3. 将项目中application.properties配置文件中的数据库配置改为自己的配置,主要用户名、密码;
4. 配置tomcat,然后运行运行项目,输入localhost:8087 登录
5. 餐厅老板账户:admin  密码:admin

普通用户账户:miaosheng  密码:miaosheng

运行截图

前台界面

 前台界面

 

 

 

 

 

后台界面

 

 

 

 

代码相关

首页管理控制器

  1. @Controller
  2. public class HomeController {
  3. @Autowired
  4. private NoticeService noticeService;
  5. @Autowired
  6. private ProductService productService;
  7. @Autowired
  8. private LeaveService leaveService;
  9. @Autowired
  10. private EvaService evaService;
  11. /**
  12. * 跳转到首页
  13. * @param model
  14. * @return
  15. */
  16. @GetMapping(value = {"/","/index"})
  17. public String home(Model model) {
  18. //1-获取上架商品信息
  19. List<Product> productList = productService.findAllProductList()
  20. .stream().filter(product -> product.getStatus() == 1).collect(Collectors.toList());
  21. //2-获取有效的公告信息
  22. List<Notice> validNoticeList = noticeService.findAll()
  23. .stream().filter(notice -> notice.getStatus() == 1).collect(Collectors.toList());
  24. //3-获取热门商品信息
  25. List<Product> hotProductList = new ArrayList<>();
  26. productService.findProductBannerByCount(3).forEach(productBanner ->{
  27. Product dbProduct = productService.findProductById(productBanner.getProductId());
  28. if(dbProduct != null) { hotProductList.add(dbProduct);}
  29. });
  30. //4-查询两条评论
  31. List<Evaluate> evaluateList = evaService.find2Eva();
  32. //5-所有的商品种类名
  33. List productKindList = productService.findAllProductKindNameList();
  34. //6-用户留言表
  35. List<Leave> leaveList = leaveService.findAllLeaveList();
  36. model.addAttribute("productList",productList);
  37. model.addAttribute("noticeList",validNoticeList);
  38. model.addAttribute("hotProductList",hotProductList.stream().limit(3).collect(Collectors.toList()));
  39. model.addAttribute("evaluateList",evaluateList);
  40. model.addAttribute("productKindList",productKindList);
  41. model.addAttribute("leaveList",leaveList);
  42. return "/pages/index";
  43. }
  44. }

 用户管理控制器

  1. @Controller
  2. public class UserController {
  3. @Autowired
  4. private OrderService orderService;
  5. @Autowired
  6. private UserService userService;
  7. @Autowired
  8. private EvaService evaService;
  9. @Autowired
  10. private LeaveService leaveService;
  11. /**
  12. * 去用户中心
  13. */
  14. @GetMapping("/toUserCenter")
  15. public String userCenter(Model model,HttpSession session){
  16. User user = (User) session.getAttribute("user");
  17. User userInfos = userService.findUserInfo(user.getId());
  18. model.addAttribute("userInfos",userInfos);
  19. return "/pages/user/user_center";
  20. }
  21. /**
  22. * 去我的订单
  23. */
  24. @RequestMapping("/toUserOrder")
  25. public String toUserOrder(@RequestParam(required=true,defaultValue="1") Integer page, HttpSession session, Model model){
  26. User users = (User) session.getAttribute("user");
  27. User user = userService.findUserInfo(users.getId());
  28. //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
  29. PageHelper.startPage(page, 3);
  30. List<Order> orderList = orderService.findOrderListByUserId(users.getId());
  31. PageInfo<Order> p = new PageInfo<Order>(orderList);
  32. model.addAttribute("page", p);
  33. model.addAttribute("orderList",orderList);
  34. model.addAttribute("user",user);
  35. return "/pages/user/user_orderlist";
  36. } /**
  37. * 显示收货地址
  38. * @param model
  39. * @return
  40. */
  41. @RequestMapping("/userAddress")
  42. public String userAddress(Model model, HttpSession session) {
  43. User user = (User) session.getAttribute("user");
  44. User userInfos = userService.findUserInfo(user.getId());
  45. model.addAttribute("userInfos",userInfos);
  46. return "/pages/user/user_address";
  47. }
  48. /**
  49. *
  50. *更新收货地址
  51. */
  52. @RequestMapping("/updateAddress")
  53. public String updateAddress(User user,Model model){
  54. userService.updateAddress(user);
  55. return "redirect:/userAddress";
  56. }
  57. /**
  58. * 显示个人中心信息
  59. * @param model
  60. * @return
  61. */
  62. @RequestMapping("/userAccount")
  63. public String userAccount(Model model,HttpSession session){
  64. User user = (User) session.getAttribute("user");
  65. User userInfos = userService.findUserInfo(user.getId());
  66. model.addAttribute("userInfos",userInfos);
  67. return "/pages/user/user_account";
  68. }
  69. /**
  70. * 跳转修改密码界面
  71. * @return
  72. */
  73. @RequestMapping("/updatePassword")
  74. public String updatePassword(){
  75. return "/pages/user/user_password";
  76. }
  77. /**
  78. * 修改密码
  79. * @param oldPwd 旧密码
  80. * @param newPwd 新密码
  81. * @param comfirmPwd 确认密码
  82. * @param model 数据
  83. * @return
  84. */
  85. @RequestMapping("/savePassword")
  86. public String saveAddress(
  87. String oldPwd, String newPwd, String comfirmPwd,Model model,HttpSession session){
  88. /* User user = (User) session.getAttribute("user");
  89. if(user == null){
  90. return "/login";
  91. }
  92. User userInfo = userService.findUserInfo(user.getUserId());
  93. String dbPwd = userInfo.getPassword();
  94. if(StringUtils.isEmpty(oldPwd) && StringUtils.isEmpty(newPwd) && StringUtils.isEmpty(comfirmPwd)){
  95. //输入为空
  96. model.addAttribute("errorInfo","输入为空!");
  97. return "/pages/user/user_password";
  98. }else if(!dbPwd.equals(oldPwd)){
  99. //旧密码不对
  100. model.addAttribute("errorInfo","旧密码不对!");
  101. return "/pages/user/user_password";
  102. }else if(!newPwd.equals(comfirmPwd)){
  103. //两次密码输入不一致
  104. model.addAttribute("errorInfo","两次输入密码不一致!");
  105. return "/pages/user/user_password";
  106. }else{
  107. //输入合法,进入修改密码
  108. userService.updatePwd(comfirmPwd);*/
  109. return "redirect:/userAccount";
  110. }
  111. /**
  112. * 跳转修改更换手机号界面
  113. * @return
  114. */
  115. @RequestMapping("/updateTel")
  116. public String updateTel(){
  117. return "/pages/user/user_telephone";
  118. }
  119. /*
  120. * 更换手机号
  121. * @param newTel
  122. * @return
  123. */
  124. @RequestMapping("/saveTelephone")
  125. public String saveTel(String newTel,Model model,HttpSession session){
  126. String regexMobile = "^((17[0-9])|(14[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
  127. User user = (User) session.getAttribute("user");
  128. if(user == null){
  129. return "/login";
  130. }
  131. if(!newTel.matches(regexMobile)){
  132. model.addAttribute("msg","格式不对!");
  133. return "/pages/user/user_telephone";
  134. }
  135. userService.updateTel(newTel,user.getId().toString());
  136. model.addAttribute("msg","修改成功");
  137. return "redirect:/userAccount";
  138. }
  139. /**
  140. * 解绑手机号
  141. * @return
  142. */
  143. @RequestMapping("/deleteTel")
  144. public String deleteTel(HttpSession session){
  145. User user = (User) session.getAttribute("user");
  146. userService.deleteTel(user.getId().toString());
  147. return "redirect:/userAccount";
  148. }
  149. /**
  150. * 跳转到更换邮箱界面
  151. * @return
  152. */
  153. @RequestMapping("/updateEmail")
  154. public String updateEmail(){
  155. return "/pages/user/user_email";
  156. }
  157. /**
  158. * 更换邮箱
  159. * @param newEmail 新邮箱
  160. * @return
  161. */
  162. @RequestMapping("/saveEmail")
  163. public String saveEmail(String newEmail,Model model,HttpSession session){
  164. String regexEmail = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
  165. User user = (User) session.getAttribute("user");
  166. if(user == null){
  167. return "/login";
  168. }
  169. if (!newEmail.matches(regexEmail)){
  170. model.addAttribute("msg","格式错误!");
  171. return "/pages/user/user_email";
  172. }
  173. userService.updateEmail(user.getId().toString(),newEmail);
  174. return "redirect:/userAccount";
  175. }
  176. /**
  177. * 修改订单状态
  178. * @param status
  179. * @param orderId
  180. * @return
  181. */
  182. @RequestMapping("/updateOrderStatus")
  183. public String updateOrderStatus(Integer status,String orderId){
  184. orderService.updateOrderStatus(status,orderId);
  185. return "redirect:/toUserOrder";
  186. }
  187. /**
  188. * 跳转评价页面
  189. */
  190. @RequestMapping("/toEvaluate")
  191. public String toEvaluate(String orderId,Integer status,Model model){
  192. List<String> productNameList = new ArrayList<>();
  193. orderService.findProductByOrderId(orderId).forEach((product) -> {
  194. productNameList.add(product.getProductName());
  195. });
  196. model.addAttribute("productNameList",productNameList);
  197. model.addAttribute("orderId",orderId);
  198. model.addAttribute("status",status);
  199. return "/pages/user/evaluate";
  200. }
  201. /**
  202. * 发布评论
  203. */
  204. @RequestMapping("/saveEva")
  205. public String saveEva(String orderId,String content,Integer status){
  206. evaService.saveEva(orderId,content,status);
  207. return "redirect:/toEvaList";
  208. }
  209. /**
  210. * 用户评价列表
  211. * @return
  212. */
  213. @RequestMapping("/toEvaList")
  214. public String toEvaList(@RequestParam(required=true,defaultValue="1") Integer page,Model model){
  215. PageHelper.startPage(page, 4);
  216. List<Evaluate> evaList = evaService.findAllEvaList();
  217. //PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
  218. PageInfo<Evaluate> p=new PageInfo<Evaluate>(evaList);
  219. model.addAttribute("page", p);
  220. model.addAttribute("evaList",evaList);
  221. return "/pages/user/evaluate_list";
  222. }
  223. @RequestMapping("/createLeave")
  224. public String createLeave(String content,HttpSession session){
  225. User user = (User)session.getAttribute("user");
  226. leaveService.createLeave(content,user);
  227. return "redirect:/index";
  228. }
  229. @RequestMapping("/aboutUs")
  230. public String aboutUs(){
  231. return "/pages/other/about_us";
  232. }
  233. @RequestMapping("/userLogout")
  234. public String userLogout(HttpSession httpSession){
  235. //将user对象从session域中删除
  236. httpSession.removeAttribute("user");
  237. //页面应该跳转到登陆页面
  238. return "redirect:/index";
  239. }
  240. }

如果也想学习本系统,下面领取。回复:038springboot

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/555449
推荐阅读
相关标签
  

闽ICP备14008679号