飞道的博客

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

253人阅读  评论(0)

作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

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

文末获得源码

项目编号:BS-SC-023

前言:

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

一,项目简介

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

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

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

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

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

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Bootstrap+Ajax

三,系统展示

系统首页

注册登陆

浏览商品添加购物车

查看购物车

我的订单

个人中心

商品评论

卖家登陆

发布售卖 商品

查看己售订单

商品信息维护

后台管理系统-用户登陆

后台管理首页

菜单管理

角色管理

管理员管理

分类管理

商品管理

用户管理

新闻公告管理

订单管理

四,核心代码展示


  
  1. package com.dong.controller.admin;
  2. import com.dong.config.TitleConfig;
  3. import com.dong.exception.CodeMsg;
  4. import com.dong.exception.Result;
  5. import com.dong.pojo.Category;
  6. import com.dong.service.CategoryService;
  7. import com.dong.utils.CategoryUtil;
  8. import com.dong.utils.ValidataUtil;
  9. import com.dong.vo.PageResult;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.ui.Model;
  13. import org.springframework.web.bind.annotation.*;
  14. /**
  15. * 分类管理控制器
  16. */
  17. @Controller
  18. @RequestMapping("admin/category")
  19. public class CategoryController {
  20. @Autowired
  21. private TitleConfig titleConfig;
  22. @Autowired
  23. private CategoryService categoryService;
  24. @GetMapping("list")
  25. public String list (@RequestParam(value ="name",defaultValue = "") String name, PageResult pageResult, Model model){
  26. model.addAttribute( "title",titleConfig.getCategoryTitle() );
  27. model.addAttribute( "name",name );
  28. model.addAttribute( "pageResult", categoryService.selectPage(name, pageResult));
  29. model.addAttribute( "parentList", CategoryUtil.getParentCategory(categoryService.selectAll()));
  30. return "/admin/category/list";
  31. }
  32. @GetMapping("add")
  33. public String add (Model model){
  34. model.addAttribute( "parentList", CategoryUtil.getParentCategory(categoryService.selectAll()));
  35. return "/admin/category/add";
  36. }
  37. @PostMapping("add")
  38. @ResponseBody
  39. public Result<Boolean> add (Category category){
  40. CodeMsg validata = ValidataUtil.validata(category);
  41. if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){
  42. return Result.exception(validata);
  43. }
  44. try {
  45. categoryService.saveCategory(category);
  46. } catch (Exception e){
  47. return Result.exception(CodeMsg.ADMIN_CATEGORY_ADD_ERROR);
  48. }
  49. return Result.success( true);
  50. }
  51. @GetMapping("edit")
  52. public String edit (Model model,@RequestParam(value = "id",required = true) Integer id){
  53. model.addAttribute( "category", categoryService.selectCategoryById(id));
  54. model.addAttribute( "parentList", CategoryUtil.getParentCategory(categoryService.selectAll()));
  55. return "/admin/category/edit";
  56. }
  57. @PutMapping("edit")
  58. @ResponseBody
  59. public Result<Boolean> edit (Category category){
  60. CodeMsg validata = ValidataUtil.validata(category);
  61. if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){
  62. return Result.exception(validata);
  63. }
  64. try {
  65. categoryService.updateCategory(category);
  66. } catch (Exception e){
  67. Result.exception(CodeMsg.ADMIN_CATEGORY_EDIT_ERROR);
  68. }
  69. return Result.success( true);
  70. }
  71. @DeleteMapping("delete")
  72. @ResponseBody
  73. public Result<Boolean> delete (@RequestParam(value = "id",required = true) Integer id){
  74. try {
  75. categoryService.deleteCategory(id);
  76. } catch (Exception e){
  77. Result.exception(CodeMsg.ADMIN_CATEGORY_DELETE_ERROR);
  78. }
  79. return Result.success( true);
  80. }
  81. }


  
  1. package com.dong.controller.admin;
  2. import com.dong.config.TitleConfig;
  3. import com.dong.exception.Result;
  4. import com.dong.service.CommentService;
  5. import com.dong.vo.PageResult;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.*;
  10. /**
  11. * 评论控制器
  12. */
  13. @Controller
  14. @RequestMapping("admin/comment")
  15. public class CommentController {
  16. @Autowired
  17. private CommentService commentService;
  18. @Autowired
  19. private TitleConfig titleConfig;
  20. @GetMapping("list")
  21. public String list (PageResult pageResult, @RequestParam(value = "name",required = false,defaultValue = " ") String name, Model model){
  22. model.addAttribute( "title",titleConfig.getCommentTitle());
  23. model.addAttribute( "name",name );
  24. model.addAttribute( "pageResult",commentService.selectPage(pageResult,name));
  25. return "admin/comment/list";
  26. }
  27. @DeleteMapping("delete")
  28. @ResponseBody
  29. public Result<Boolean> delete (@RequestParam(value = "id",required = true)Integer id){
  30. commentService.deleteComment(id);
  31. return Result.success( true);
  32. }
  33. }

  
  1. package com.dong.controller.admin;
  2. import com.dong.config.TitleConfig;
  3. import com.dong.exception.CodeMsg;
  4. import com.dong.exception.Result;
  5. import com.dong.service.GoodService;
  6. import com.dong.vo.PageResult;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.ui.Model;
  10. import org.springframework.web.bind.annotation.*;
  11. /**
  12. * 商品管理控制器
  13. */
  14. @RequestMapping("admin/good")
  15. @Controller
  16. public class GoodController {
  17. @Autowired
  18. private GoodService goodService;
  19. @Autowired
  20. private TitleConfig titleConfig;
  21. @GetMapping("list")
  22. public String list (Model model, @RequestParam(value = "name",required = false,defaultValue = "") String name, PageResult pageResult){
  23. model.addAttribute( "title", titleConfig.getGoodTitle());
  24. model.addAttribute( "name",name );
  25. model.addAttribute( "pageResult",goodService.selectPages(pageResult,name ));
  26. return "/admin/good/list";
  27. }
  28. @DeleteMapping("delete")
  29. @ResponseBody
  30. public Result<Boolean> delete (@RequestParam(value = "id") Integer id){
  31. try {
  32. goodService.deleteGood(id);
  33. } catch (Exception e) {
  34. return Result.exception(CodeMsg.ADMIN_GOODS_DELETE_ERROR);
  35. }
  36. return Result.success( true);
  37. }
  38. }

  
  1. package com.dong.controller.admin;
  2. import com.dong.constant.SessionConstant;
  3. import com.dong.exception.CodeMsg;
  4. import com.dong.exception.Result;
  5. import com.dong.listener.SessionListener;
  6. import com.dong.pojo.User;
  7. import com.dong.service.LogService;
  8. import com.dong.service.UserService;
  9. import com.dong.utils.StringUtil;
  10. import com.dong.utils.ValidataUtil;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Controller;
  16. import org.springframework.ui.Model;
  17. import org.springframework.web.bind.annotation.*;
  18. import javax.servlet.http.HttpSession;
  19. import java.util.Date;
  20. /**
  21. * 系统控制器
  22. */
  23. @Controller
  24. @RequestMapping("system")
  25. public class SystemController {
  26. @Autowired
  27. private UserService userService;
  28. @Autowired
  29. private LogService logService;
  30. Logger logger= LoggerFactory.getLogger(UserController.class);
  31. /**
  32. * 管理员登录
  33. * @param user
  34. * @param cpacha
  35. * @param session
  36. * @return
  37. */
  38. @PostMapping(value = "/login_form")
  39. @ResponseBody
  40. public Result<Boolean> Login (User user, String cpacha,HttpSession session){
  41. CodeMsg validata = ValidataUtil.validata(user);
  42. if(validata.getCode()!=CodeMsg.SUCCESS.getCode()){
  43. return Result.exception(validata);
  44. }
  45. if(StringUtils.isEmpty(cpacha)){
  46. return Result.exception(CodeMsg.CPACHA_EMPTY);
  47. }
  48. Object adminCpacha =session.getAttribute( "admin_login");
  49. if(adminCpacha== null){
  50. return Result.exception(CodeMsg.SESSION_EXPIRED);
  51. }
  52. if(!cpacha.equalsIgnoreCase(adminCpacha.toString())){
  53. return Result.exception(CodeMsg.CPACHA_ERROR);
  54. }
  55. User users = userService.selectUserByName(user.getUsername());
  56. if(users== null){
  57. return Result.exception(CodeMsg.ADMIN_USERNAME_EXIST);
  58. }
  59. if(!users.getPassword().equals(user.getPassword())){
  60. return Result.exception(CodeMsg.ADMIN_PASSWORD_ERROR);
  61. }
  62. if(users.getStatus()==User.ADMIN_USER_STATUS_UNABLE){
  63. return Result.exception(CodeMsg.ADMIN_USER_UNABLE);
  64. }
  65. //检查一切符合,可以登录,将用户信息存放至session
  66. session.setAttribute(SessionConstant.USER_SESSION, users);
  67. //销毁验证码
  68. session.removeAttribute( "admin_login");
  69. logger.info( "用户成功登录,user="+users);
  70. logService.addLog(user.getUsername(), "【"+user.getUsername()+ "】"+ "用户在"+ StringUtil.dataFormat( new Date(), "yyyy-MM-dd HH:mm:ss")+ "登录系统!");
  71. return Result.success( true);
  72. }
  73. /**
  74. * 后台主页
  75. * @param model
  76. * @return
  77. */
  78. @GetMapping(value = "index")
  79. public String index (Model model){
  80. model.addAttribute( "userTotal", userService.selectUserTotal());
  81. model.addAttribute( "operatorLogTotal", logService.selectLogTotal());
  82. model.addAttribute( "operatorLogs", logService.selectRecentLog());
  83. model.addAttribute( "onlineUserTotal", SessionListener.onlineUserCount);
  84. return "admin/system/index";
  85. }
  86. /**
  87. * 修改信息
  88. * @param user
  89. * @param session
  90. * @return
  91. */
  92. @PutMapping(value = "update_userinfo")
  93. @ResponseBody
  94. public Result<Boolean> update_userinfo (User user,HttpSession session){
  95. User users =(User) session.getAttribute(SessionConstant.USER_SESSION);
  96. if(userService.selectUserByName(user.getUsername()) != null){
  97. return Result.exception(CodeMsg.ADMIN_USERNAME_EXIST);
  98. }
  99. users.setImage(user.getImage());
  100. users.setEmail(user.getEmail());
  101. users.setMobile(user.getMobile());
  102. userService.updateUser(user);
  103. logService.addLog(user.getUsername(), "【"+user.getUsername()+ "】"+ "用户在"+ StringUtil.dataFormat( new Date(), "yyyy-MM-dd HH:mm:ss")+ "修改了自己的信息!");
  104. return Result.success( true);
  105. }
  106. /**
  107. * 修改密码
  108. * @param oldpwd
  109. * @param newpwd
  110. * @param id
  111. * @param session
  112. * @return
  113. */
  114. @PutMapping(value = "update_pwd")
  115. @ResponseBody
  116. public Result<Boolean> update_pwd (@RequestParam(value = "oldPwd",required = true) String oldpwd,
  117. @RequestParam(value = "newPwd",required = true) String newpwd,
  118. @RequestParam(value = "id",required = true) Integer id,
  119. HttpSession session){
  120. User user =(User) session.getAttribute(SessionConstant.USER_SESSION);
  121. if(!user.getPassword().equals(oldpwd)){
  122. return Result.exception(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);
  123. }
  124. if(StringUtils.isEmpty(newpwd)){
  125. return Result.exception(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);
  126. }
  127. if(newpwd.length()< 6){
  128. return Result.exception(CodeMsg.ADMIN_PASSWORD_MINLENGTH);
  129. }
  130. if(newpwd.length()> 18){
  131. return Result.exception(CodeMsg.ADMIN_PASSWORD_MAXLENGTH);
  132. }
  133. User user1 = new User();
  134. user1.setId(id);
  135. user1.setPassword(newpwd);
  136. userService.updateUser(user1);
  137. user.setPassword(newpwd);
  138. logService.addLog(user.getUsername(), "【"+user.getUsername()+ "】"+ "用户在"+ StringUtil.dataFormat( new Date(), "yyyy-MM-dd HH:mm:ss")+ "更新了自己的密码!");
  139. return Result.success( true);
  140. }
  141. /**
  142. * 退出登录
  143. * @param session
  144. * @return
  145. */
  146. @GetMapping(value = "logout")
  147. public String logout (HttpSession session){
  148. session.removeAttribute(SessionConstant.USER_SESSION);
  149. return "redirect:login";
  150. }
  151. }

五,项目总结

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

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


转载:https://blog.csdn.net/BS009/article/details/128265292
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场