2010-03-30 购物车核心源码

说明:网上订餐系统:采用Struts2+Jsp+Javabean 实现原理-----》用户有一个购物车属性,其实就是一个数组里边装的是具体的购物项目,它是一 个对象用于封装用户选好的食品!

因此有两个model类 User 和 CarItem

 

1.下面是购物车Action中的方法:

 

//删除购物车中的商品 public String DeleteProduct(){ User user=(User)ActionContext.getContext().getSession().get("u"); for(int i=0;i<user.getItems().size();i++){ if(user.getItems().get(i).getPid()==getPid()){ user.getItems().remove(i); } } return SUCCESS; } //清空购物车 public String ClearCart(){ User user=(User)ActionContext.getContext().getSession().get("u"); user.getItems().clear(); return SUCCESS; } //增加到购物车 public String addCar(){ User u=null; if(ActionContext.getContext().getSession().get("u")==null){ u=new User(); ActionContext.getContext().getSession().put("u", u); } u=(User)ActionContext.getContext().getSession().get("u"); ArrayList<CarItem> items=null; CarItem item=null; Food food=null; if(u.getItems()==null){ items=new ArrayList<CarItem>(); item=new CarItem(); food=FoodService.getService().getFoodById(getPid()); item.setPid(food.getId()); item.setPrice(food.getPrice()); item.setName(food.getName()); item.setImageName(food.getTitleImage()); item.setNum(1); items.add(item); u.setItems(items); } else{ items=u.getItems(); for(int i=0;i<items.size();i++){ if(items.get(i).getPid()==getPid()){ int num=items.get(i).getNum()+1; items.get(i).setNum(num); return SUCCESS; } } item=new CarItem(); food=FoodService.getService().getFoodById(getPid()); item.setPid(food.getId()); item.setPrice(food.getPrice()); item.setName(food.getName()); item.setImageName(food.getTitleImage()); item.setNum(1); items.add(item); } return SUCCESS; } //下订单 public String SureOrder(){ User u=(User)ActionContext.getContext().getSession().get("u"); user=(User)ActionContext.getContext().getSession().get("user"); if(user==null){ return INPUT; } OrderService.getService().creatOrder(user, u.getItems()); ClearCart(); return SUCCESS; }

 

2.下面是操作数据库层的Service采用单例

 

package com.java7.service; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import com.java7.model.CarItem; import com.java7.model.Order; import com.java7.model.OrderItem; import com.java7.model.User; import com.java7.util.DB; import com.opensymphony.xwork2.ActionContext; public class OrderService { private static OrderService service=null; public static OrderService getService(){ if(null==service){ service=new OrderService(); } return service; } //返回所有订单结果集 public ArrayList<Order> getOrder(int pageNow, int pageSize){ ResultSet rs=null; Connection conn = DB.getConn(); String sql=""; if(pageNow<=1)pageNow=1; String nom="SELECT count(*) FROM t_user"; java.sql.Statement stmt =DB.getStmt(conn); ResultSet rs1= DB.getRs(stmt, nom); int num=5; try { rs1.next(); num = rs1.getInt(1); } catch (SQLException e2) { e2.printStackTrace(); } if(pageNow>(num/pageSize+1)) pageNow=num/pageSize+1; ActionContext.getContext().getSession().put("pageNow", pageNow); if (conn!=null && pageSize>0 && pageNow>0) sql="select *from t_order order by _date desc limit "+(pageNow*pageSize-pageSize)+","+pageSize; PreparedStatement pstmt=DB.getPstmt(conn, sql); ArrayList<Order> orders=new ArrayList<Order>(); try { rs=pstmt.executeQuery(sql); while(rs.next()){ Order order=new Order(); order.setId(rs.getInt("_id")); order.setAddress(rs.getString("_address")); order.setOdate(rs.getDate("_date")); order.setStatus(rs.getInt("_status")); order.setTel(rs.getString("_tel")); order.setTotalprice(rs.getDouble("_totalprice")); order.setUserid(rs.getInt("_userid")); orders.add(order); } } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(rs); DB.Close(conn); } return orders; } //删除订单明细表一orderitem public void deleteOrderitem(int id){ String sql="delete from t_orderitem where _orderid=?"; Connection conn=DB.getConn(); PreparedStatement pstmt=DB.getPstmt(conn, sql); try { pstmt.setInt(1, id); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(conn); } } //删除订单表二order public void deleteOrder( int id){ String sql="delete from t_order where _id=?"; Connection conn=DB.getConn(); PreparedStatement pstmt=DB.getPstmt(conn, sql); try { pstmt.setInt(1, id); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(conn); } } //根据订单id获得订单的商品结果集 public ArrayList<OrderItem> getOrderDetials(int id ){ ResultSet rs=null; String sql="select * from t_orderitem where _orderid="+id; Connection conn=DB.getConn(); PreparedStatement pstmt=DB.getPstmt(conn, sql); OrderItem orderitem=null; ArrayList<OrderItem> items=null; try { rs=pstmt.executeQuery(sql); while(rs.next()){ items=new ArrayList<OrderItem>() ; orderitem=new OrderItem(); orderitem.setId(rs.getInt("_id")); orderitem.setNum(rs.getInt("_num")); orderitem.setOrderid(rs.getInt("_orderid")); orderitem.setPid(rs.getInt("_pid")); items.add(orderitem); } } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(rs); DB.Close(conn); } return items; } //根据订单id 获取订单的内容 public Order getOrderById(int id){ Connection conn=DB.getConn(); String sql="select *from t_order where _id="+id; PreparedStatement pstmt=DB.getPstmt(conn, sql); Order order=null; try { ResultSet rs=pstmt.executeQuery(); while(rs.next()){ order=new Order(); order.setId(rs.getInt("_id")); order.setAddress(rs.getString("_address")); order.setOdate(rs.getDate("_date")); order.setStatus(rs.getInt("_status")); order.setTel(rs.getString("_tel")); order.setTotalprice(rs.getDouble("_totalprice")); order.setUserid(rs.getInt("_userid")); } } catch (SQLException e) { e.printStackTrace(); } return order; } //根据订单id修改订单 public boolean OrderModify( Order order){ Connection conn=null; PreparedStatement pstmt=null; String sql="update t_order set _address=?,_status=? ,_tel=? where _id="+order.getId(); conn=DB.getConn(); pstmt=DB.getPstmt(conn, sql); try { conn.setAutoCommit(false); pstmt.setString(1,order.getAddress()); pstmt.setInt(2, order.getStatus()); pstmt.setString(3, order.getTel()); pstmt.executeUpdate(); conn.commit(); conn.setAutoCommit(true); } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(conn); } return true; } //生成订单 public boolean creatOrder(User u, ArrayList<CarItem> items){ boolean boo=false; double total=0.000; for(int i=0;i<items.size();i++){ total+=items.get(i).getPrice()*items.get(i).getNum(); } String sql="insert into t_order (_address,_date,_status,_tel,_totalprice,_userid) value (?,now(),?,?,?,?)"; Connection conn=DB.getConn(); PreparedStatement pstmt=DB.getPstmt(conn, sql,PreparedStatement.RETURN_GENERATED_KEYS); try { pstmt.setString(1, u.getAddr()); pstmt.setInt(2, 1); pstmt.setInt(3, u.getTel()); pstmt.setDouble(4, total); pstmt.setInt(5, u.getId()); pstmt.executeUpdate(); ResultSet rs=pstmt.getGeneratedKeys(); int orderid=0; if(rs.next()){ orderid=rs.getInt(1); } for(int i=0;i<items.size();i++ ){ CarItem it=(CarItem)items.get(i); String Sql="insert into t_orderitem (_pid,_num,_orderid) value (?,?,?)"; pstmt=DB.getPstmt(conn, Sql); pstmt.setInt(1,it.getPid()); pstmt.setInt(2, it.getNum()); pstmt.setInt(3, orderid); pstmt.executeUpdate(); } boo=true; } catch (SQLException e) { e.printStackTrace(); }finally{ DB.Close(pstmt); DB.Close(conn); } return boo; } //返回会员的订单 public ArrayList<Order> getUserOrder(int userid){ String sql="select *from t_order where _userid="+userid; Connection conn=DB.getConn(); PreparedStatement pstmt=DB.getPstmt(conn, sql); ResultSet rs=null; ArrayList<Order> all=new ArrayList<Order>(); try { rs = pstmt.executeQuery(); while(rs.next()){ Order order=new Order(); order.setId(rs.getInt("_id")); order.setAddress(rs.getString("_address")); order.setOdate(rs.getDate("_date")); order.setStatus(rs.getInt("_status")); order.setTel(rs.getString("_tel")); order.setTotalprice(rs.getDouble("_totalprice")); all.add(order); } } catch (SQLException e1) { e1.printStackTrace(); }finally{ DB.Close(rs); DB.Close(pstmt); DB.Close(conn); } return all; } }

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值