📄 orderaction.java
字号:
package com.estore.struts.action;import java.sql.Date;import java.util.Collection;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.estore.struts.Globals;import com.estore.struts.entity.Cart;import com.estore.struts.entity.CartProduct;import com.estore.struts.entity.Order;import com.estore.struts.entity.OrderItem;import com.estore.struts.entity.Product;import com.estore.struts.entity.User;import com.estore.struts.entity.UserItem;import com.estore.struts.service.OrderService;import com.estore.struts.service.ProductService;import com.estore.struts.service.UserService;import com.estore.struts.utils.ServiceFactory;public class OrderAction extends DispatchAction { private UserService userService = (UserService) ServiceFactory .getInstance().getService(Globals.USER_SERVICE); private OrderService orderService = (OrderService) ServiceFactory .getInstance().getService(Globals.ORDER_SERVICE); /* * 向服务器提交定单,生成一个用户定单保存到数据库中; * * 需要:用户信息,用户的详细信息,付款方式,定单项,商品; */ public ActionForward addOrder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { int Payinfo = Integer.parseInt(request.getParameter("payway")); int useritemid = Integer.parseInt(request.getParameter("useritemid")); HttpSession session = request.getSession(); Cart cart = (Cart) session.getAttribute("cart"); User user = (User) session.getAttribute("user"); Order order = new Order(); order.setCreatetime(new java.sql.Date(System.currentTimeMillis())); order.setOrderstate(0); order.setPayinfo(Payinfo); /* * order不但和用户user有关系,也和useritem有关系, * 因为某个用户也可以给别人定书; */ order.setUser(user); order.setUserItem(userService.getUserItemById(useritemid)); /* * 遍历session中car里面的商品,并且为每一类商品都生成一个定单项,存放在orderitem中; * 定单和定单项是一对多的关系; * 从Car中获得用户所选择的商品,并生成相应的订单项。 */ Map<Integer, CartProduct> products = cart.getProducts(); Set<Integer> keys = products.keySet(); Iterator<Integer> it = keys.iterator(); //记录一个定单的总和 double sum = 0; while (it.hasNext()) { Integer key = it.next(); CartProduct cartproduct = products.get(key); Product product = cartproduct.getProduct(); System.out.println(product); int num = cartproduct.getNum(); sum = sum + (num * product.getPrice()); /* * <1>. 把从cart中存放的商品取出来放到OrderItem对象中, * 每一个商品product对应一个OrderItem对象; * <2>. 然后把创建的OrderItem对象标示为其本身属性哪个定单的OrderItem对象; * <3>. 最后将刚创建的OrderItem对象保存到指定的Order中,并且Order对象保存到数据库中; * 更具从Car中取出的每个商品都生成一个对应的订单项。 */ OrderItem orderItem = new OrderItem(); orderItem.setProduct(product); //orderItem.setPrice(product.getPrice()); orderItem.setQuality(num); //建立双向关系 orderItem.setOrder(order); order.addOrderItem(orderItem); } order.setTotalprice(sum); orderService.saveOrder(order); request.setAttribute("order", order); cart=new Cart(); session.setAttribute("cart", cart); return mapping.findForward("success"); } /* * */ public ActionForward confirmOrder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); request.setAttribute("useritems", userService.getUserItem(user)); return mapping.findForward("confirm"); } /* * 为用户添加一个新地址 */ public ActionForward saveUserItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); UserItem useritem = new UserItem(); useritem.setUser(user); useritem.setItem_name(request.getParameter("username").trim()); useritem.setItem_address(request.getParameter("address").trim()); useritem.setItem_postcode(request.getParameter("postcode").trim()); useritem.setItem_officephone(request.getParameter("officephone").trim()); useritem.setItem_mobilephone(request.getParameter("mobilephone").trim()); useritem.setItem_email(request.getParameter("email").trim()); userService.addUserItem(useritem); request.setAttribute("useritems", userService.getUserItem(user)); return mapping.findForward("confirm"); } /* * 删除一个收货地址 */ public ActionForward deleteUserItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); int userItemId = Integer.parseInt(request.getParameter("useritemid")); System.out.println("========> "+userItemId); userService.deleteUserItem(userItemId); request.setAttribute("useritems", userService.getUserItem(user)); return mapping.findForward("confirm"); } /* * 把属于某个用户的所以帐单全部列出; */ public ActionForward listOrder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); Collection<Order> orders = orderService.getOrdersByUser(user); request.setAttribute("orders", orders); return mapping.findForward("orderlist"); } /* * 查看定单的详细信息 */ public ActionForward orderInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Integer orderid = Integer.parseInt(request.getParameter("orderid"));// 类级别的关联, 和集合级别的关联;// System.out.println("*****************************************");// for(OrderItem orderitem : orderitems){// System.out.println("orderitems =======> "+orderitem);// System.out.println("orderitems =======> "+orderitem.getProduct());// }// System.out.println("*****************************************"); Order order = orderService.getOrderById(orderid); request.setAttribute("order", order); // 只需要在request中添加order,不需要再添加orderitem项了,// 而可以通过order---->orderItems---->product,并且后两项都采取了立即抓取;// Collection<OrderItem> orderitems = orderService.getOrderItems(order);// request.setAttribute("orderitems", orderitems); HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); // user不能级联了,因为它是从session中获得的;// 所以需要重新从数据库中取回来; request.setAttribute("useritems", userService.getUserItem(user)); return mapping.findForward("orderinfo"); } /* * 根据orderid删除指定的order对象; */ public ActionForward deleteOrder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Integer orderid = Integer.parseInt(request.getParameter("orderid")); orderService.deleteOrder(orderService.getOrderById(orderid)); return mapping.findForward("success"); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -