项目结构:
Java代码实现部分 :
Food.java
package bean;
import java.math.BigDecimal;
public class Food {
private int id; // 主键
private String foodname; // 菜名
private int type_id; // 菜系
private String descript; // 描述
private BigDecimal price; // 价格
private int saling; // 在售
private String img; //图片
public String getDescript() {
return descript;
}
public void setDescript(String deccript) {
this.descript = deccript;
}
public String getFoodname() {
return foodname;
}
public void setFoodname(String foodname) {
this.foodname = foodname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public int getSaling() {
return saling;
}
public void setSaling(int saling) {
this.saling = saling;
}
public int getType_id() {
return type_id;
}
public void setType_id(int type_id) {
this.type_id = type_id;
}
}
OrderDao.java
package dao;
import bean.Order;
import java.util.List;
public interface OrderDao{
void addOrder(Order order) throws Exception;
Order findUF(Order order) throws Exception ;
List<Order> findUserId(String userId) throws Exception;
Order findById(String id) throws Exception;
void removeOrder(int id) throws Exception;
}
O'r'de'r'DaoImpl.java
package dao.daoImpl;
import bean.Food;
import bean.Order;
import dao.FoodDao;
import dao.OrderDao;
import util.C3P0Util;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class OrderDaoImpl implements OrderDao {
FoodDao foodDao = new FoodDaoImpl();
@Override
public void addOrder(Order order) throws Exception {
//查找是否该用户已经添加了这道菜
Order sc = this.findUF(order);
if(sc == null){
//该用户还没有添加这道菜
String sql = "INSERT INTO `xiaojungan`.`t_order`(`food_id`,`user_id`,`table_id`,`food_account`) VALUES(?,?,?,?)";
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
) {
ps.setInt(1,order.getFood_id());
ps.setInt(2,order.getUser_id());
ps.setInt(3,order.getTable_id());
ps.setInt(4,order.getFood_account());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("添加失败!");
}
}else{ //已经添加这道菜,则更新数量
String sql = "UPDATE `xiaojungan`.`t_order` SET `food_account` = "+ sc.getFood_account()+"" +
"+1 WHERE id="+sc.getId();
System.out.println(sql);
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
) {
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("添加失败!");
}
}
}
@Override
public Order findUF(Order order) throws Exception {
String sql = "select * from t_order where user_id=? and food_id=?";
Order s = null;
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
) {
ps.setInt(1,order.getUser_id());
ps.setInt(2,order.getFood_id());
try(
ResultSet rs = ps.executeQuery();
){
if(rs.next()) {
s = new Order();
s.setId(rs.getInt(1));
s.setFood_id(rs.getInt(2));
s.setUser_id(rs.getInt(3));
s.setFood_account(rs.getInt(4));
Food b = foodDao.findFood_id(order.getFood_id());
BigDecimal sellingPrice = b.getPrice();
String foodName = b.getFoodname();
s.setPrice(sellingPrice);
s.setFoodName(foodName);
//计算总价
s.setTotalPrice(sellingPrice.multiply(BigDecimal.valueOf(s.getFood_account())));
System.out.println("s:" + s);
}
}catch (Exception e){
}
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
@Override
public List<Order> findUserId(String userId) throws Exception {
String sql = "select * from t_order where user_id=?";
List<Order> shopCartList = new ArrayList<>();
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)
) {
ps.setInt(1, Integer.parseInt(userId));
try (
ResultSet rs = ps.executeQuery()
) {
//将查询出的结果数据封装到List对象中
while(rs.next()){
Order s = new Order();
s.setId(rs.getInt(1));
s.setFood_id(rs.getInt(2));
s.setUser_id(rs.getInt(3));
s.setTable_id(rs.getInt(4));
s.setFood_account(rs.getInt(5));
Food b = foodDao.findFood_id(s.getFood_id());
BigDecimal sellingPrice = b.getPrice();
String foodName = b.getFoodname();
s.setPrice(sellingPrice);
s.setFoodName(foodName);
//计算总价
s.setTotalPrice(sellingPrice.multiply(BigDecimal.valueOf(s.getFood_account())));
shopCartList.add(s);
}
} catch (Exception e) {
e.printStackTrace();
}
}catch (Exception e){
e.printStackTrace();
}
return shopCartList;
}
public Order findById(String id) throws Exception {
String sql = "select * from t_order where id=?";
Order s = null;
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)
) {
ps.setInt(1, Integer.valueOf(id));
try (
ResultSet rs = ps.executeQuery()
) {
//将查询出的结果数据封装到Order对象中
if(rs.next()){
s = new Order();
s.setId(rs.getInt(1));
s.setFood_id(rs.getInt(2));
s.setUser_id(rs.getInt(3));
s.setTable_id(rs.getInt(4));
s.setFood_account(rs.getInt(5));
Food b = foodDao.findFood_id(s.getFood_id());
BigDecimal sellingPrice = b.getPrice();
String foodName = b.getFoodname();
s.setPrice(sellingPrice);
s.setFoodName(foodName);
//计算总价
s.setTotalPrice(sellingPrice.multiply(BigDecimal.valueOf(s.getFood_account())));
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
}catch (Exception e){
e.printStackTrace();
}
return s;
}
@Override
public void removeOrder(int id) throws Exception {
String sql = "DELETE FROM `xiaojungan`.`t_order` WHERE id=?";
try(
Connection conn = C3P0Util.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
) {
ps.setInt(1, id);
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("移除失败!");
}
}
}
OrderService.java
package service;
import bean.Order;
import java.util.List;
public interface OrderService {
void addOrder(Order order) throws Exception ;
List<Order> findByUserId(String usr_id) throws Exception;
Order findById(String id) throws Exception;
void clear();
void removeOrder(String[] orders);
}
OrderServiceImpl.java
package service.serviceImpl;
import bean.Order;
import dao.OrderDao;
import dao.daoImpl.OrderDaoImpl;
import service.OrderService;
import java.math.BigDecimal;
import java.util.List;
public class OrderServiceImpl implements OrderService {
BigDecimal totalPrice;
private OrderDao orderDao = new OrderDaoImpl();
@Override
public void addOrder(Order order) throws Exception {
orderDao.addOrder(order);
}
@Override
public List<Order> findByUserId(String user_id) throws Exception {
List<Order> orderList = orderDao.findUserId(user_id);
return orderList;
}
@Override
public void removeOrder(String[] orders) {
//遍历数据
for(int i=0;i<orders.length;i++) {
//移除
int shopId=Integer.valueOf(orders[i]);
try {
orderDao.removeOrder(shopId);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public Order findById(String id) throws Exception {
Order order = orderDao.findById(id);
return order;
}
@Override
public void clear() {
}
}
OrderServlet.java
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/OrderServlet")
public class OrderServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
if(user != null){
//用户登陆
response.sendRedirect("/order.html");
}else if(user == null){
//未登录
response.getWriter().write("请先登录!!1秒后转到登陆界面");
response.setHeader("refresh", "1;url=" + request.getContextPath()
+ "/login.html");
}
}
}
User.java
package bean; import java.util.Date; public class User { private int id; private String username; private String password; private int table_id; private int role; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getRole() { return role; } public void setRole(int role) { this.role = role; } public int getTable_id() { return table_id; } public void setTable_id(int table_id) { this.table_id = table_id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
UserDaoImpl.java
package dao.daoImpl; import bean.User; import dao.UserDao; import util.C3P0Util; import java.sql.ResultSet; import java.sql.Connection; import java.sql.PreparedStatement; public class UserDaoImpl implements UserDao { @Override public User login(User user)throws Exception { String sql = "select * from t_user where username=? and password=?"; User lo= null; try( Connection conn = C3P0Util.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ) { ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); try( ResultSet rs = ps.executeQuery(); ){ if(rs.next()) { lo = new User(); lo.setId(rs.getInt(1)); lo.setTable_id(rs.getInt(2)); lo.setUsername(rs.getString(3)); lo.setPassword(rs.getString(4)); lo.setRole(rs.getInt(5)); System.out.println("lo:" + lo); } } } catch (Exception e) { e.printStackTrace(); } return lo; } @Override public void addUser(User user) throws Exception { String sql = "INSERT INTO t_user(username,password) VALUES(?,?)"; try ( Connection conn = C3P0Util.getConnection(); PreparedStatement ps = conn.prepareStatement(sql) ) { ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("注册失败!"); } } @Override public User findById(int id) throws Exception { String sql = "select * from t_user where id=?"; User u = null; try( Connection conn = C3P0Util.getConnection(); PreparedStatement ps = conn.prepareStatement(sql) ) { ps.setInt(1, id); try ( ResultSet rs = ps.executeQuery() ) { //将查询出的结果数据封装到Book对象中 if(rs.next()){ u = new User(); u.setId(rs.getInt(1)); u.setTable_id(rs.getInt(2)); u.setUsername(rs.getString(3)); u.setPassword(rs.getString(4)); u.setRole(rs.getInt(5)); return u; } } catch (Exception e) { e.printStackTrace(); } }catch (Exception e){ e.printStackTrace(); } return u; } }