基于javaweb+mysql的ssm+maven智能餐厅管理系统(java+ssm+jsp+bootstrap+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven智能餐厅管理系统(java+ssm+jsp+bootstrap+mysql)
项目介绍
本项目主要分为服务员、厨师、收银员、经理四种角色; 主要功能包括: 客户可以根据自己的要求去选择菜品,厨师部会收到你点的菜单。你可以看到菜单的时时状况。 工作人员之间可以互相进行内部通讯,及时得到最新信息。经理可以群发通知、消息给每位员工。 系统会对所有菜品进行监视,当有菜品库存缺乏时,系统会自动提醒管理员。 管理员可以查看到餐厅的近期运营状况。包括最近的营业额,各个菜品的销售情况等。
环境需要
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.数据库:MySql 5.7版本; 6.是否Maven项目:是;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中db.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/DiningRoom 登录 服务员账号/密码: 20144206169/123456 厨师账号/密码:20144206170/123456 经理账号/密码:20144206171/123456 收银账号/密码:20144206172/123456
HttpServletResponse servletResponse = (HttpServletResponse) response;
HttpSession session = servletRequest.getSession();
// 获得用户请求的URI
String path = servletRequest.getRequestURI();
// System.out.println(path);
// 从session里取员信息
User admin = (User) session.getAttribute("user");
//创建类Constants.java,里面写的是无需过滤的页面
for (int i = 0; i < Constant.NoFilter_Pages.length; i++) {
if (path.indexOf(Constant.NoFilter_Pages[i]) > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
}
// 登陆页面无需过滤
if (path.indexOf("/login.do") > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
if (path.indexOf("/login.do.do") > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
// 判断如果没有取到员工信息,就跳转到登陆页面
if (admin == null || "".equals(admin)) {
// 跳转到登陆页面
servletResponse.sendRedirect("index.jsp");
} else {
// 已经登陆,继续此次请求
chain.doFilter(request, response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
/**
* 功能描述:消息模块控制层
*
* http://www.goodym.cn
*/
@Controller
@RequestMapping("/trade")
public class MessageController {
@Autowired
private IMessageService messageService;
@RequestMapping("/getChatMessageNum")
@ResponseBody
public String getChatMessageNum(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
long num = messageService.getMessageNum(user.getId());
session.setAttribute("messageNum", num);
return json;
}
/**
* 功能描述:各大菜式销量
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getSaleDishType")
@ResponseBody
public String getSaleDishType(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
String json = null;
List<DishTypeSale> list =dishService.getDishTypeSales();
json = mapper.writeValueAsString(list);
return json;
}
}
/**
* 功能描述:商品模块控制层
*
*http://www.goodym.cn
*/
@Controller
public class LoginController {
@Autowired
IUserService userService;
@Autowired
IDishService dishService;
@Autowired
ITradeService tradeService;
@RequestMapping("/loginCheck")
public void loginCheck(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String idStr = request.getParameter("id");
String password = request.getParameter("password");
String validation = request.getParameter("validation");
HttpSession session = request.getSession();
if (idStr == null || password == null || validation == null) {
response.sendRedirect("index.jsp?message=error");
/**
* 修改交易状态
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/changeState")
@ResponseBody
public String changeState(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
String json = null;
String result = "0";
String idStr = request.getParameter("id");
Long id = 1l;
try {
id = Long.parseLong(idStr);
} catch (NumberFormatException e) {
}
String nowState = tradeService.changeState(id);
if (nowState != null) {
result = nowState;
}
map.put("result",result);
json = mapper.writeValueAsString(map);
return json;
}
/**
* 功能描述:近期营业额
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getRecentTrade")
@ResponseBody
public String getRecentTrade(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
/**
* 功能描述:交易模块控制层
*
* http://www.goodym.cn
*/
@Controller
@RequestMapping("/trade")
public class TradeController {
@Autowired
private ITradeService tradeService;
@Autowired
private IUserService userService;
/**
* 查询所有 and 模糊搜索
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getList")
@ResponseBody
public String getList(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String p = request.getParameter("page"); //需求页码
String rows = request.getParameter("rows"); //每页多少条
String sel = request.getParameter("s_userName"); //如果是查询这不为空
System.out.println("收到请求:"+p+" "+rows+" "+sel);
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
String json = null;
if(sel==null){
/*List<User> list = userService.getPageList(new User(),Integer.parseInt(p), Integer.parseInt(rows));
PageInfo<User> pageInfo = new PageInfo<User>(list);*/
/*map.put("rows", pageInfo.getList());
map.put("total", pageInfo.getTotal());*/
}
json = mapper.writeValueAsString(map);
return json;
}
/**
* 功能描述:个人中心
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/toUserIndexUI")
public ModelAndView toUserIndexUI(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ModelAndView view = new ModelAndView();
view.setViewName("jsp/user/userIndex");
return view;
}
/**
* 跳转到修改密码页面
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 获得在下面代码中要用的request,response,session对象
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
HttpSession session = servletRequest.getSession();
// 获得用户请求的URI
String path = servletRequest.getRequestURI();
// System.out.println(path);
// 从session里取员信息
User admin = (User) session.getAttribute("user");
//创建类Constants.java,里面写的是无需过滤的页面
for (int i = 0; i < Constant.NoFilter_Pages.length; i++) {
if (path.indexOf(Constant.NoFilter_Pages[i]) > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
}
// 登陆页面无需过滤
if (path.indexOf("/login.do") > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
if (path.indexOf("/login.do.do") > -1) {
chain.doFilter(servletRequest, servletResponse);
return;
}
// 判断如果没有取到员工信息,就跳转到登陆页面
if (admin == null || "".equals(admin)) {
// 跳转到登陆页面
servletResponse.sendRedirect("index.jsp");
} else {
// 已经登陆,继续此次请求
chain.doFilter(request, response);
}
}
public void destroy() {
// TODO Auto-generated method stub
}
}
private ITradeService tradeService;
@Autowired
private IUserService userService;
@RequestMapping("/toTradeUI")
public ModelAndView toTradeUI(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ModelAndView view = new ModelAndView();
String pageNoStr = request.getParameter("pageNo");
String stateStr = request.getParameter("state");
int pageNo = 1;
int state = 4;
try {
pageNo = Integer.parseInt(pageNoStr);
state = Integer.parseInt(stateStr);
} catch (NumberFormatException e) {
// e.printStackTrace();
}
List<Trade> tradeList = tradeService.getPageList(pageNo, state);
PageInfo<Trade> pageInfo = new PageInfo<Trade>(tradeList);
if (pageInfo.getList() != null) {
for (Trade t : pageInfo.getList()) {
t.setTradeState(TradeStateUtil.getById(t.getState()));
t.setUser(userService.getUserById(t.getUserId()));
}
}
request.setAttribute("page", pageInfo);
view.setViewName("jsp/trade/tradeIndex");
return view;
}
/**
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getTimeTrade")
// upload.setFileSizeMax(10*1024*1024);//单个文件最大字节
// upload.setSizeMax(100*1024*1024);//总文件大小
// 3、判断用户的表单有没有设置为multipart/form-data
boolean b = upload.isMultipartContent(request);
if (!b)
return;
// 4、如果设置了,解析request中的主体内容,List<FileItem>
List<FileItem> items = upload.parseRequest(request);
// 5、遍历List
for (FileItem item : items) {
if (item.isFormField()) {
// 6、如果是普通字段,打印
String fieldName = item.getFieldName();
String value = item.getString("UTF-8");// String value = new
// //
// String(item.getString().getBytes("ISO-8859-1"),"UTF-8");
//System.out.println(fieldName + "=" + value);
} else {
// 7、上传:上传到哪个目录
String fileName = item.getName();// 获取文件名 C:\Documents and
if (fileName == null || fileName.trim().equals("")) {
continue;
}
fileName = fileName
.substring(fileName.lastIndexOf("\\") + 1);// a.txt
InputStream in = item.getInputStream();// 获取输入流
// 构建输出流
String newFilePath = uploadPath + "\\" + fileName;// UUID.randomUUID()+ fileName.substring(fileName.lastIndexOf("."));
//System.out.println(newFilePath);
FileOutputStream out = new FileOutputStream(newFilePath);
byte buf[] = new byte[1024];
int len = -1;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();
// item.delete();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*/
@RequestMapping("/addToCart")
@ResponseBody
public String addToCart(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = request.getSession()
.getServletContext();
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
String json = null;
HttpSession session = request.getSession();
String idStr = request.getParameter("id");
Long id = null;
Cart cart = (Cart) session.getAttribute("cart");
Cart cartStock = (Cart) servletContext.getAttribute("cartStock");
if (cart == null) {
cart = new Cart();
session.setAttribute("cart", cart);
}
String result = "false";
try {
id = Long.parseLong(idStr);
Dish dish = dishService.getDishById(id);
// 获取未付款正在购物车中的数目
Integer stockNum = cartStock.getItemNum(id);
if (dishService.checkStock(id, stockNum)) {
result = "true";
cartStock.addDish(dish);
cart.addDish(dish);
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
if (result.equals("true")) {
//result = cart.getTotalNumber() + "";
map.put("totalnumber",cart.getTotalNumber());
}
json = mapper.writeValueAsString(map);
return json;
try {
id = Long.parseLong(idStr);
} catch (NumberFormatException e) {
}
Integer quantity = cart.getItemNum(id);
cart.removeItem(id);
Integer applocationQuantity = cartStock.getItemNum(id);
cartStock.updateItemQuantity(id, applocationQuantity - quantity);
//response.sendRedirect("cartServlet?method=toCartUI");
view.setViewName("redirect:toCartUI.do");
return view;
}
/**
* 取消购物车
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/cancel")
public ModelAndView cancel(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ModelAndView view = new ModelAndView();
HttpSession session = request.getSession();
Cart cart = (Cart) session.getAttribute("cart");
ServletContext servletContext = request.getSession()
.getServletContext();
Cart cartStock = (Cart) servletContext.getAttribute("cartStock");
if(cart != null && cartStock!=null){
for(CartItem c:cart.getItems()){
Integer old = c.getQuantity();
cartStock.updateItemQuantity(c.getDish().getId(), old-c.getQuantity());
}
}
cart.clear();
view.setViewName("redirect:/book/index.do");
return view;
}
class ChangeResult {
int num;
int totalNumber;
int pageSize = 10;
String condition = null;
String likeStr = null;
HttpSession session = request.getSession();
try {
condition = (String) session.getAttribute("bookCondition");
likeStr = (String) session.getAttribute("bookLikeStr");
} catch (Exception e) {
e.printStackTrace();
}
if (condition == null || ("".trim()).equals(condition)) {
condition = "u.id";
}
if (likeStr == null) {
likeStr = "";
}
Dish tempDish = new Dish();
tempDish.setOrderByCondition(condition);
tempDish.setSearchKeyWord(likeStr);
List<Dish> dishList = dishService.getPageList(pageNo,pageSize ,tempDish);
PageInfo<Dish> pageInfo = new PageInfo<Dish>(dishList);
request.setAttribute("dishType", dishService.getDishTypeList());
view.addObject("page",pageInfo);
view.setViewName("jsp/book/book");
return view;
}
/**
* 功能描述:搜索菜单
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/searchDish")
public ModelAndView searchDish(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ModelAndView view = new ModelAndView();
String likeStr = request.getParameter("likeStr");
// likeStr = new String(likeStr.getBytes("iso-8859-1"), "utf-8");
likeStr = likeStr.trim();
public ModelAndView editUser(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ModelAndView view = new ModelAndView();
String name = request.getParameter("name");
String typeStr = request.getParameter("type");
String tell = request.getParameter("tell");
String pageNum = request.getParameter("pageNum");
Integer type = 2;
String idStr = request.getParameter("id");
Long id = null;
try {
id = Long.parseLong(idStr);
} catch (NumberFormatException e) {
}
try {
type = Integer.parseInt(typeStr);
} catch (NumberFormatException e) {
}
userService.editUser(id, name, type, tell);
view.setViewName("redirect:toUserManageUI.do?pageNum"+pageNum);
return view;
}
/**
* 功能描述:删除用户
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/delUser")
public ModelAndView delUser(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ModelAndView view = new ModelAndView();
String pageStr = request.getParameter("pageNum");
String idStr = request.getParameter("id");
Long id = null;
try {
id = Long.parseLong(idStr);
} catch (NumberFormatException e) {
}
}
/**
* 功能描述:文件上传控制层
*
* http://www.goodym.cn
*/
@Controller
@RequestMapping("/upload")
public class UploadController {
@Autowired
private ServletContext servletContext;
@RequestMapping("/uploadImage")
public void uploadImage(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String uploadPath = servletContext.getRealPath(
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/quit")
public ModelAndView quit(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
ModelAndView view = new ModelAndView();
view.setViewName("../index");
return view;
}
/**
* 功能描述:用户管理
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/toUserManageUI")
public ModelAndView toUserManageUI(User tempUser,HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String pageStr = request.getParameter("pageNum");
ModelAndView view = new ModelAndView();
int pageNum = 1;
int pageSize = 15;
try {
pageNum = Integer.parseInt(pageStr);
} catch (NumberFormatException e) {
}
List<User> userList = userService.getPageList(tempUser,pageNum,pageSize);
PageInfo<User> pageInfo = new PageInfo<User>(userList);
request.setAttribute("page", pageInfo);
view.setViewName("jsp/user/userManage");
return view;
}
/**
* 功能描述:跳转到新增用户页面
* @param request
String result = "0";
String idStr = request.getParameter("id");
Long id = 1l;
try {
id = Long.parseLong(idStr);
} catch (NumberFormatException e) {
}
String nowState = tradeService.changeState(id);
if (nowState != null) {
result = nowState;
}
map.put("result",result);
json = mapper.writeValueAsString(map);
return json;
}
/**
* 功能描述:近期营业额
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/getRecentTrade")
@ResponseBody
public String getRecentTrade(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();
String json = null;
List<DateSale> list =tradeService.getDSales();
json = mapper.writeValueAsString(list);
return json;
}
/**
condition = (String) session.getAttribute("bookCondition");
likeStr = (String) session.getAttribute("bookLikeStr");
} catch (Exception e) {
e.printStackTrace();
}
if (condition == null || ("".trim()).equals(condition)) {
condition = "u.id";
}
if (likeStr == null) {
likeStr = "";
}
Dish tempDish = new Dish();
tempDish.setOrderByCondition(condition);
tempDish.setSearchKeyWord(likeStr);
List<Dish> dishList = dishService.getPageList(pageNo,pageSize ,tempDish);
PageInfo<Dish> pageInfo = new PageInfo<Dish>(dishList);
request.setAttribute("dishType", dishService.getDishTypeList());
view.addObject("page",pageInfo);
view.setViewName("jsp/book/book");
return view;
}
/**
* 功能描述:搜索菜单
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/searchDish")
public ModelAndView searchDish(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
ModelAndView view = new ModelAndView();
String likeStr = request.getParameter("likeStr");
// likeStr = new String(likeStr.getBytes("iso-8859-1"), "utf-8");
likeStr = likeStr.trim();
HttpSession session = request.getSession();
if (likeStr != null) {
session.setAttribute("bookLikeStr", likeStr);
} else {
session.removeAttribute("bookLikeStr");
}
view.setViewName("redirect:index.do");
return view;
}
/**
* 功能描述:查看更多
* @param request
* @param response
* @throws ServletException