基于javaweb+mysql的springboot点餐系统(java+springboot+ssm+mysql+maven)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot点餐系统(java+springboot+ssm+mysql+maven)
一、项目简述
功能:数据库采用mysq昨为数据存储,系统中涉及到的关 键表有,用户表、用户详情表、商品表、订单表、商品订 单关联表、评价表等等。本系统分为前端和后端,前端功 能有:登录注册、修改个人信息、修改收货地址、查看商 品、加购商品、结算商品,对订单进行评价、用户留言等 功能;后端功能有:登录、商品管理、用户管理、订单管 理、留言公告管理等功能。本系统中的购物车功能设计、io流读写图片存放本地、订单导出、“echarts插件实现订单信 息统计、后台批量操作、pagehelper实现分页等细节值得 学习。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Springboot+ SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + Layui+ maven等等。
* @param model 数据
* @return
*/
@RequestMapping("/savePassword")
public String saveAddress(
String oldPwd, String newPwd, String comfirmPwd,Model model,HttpSession session){
/* User user = (User) session.getAttribute("user");
if(user == null){
return "/login";
}
User userInfo = userService.findUserInfo(user.getUserId());
String dbPwd = userInfo.getPassword();
if(StringUtils.isEmpty(oldPwd) && StringUtils.isEmpty(newPwd) && StringUtils.isEmpty(comfirmPwd)){
//输入为空
model.addAttribute("errorInfo","输入为空!");
return "/pages/user/user_password";
}else if(!dbPwd.equals(oldPwd)){
//旧密码不对
model.addAttribute("errorInfo","旧密码不对!");
return "/pages/user/user_password";
}else if(!newPwd.equals(comfirmPwd)){
//两次密码输入不一致
model.addAttribute("errorInfo","两次输入密码不一致!");
return "/pages/user/user_password";
}else{
//输入合法,进入修改密码
userService.updatePwd(comfirmPwd);*/
return "redirect:/userAccount";
}
/**
* 跳转修改更换手机号界面
* @return
*/
@RequestMapping("/updateTel")
public String updateTel(){
return "/pages/user/user_telephone";
}
/*
* 更换手机号
private EvaService evaService;
@Autowired
private LeaveService leaveService;
/**
* 去用户中心
*/
@GetMapping("/toUserCenter")
public String userCenter(Model model,HttpSession session){
User user = (User) session.getAttribute("user");
if(user == null){
return "/login";
}
User userInfos = userService.findUserInfo(user.getId());
model.addAttribute("userInfos",userInfos);
return "/pages/user/user_center";
}
/**
* 去我的订单
*/
@RequestMapping("/toUserOrder")
public String toUserOrder(@RequestParam(required=true,defaultValue="1") Integer page, HttpSession session, Model model){
User users = (User) session.getAttribute("user");
User user = userService.findUserInfo(users.getId());
//PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
PageHelper.startPage(page, 3);
List<Order> orderList = orderService.findOrderListByUserId(users.getId());
PageInfo<Order> p = new PageInfo<Order>(orderList);
model.addAttribute("page", p);
model.addAttribute("orderList",orderList);
model.addAttribute("user",user);
return "/pages/user/user_orderlist";
} /**
* 显示收货地址
* @param model
* @return
*/
@RequestMapping("/userAddress")
public String userAddress(Model model, HttpSession session) {
@Controller
public class Back_AdminController {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
@GetMapping("/admin/toMemberList")
public String toMemberList(Model model){
List<User> allUser = userService.findAllUser();
List<Role> roleList = roleService.findRoleList();
model.addAttribute("userList",allUser);
model.addAttribute("roleList", roleList);
return "/admin/member/member_list";
}
/**
*
* @param session 前台传过来的管理员的session,里面存有user对象
*/
@GetMapping("/admin/personalInfo")
public String findUserByUserId(HttpSession session, Model model){
Integer userId = ((User) session.getAttribute("user")).getId();
User user = userService.findUserInfo(userId);
model.addAttribute("user", user);
return "/admin/member/personal_info";
}
@PostMapping("/admin/updateAdmin")
public String updateUser(User user) {
userService.updateUser(user);
return "redirect:/personal_info";
}
@GetMapping("/admin/updateAdminById")
public String updateUserById(User user) {
userService.updateUserById(user);
return "redirect:/personal_info";
}
/*
return "redirect:/index";
}
/**
* 获取验证码
* @param response
* @param request
*/
@GetMapping(value = "getCode")
public void getCode(HttpServletResponse response, HttpServletRequest request) {
VerifyCode vc = new VerifyCode();
try {
vc.drawImage(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
String code = vc.getCode();
request.getSession().setAttribute("code", code);
}
/**
* 校验验证码是否正确
*/
@PostMapping("inputCode")
@ResponseBody
public Integer inputCode(HttpServletRequest request) {
String code = (String) request.getSession().getAttribute("code");
String inputCode = request.getParameter("inputCode");
System.out.println("> > >" + code);
System.out.println("input> > >" + inputCode);
if (!code.toLowerCase().equals(inputCode.toLowerCase())) {
return ResponseMessageEnum.FAIL.getCode();
}
return ResponseMessageEnum.SUCCESS.getCode();
}
}
/**
后端product模块相关的controller
*/
@Controller
public class Back_ProductController {
@Autowired
private ProductService productService;
@Autowired
private ProductKindService productKindService;
/**
* 按条件查找数据--模糊查询
* @return
*/
/**
后端product模块相关的controller
*/
@Controller
public class Back_ProductController {
@Autowired
private ProductService productService;
@Autowired
private ProductKindService productKindService;
/**
* 按条件查找数据--模糊查询
* @return
*/
@RequestMapping("/admin/toSelect")
public String toSelect(@RequestParam("Pname") String Pname, Model model) {
List<Product> list = productService.findAllProductCondition(Pname);
model.addAttribute("productList", list);
return "/admin/product/product_list";
}
public String adminLogin() {
return "/admin/common/login";
}
@PostMapping("/admin/backLogin")
public String backLogin(User user, Model model){
User dbUser = userMapper.findUserByU_P(user.getUserName(),user.getPassword());
//1-如果登录账号不存在 直接返回
if(dbUser == null){
model.addAttribute("errorInfo","用户名或密码错误~~");
return "/admin/common/login";
}
//2-如果登录账号存在 判断是否为管理员身份
if(dbUser.getRoleId() == 1){
Subject subject = SecurityUtils.getSubject();
//2-1-查询未读的留言
List<Leave> messageList = leaveMapper.findAllLeaveList()
.stream().filter(leave -> leave.getStatus() == 0).collect(Collectors.toList());
model.addAttribute("messageNum",messageList.size());
subject.getSession().setAttribute("user",dbUser);
return "/admin/common/index";
}
//3-如果不是管理员 返回登录界面
model.addAttribute("errorInfo","非管理员不能登录后台管理系统~~");
return "/admin/common/login";
}
@RequestMapping("/admin/home")
public String home() {
//跳转回用户列表页面
return "/admin/common/home";
}
@RequestMapping("/brandManage")
public String brandManage() {
return "/admin/Brand_Manage";
}
@RequestMapping("toProduct_category_add")
public String toProduct_category_add(){
return "/admin/product-category-add";
}
*/
@Controller
public class ProductController {
@Autowired
private ProductService productService;
@RequestMapping("/toList")
public String toList(@RequestParam(required = true, defaultValue = "1") Integer page, Model model) {
PageHelper.startPage(page, 6);
List<Product> productList = productService.findAllProductListByStatus(1);
List<Product> hotProductList = productService.findHotProductList();
model.addAttribute("productList", productList);
model.addAttribute("hotProductList", hotProductList);
PageInfo<Product> p = new PageInfo<>(productList);
model.addAttribute("page", p);
return "/pages/list/list1";
}
/**
* 查询商品种类名信息;查询热门商品信息;
* 获取数据,然后跳转到list.jsp页面并回显数据
* 根据输入的查询条件查询商品,然后跳转到list.jsp页面并回显数据
* 获取查询条件(商品的名称(product_name), 商品的种类(name))
* 商品的最低价格(minprice)及最高价格(maxprice)
*/
@PostMapping("/findProductByCondition")
public String findProductByCondition(@RequestParam(required = true, defaultValue = "1") Integer page, String product_name, String name, Double minprice, Double maxprice, Model model) {
PageHelper.startPage(page, 4);
List<Product> productConditionList = productService.findProductByCondition(product_name,name,minprice,maxprice);
List<Product> HotProductList = productService.findHotProductList();
PageInfo<Product> p = new PageInfo<Product>(productConditionList);
model.addAttribute("productList", productConditionList);
model.addAttribute("HotProductList", HotProductList);
model.addAttribute("pages", p);
return "/pages/list/list";
}
@GetMapping("/searchByConditition")
public String searchByConditition(@RequestParam(required = true, defaultValue = "1") Integer page,String keyword, Model model){
PageHelper.startPage(page, 4);
List<Product> productConditionList = productService.searchByConditition(keyword);
List<Product> HotProductList = productService.findHotProductList();
PageInfo<Product> p = new PageInfo<Product>(productConditionList);
model.addAttribute("productList", productConditionList);
*/
@RequestMapping("/admin/createNotice")
public String createNotice(String title,String content,int status){
noticeService.addNotice(title,content,status);
return "redirect:/admin/toNoticeList";
}
/**
* 修改公告
*/
@RequestMapping("/admin/updateNotice")
public String updateNotice(Integer id,String utitle,String ucontent,int ustatus){
noticeService.updateNotice(id,utitle,ucontent,ustatus);
return "redirect:/admin/toNoticeList";
}
/**
* 批量删除公告
*/
@RequestMapping("/admin/deleteBatchNotice")
public String deleteBatchNotice(@RequestParam("id") Integer[] id){
noticeService.deleteNotices(id);
return "redirect:/admin/toNoticeList";
}
/**
* 批量显示公告
*/
@RequestMapping("/admin/showBatchNotice")
public String showBatchNotice(@RequestParam("id") Integer[] id){
noticeService.showNotices(id);
return "redirect:/admin/toNoticeList";
}
/**
* 批量关闭公告
*/
@RequestMapping("/admin/closeBatchNotice")
public String closeBatchNotice(@RequestParam("id") Integer[] id){
noticeService.closeNotices(id);
return "redirect:/admin/toNoticeList";
}
}
/* userService.updateEmail(user.getUserId(),newEmail);*/
return "redirect:/userAccount";
}
/**
* 修改订单状态
* @param status
* @param orderId
* @return
*/
@RequestMapping("/updateOrderStatus")
public String updateOrderStatus(Integer status,String orderId){
orderService.updateOrderStatus(status,orderId);
return "redirect:/toUserOrder";
}
/**
* 跳转评价页面
*/
@RequestMapping("/toEvaluate")
public String toEvaluate(String orderId,Integer status,Model model){
List<String> productNameList = new ArrayList<>();
orderService.findProductByOrderId(orderId).forEach((product) -> {
productNameList.add(product.getProductName());
});
model.addAttribute("productNameList",productNameList);
model.addAttribute("orderId",orderId);
model.addAttribute("status",status);
return "/pages/user/evaluate";
}
/**
* 发布评论
*/
@RequestMapping("/saveEva")
public String saveEva(String orderId,String content,Integer status){
evaService.saveEva(orderId,content,status);
return "redirect:/toEvaList";
}
/**
* 用户评价列表
* @return
*/
@RequestMapping("/toEvaList")
public String toEvaList(@RequestParam(required=true,defaultValue="1") Integer page,Model model){
PageHelper.startPage(page, 4);
List<Evaluate> evaList = evaService.findAllEvaList();
//PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
PageInfo<Evaluate> p=new PageInfo<Evaluate>(evaList);
model.addAttribute("page", p);
model.addAttribute("evaList",evaList);
return "/pages/user/evaluate_list";
return "/pages/user/user_center";
}
/**
* 去我的订单
*/
@RequestMapping("/toUserOrder")
public String toUserOrder(@RequestParam(required=true,defaultValue="1") Integer page, HttpSession session, Model model){
User users = (User) session.getAttribute("user");
User user = userService.findUserInfo(users.getId());
//PageHelper.startPage(page, pageSize);这段代码表示,程序开始分页了,page默认值是1,pageSize默认是10,意思是从第1页开始,每页显示10条记录。
PageHelper.startPage(page, 3);
List<Order> orderList = orderService.findOrderListByUserId(users.getId());
PageInfo<Order> p = new PageInfo<Order>(orderList);
model.addAttribute("page", p);
model.addAttribute("orderList",orderList);
model.addAttribute("user",user);
return "/pages/user/user_orderlist";
} /**
* 显示收货地址
* @param model
* @return
*/
@RequestMapping("/userAddress")
public String userAddress(Model model, HttpSession session) {
User user = (User) session.getAttribute("user");
User userInfos = userService.findUserInfo(user.getId());
model.addAttribute("userInfos",userInfos);
return "/pages/user/user_address";
}
/**
*
*更新收货地址
*/
@RequestMapping("/updateAddress")
public String updateAddress(User user,Model model){
userService.updateAddress(user);
return "redirect:/userAddress";
}
/**
* 显示个人中心信息
* @param model
* @return
*/
@RequestMapping("/userAccount")
public String userAccount(Model model,HttpSession session){
User user = (User) session.getAttribute("user");
public String registerToLogin(){
return "/login";
}
/*
*//**
* 跳转到user_center.jsp页面
*//*
@RequestMapping("/toUser_center")
public String toUser_center(){
return "/pages/user/user_center";
}*/
/*
*//**
* 跳转到user_orderlist.jsp页面
*//*
@RequestMapping("/toUser_orderlist")
public String toUser_orderlist(){
return "/pages/user/user_orderlist";
}*/
}
public class Uploader {
private HttpServletRequest request = null;
private Map<String, Object> conf = null;
public Uploader(HttpServletRequest request, Map<String, Object> conf) {
this.request = request;
this.conf = conf;
public class ActionEnter {
private HttpServletRequest request = null;
private String rootPath = null;
private String contextPath = null;
private String actionType = null;
private ConfigManager configManager = null;
public ActionEnter ( HttpServletRequest request, String rootPath ) {
this.request = request;
this.rootPath = rootPath;
this.actionType = request.getParameter( "action" );
this.contextPath = request.getContextPath();
this.configManager = ConfigManager.getInstance( this.rootPath, this.contextPath, request.getRequestURI() );
}
public String exec () {
String callbackName = this.request.getParameter("callback");
if ( callbackName != null ) {
if ( !validCallbackName( callbackName ) ) {
return new BaseState( false, AppInfo.ILLEGAL ).toJSONString();
}
return callbackName+"("+this.invoke()+");";
} else {
return this.invoke();
}
}
return "redirect:/index";
}
@RequestMapping("/aboutUs")
public String aboutUs(){
return "/pages/other/about_us";
}
@RequestMapping("/userLogout")
public String userLogout(HttpSession httpSession){
//将user对象从session域中删除
httpSession.removeAttribute("user");
//页面应该跳转到登陆页面
return "redirect:/index";
}
}
/**
后台订单相关controller
*/
@Controller
public class Back_OrderController {
}
public class ActionEnter {
private HttpServletRequest request = null;
private String rootPath = null;
private String contextPath = null;
private String actionType = null;
private ConfigManager configManager = null;
public ActionEnter ( HttpServletRequest request, String rootPath ) {
this.request = request;
this.rootPath = rootPath;
this.actionType = request.getParameter( "action" );
this.contextPath = request.getContextPath();
this.configManager = ConfigManager.getInstance( this.rootPath, this.contextPath, request.getRequestURI() );
}
public String exec () {
String callbackName = this.request.getParameter("callback");
if ( callbackName != null ) {
model.addAttribute("evaList",evaList);
return "/pages/user/evaluate_list";
}
@RequestMapping("/createLeave")
public String createLeave(String content,HttpSession session){
User user = (User)session.getAttribute("user");
leaveService.createLeave(content,user);
return "redirect:/index";
}
@RequestMapping("/aboutUs")
public String aboutUs(){
return "/pages/other/about_us";
}
@RequestMapping("/userLogout")
public String userLogout(HttpSession httpSession){
//将user对象从session域中删除
httpSession.removeAttribute("user");
//页面应该跳转到登陆页面
return "redirect:/index";
}
}
return list.contains(type);
}
}
/**
*/
@Controller
public class Back_LeaveController {
//留言信息处理
@Autowired
private LeaveService leaveService;
@Autowired
private UserService userService;
@RequestMapping("/admin/toLeaveList")
public String guestBook(Model model) {
List<Leave> list=leaveService.findAllLeaveList();
model.addAttribute("list",list);
return "/admin/leave/leave_list";
}
@RequestMapping("/admin/delete")
public String deleteById(String leaveId){
leaveService.deleteById(leaveId);
return "redirect:/admin/toLeaveList";
}
@RequestMapping("/admin/deleteAll")
public String deleteAll(@RequestParam("id") Integer[] leaveIds){
System.out.println(Arrays.toString(leaveIds));
leaveService.deleteAll(leaveIds);
@Controller
public class HeadController {
/**
* 跳转到residter.jsp页面
*/
@GetMapping("/toRegister")
public String toRegister(){
return "/register";
}
/**
* 跳转到login.jsp页面
*/
@GetMapping("/toLogin")
public String toLogin(){
return "/login";
}
/**
* 跳转到residter.jsp页面
*/
@GetMapping("/loginToRegister")
public String loginToRegister(){
return "/register";
}
/**
* 从注册页面跳转到登陆页面
*/
@GetMapping("/registerToLogin")
public String registerToLogin(){
return "/login";
}
/*
*//**
* 跳转到user_center.jsp页面
*//*
@RequestMapping("/toUser_center")
public String toUser_center(){
return "/pages/user/user_center";
}*/
/*
*//**
* 跳转到user_orderlist.jsp页面
*//*
@RequestMapping("/toUser_orderlist")
public String toUser_orderlist(){