📄 orderaction.java
字号:
package cn.com.tarena.ecport.web.action;
import java.util.HashSet;
import java.util.List;
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.MappingDispatchAction;
import cn.com.tarena.ecport.biz.IOrderBusiness;
import cn.com.tarena.ecport.biz.IOrderStatusBusiness;
import cn.com.tarena.ecport.biz.IPayWayBusiness;
import cn.com.tarena.ecport.biz.IShoppingCart;
import cn.com.tarena.ecport.biz.factory.BusinessFactory;
import cn.com.tarena.ecport.pojo.OrderLine;
import cn.com.tarena.ecport.pojo.OrderStatus;
import cn.com.tarena.ecport.pojo.Orders;
import cn.com.tarena.ecport.pojo.PayWay;
import cn.com.tarena.ecport.pojo.User;
public class OrderAction extends MappingDispatchAction{
/**
* 提交订单到数据库
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
@SuppressWarnings("unchecked")
public ActionForward submitOrder(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
Orders order = new Orders();
order.setUsers(user);
IPayWayBusiness paywayBusiness = (IPayWayBusiness) BusinessFactory.getBusiness(IPayWayBusiness.class.getName());
PayWay payWay = paywayBusiness.getPayWayById(Long.parseLong(request.getParameter("payway")));
order.setPayway(payWay);
IShoppingCart isc = (IShoppingCart) session.getAttribute("ShopCart");
Map<Long, OrderLine> map = isc.getOrderLineMap();
Set<OrderLine> orderLines = joinOrder(map);
order.setOrderlines(orderLines);
order.setCost(isc.getTotalPrice());
order.setName(user.getUserid()+"_order_");
IOrderStatusBusiness iosb = (IOrderStatusBusiness) BusinessFactory.getBusiness(IOrderStatusBusiness.class.getName());
OrderStatus orderStatus = iosb.getOrderStatusById(1L);
order.setOrderstatus(orderStatus);
IOrderBusiness iob = (IOrderBusiness) BusinessFactory.getBusiness(IOrderBusiness.class.getName());
iob.checkOut(order);
isc.removeAllProducts();
return mapping.findForward("viewOrderList");
}
/**
* 把map集合中的订单项取出放入set集合中,然后封装到order对象中
* @param map
* @return Set
*/
private Set<OrderLine> joinOrder(Map<Long, OrderLine> map) {
Set<OrderLine> orderLines = new HashSet<OrderLine>();
Set<Long> set = map.keySet();
/*
* 把map中的OrderLine插入数据库,如果再往map中添加几个OrderLine,
* 然后再插入数据库的话,只会更新原来的OrderLine,并没有真正插入
* 所以这里重新创建了OrderLine对象可以解决此问题
*/
for(Long proid : set){
OrderLine orderLine = new OrderLine();
orderLine.setAmount(map.get(proid).getAmount());
orderLine.setOrders(map.get(proid).getOrders());
orderLine.setProduct(map.get(proid).getProduct());
orderLines.add(orderLine);
}
return orderLines;
}
/**
* 查看订单列表
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward viewOrderList(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
IOrderBusiness iob = (IOrderBusiness) BusinessFactory.getBusiness(IOrderBusiness.class.getName());
List<Orders> orders = iob.getOrderListByUserId(user.getUserid());
request.setAttribute("orders", orders);
return mapping.findForward("orderList");
}
/**
* 删除一个订单
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward removeOrder(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
Long orderId = Long.parseLong(request.getParameter("orderid"));
IOrderBusiness iob = (IOrderBusiness) BusinessFactory.getBusiness(IOrderBusiness.class.getName());
iob.deleteOrderById(orderId);
return mapping.findForward("viewOrderList");
}
/**
* 查看订单信息
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward viewOrderinfo(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
Long orderid = Long.parseLong(request.getParameter("orderid"));
IOrderBusiness iob = (IOrderBusiness)BusinessFactory.getBusiness(IOrderBusiness.class.getName());
Orders order = iob.getOrderById(orderid);
request.setAttribute("order", order);
return mapping.findForward("orderinfo");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -