4.3具体实现
本系统主要包括用户注册与登录模块、商品列表和商品明细模块、购物车管理模块和订单管理四个模块。
本次毕业设计我负责的是网上书店系统的订单管理及其相应的数据库,首先展示下我的成果图:
图4-5 订单确认
图4-6 订单地址
25
4.3.1订单确认
用户对购物车中商品进行确认之后,点击“下一步”按钮进入订单确认页面。
Struts2配置:
OrderInfoAction\>
/WEB-INF/order/order_info.jsp
业务层代码实现:
public String execute(){ CartService cart = CartFactory.getcCartService(session); buyItems = cart.getBuyProducts(true); totalDangPrice = cart.totalPrice(); return SUCCESS; }
持久层代码实现:
public List getBuyProducts(boolean buy) { // 返回CartItem中符合buy值的对象 List
Collection
return products;
26
public class OrderInfoAction extends BaseAction { private List
}
public double totalPrice() { double totalPrice = 0; List
4.3.2填写送货地址
用户对订单中商品数量、价格等进行确认后,点击“下一步”按钮进入填写送货地址页面。
Struts2配置:
AddressFormAction\ >
/WEB-INF/order/address_form.jsp
进入送货地址页面后,页面自动查找当前用户曾经用过的送货地址,如果用户的送货地址和收件人不变的话,则不用重新填写,方便了用户。
业务层代码实现:
public class AddressFormAction extends BaseAction { private User user;
private List
public String execute(){ ReceiveAddressDAO dao = new ReceiveAddressDAOImpl(); try { user = (User)session.get(\ allUsedAddress = dao.
getRecieAddressByUserId(user.getId());
for(ReceiveAddress r : allUsedAddress){ System.out.println(r.getFullAddress()); } } catch (Exception e) {
27
}
e.printStackTrace();
}
return SUCCESS;
持久层代码实现:
public List
(Integer userId)throws Exception {
Query query = getSession().createQuery(\ where userId=?\ query.setParameter(0, userId); List
4.3.3提交订单
Struts2配置:
CreateOrderAction\>
/WEB-INF/order/order_ok.jsp
业务层代码实现:
public class CreateOrderAction extends BaseAction { private Order order; private String orderDesc = \存放要购买的product 的id private double totalPrice; private User user; public String execute(){ try { CartService cart = CartFactory.getcCartService(session); user = (User)session.get(\ totalPrice = cart.totalPrice(); List
28
}
order.setStatus(Constant.NOTSEND);
order.setUserId(user.getId()); System.out.println(\ order.setOrderTime(System.currentTimeMillis()); order.setOrderDesc(orderDesc); order.setTotalPrice(totalPrice); //将order存入表d_order DAOFactory.getOrderDAO().save(order); //生成receiveAddress ReceiveAddress addr = new ReceiveAddress(); addr.setUserId(user.getId()); addr.setReceiveName(order.getReceiveName()); addr.setFullAddress(order.getFullAddress()); addr.setPostalCode(order.getPostalCode()); addr.setPhone(order.getPhone()); addr.setMobile(order.getMobile()); //将receiveAddress存入表 d_receive_address DAOFactory.getOrderDAO().save(addr); } catch (Exception e) { e.printStackTrace(); }
return SUCCESS;
持久层代码实现:
public class OrderDAOImpl extends BaseDAO implements OrderDAO {
29
}
public void save(Order order) throws Exception { Transaction tx = getSession().beginTransaction(); getSession().save(order); tx.commit(); }
public void save(ReceiveAddress receiveAddress)
throws Exception { Transaction tx = getSession().beginTransaction(); getSession().save(receiveAddress); tx.commit(); }