📄 orderoperation.java
字号:
/**
* @(#)tarena.action.OrderOperation.java 2008-11-5
* Copy Right Information : Tarena
* Project : xindou
* JDK version used : jdk1.6.4
* Comments : 订单操作类。
* Version : 1.0
* Sr Date Modified By Why & What is modified
* 1. 2008-11-5 小猪 新建
* 2. 2008-11-14 陈达 修改
**/
package tarena.action;
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.hibernate.Session;
//import tarena.dao.ColorDAO;
//import tarena.dao.ProductDAO;
//import tarena.entity.Color;
//import tarena.entity.Product;
import tarena.dao.HibernateSessionFactory;
import tarena.dao.OrdersDAO;
import tarena.dao.PaywayDAO;
import tarena.dao.ReceiveaddressDAO;
import tarena.dao.SendwayDAO;
import tarena.dao.TransactionDAO;
import tarena.dao.UserDAO;
import tarena.entity.Orders;
import tarena.entity.Payway;
import tarena.entity.Receiveaddress;
import tarena.entity.Sendway;
import tarena.entity.Shopcart;
import tarena.entity.Transaction;
import tarena.entity.User;
import tarena.form.OrderForm;
import tarena.global.CookieOperate;
import tarena.global.MessageOperate;
import tarena.global.OrderState;
import tarena.global.PageUtil;
import tarena.global.PublicParameter;
import tarena.global.Transform;
/**
* 订单操作类。<br>
* 购物车、订单删除、增加等。
* 2008-11-5
* @author 达内科技[Tarena Training Group]
* @version 1.0
* @since JDK1.6(建议)
*/
public class OrderOperation extends MappingDispatchAction {
/**
* 从请求对象的参数中获取商品id,商品颜色id,商品个数信息,初始化一个购物车对象。
* @param request 请求对象
* @return 返回的购物车对象,如果找不到匹配的商品,返回null。
*/
// private Shopcart getShopcartFromRequest(HttpServletRequest request){
// String pid = request.getParameter("pid");
// String cid = request.getParameter("cid");
// String amt = request.getParameter("amt");
//
// Product product = null;
// Color color = null;
// Integer temp = null;
// Shopcart cart = null;
//
// if((temp = Transform.StringToInteger(pid))==-1){
// return null;
// }
// product = new ProductDAO().findById(temp);
//
// if(cid!=null&&(temp=Transform.StringToInteger(cid))!=-1){
// color = new ColorDAO().findById(temp);
// }
//
// if(amt!=null&&(temp=Transform.StringToInteger(cid))!=-1){
// cart = new Shopcart(product,color,temp);
// }else{
// cart = new Shopcart(product, color);
// }
// return cart;
// }
//
/**
* 购物车
*/
public ActionForward cart(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Cookie[] ck=request.getCookies();
for(Cookie c:ck){
System.out.println(c.getValue());
}
//System.out.println(CookieOperate.FindCookie("shopcart", request.getCookies()).getValue());
//Shopcart cart = getShopcartFromRequest(request);
//System.out.println("购物车添加对象:"+cart);
List<Shopcart> goods = PageUtil.getGoodsFromRequest(request);
//System.out.println("购物车中存在的商品集合:"+goods);
//ShopcartDAO sdao = new ShopcartDAO();
//System.out.println(cart==null);
//if(cart!=null){
// goods = sdao.save(cart,request,response);
//}
//System.out.println("存储商品后的商品集合:"+goods);
double total = Transform.getFormatNumber(PageUtil.getGoodsTotalPrice(goods), 2, false);
request.setAttribute("goods", goods);
request.setAttribute("total", total);
request.getSession().setAttribute(PublicParameter.LAST_PAGE, request.getRequestURI());
return mapping.findForward("cart");
}
/**
* 订单结算
*/
@SuppressWarnings("unchecked")
public ActionForward checkOut(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//查询购物车中的商品
List<Shopcart> goods = PageUtil.getGoodsFromRequest(request);
//如果购物车中没有商品,转向错误页面。
if(goods.size()==0){
MessageOperate.setAttribute(request, "错误操作", "错误操作", "您的购物车中目前没有商品!程序将跳转到主页.", request.getContextPath()+"/default.htm");
return mapping.findForward("message");
}
//查询付款方式(实际上这里的查询方式是错误的,首先这里有设计付款方式是否已关闭这个属性)
List<Payway> payways = new PaywayDAO().findAll();
//查询送货方式(同上)
List<Sendway> sendways = new SendwayDAO().findAll();
//
User user = null;
try {
user = new UserDAO().findUserByUsername(CookieOperate.FindCookie(PublicParameter.cookie_user, request.getCookies()).getValue());
} catch (RuntimeException e) {}
Set<Receiveaddress> receiveaddress = user.getReceiveaddresses();
request.setAttribute("goods", goods);
request.setAttribute("total", PageUtil.getGoodsTotalPrice(goods));
request.setAttribute("payways", payways);
request.setAttribute("sendways", sendways);
request.setAttribute("receiveaddress", receiveaddress);
return mapping.findForward("checkout");
}
/**
* 提交订单结算
*/
@SuppressWarnings("unchecked")
public ActionForward send_checkout(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
OrderForm oform = (OrderForm)form;
// OrdersDAO ordersDAO = new OrdersDAO();
Double productmoney = 0.0D;
//订单信息
Orders order = new Orders();
//System.out.println(Transform.getNow());
order.setOrdernum(Transform.getNow());
order.setOrdertime(new Date());
Payway payway = new PaywayDAO().findById(Transform.StringToInteger(oform.getDefault_pay_id()));
order.setPayway(payway);
order.setFees(payway.getFees());
Sendway sendway = new SendwayDAO().findById(Transform.StringToInteger(oform.getDefault_send_id()));
order.setSendway(sendway);
Receiveaddress r = new ReceiveaddressDAO().findById(Transform.StringToInteger(oform.getDefault_add_id()));
System.out.println("Receiveaddress:"+r);
order.setReceiveaddress(r);
order.setFare(sendway.getBasefee());
order.setInvoice(new Boolean(oform.getCbNeedInvoice()));
//order.setInvoice(new Byte("0"));
order.setReceivedate(oform.getDdlBestRecTime());
order.setInvoicedesc(oform.getTbMessage());
order.setUser(new UserDAO().findUserByUsername(CookieOperate.FindCookie(PublicParameter.cookie_user, request.getCookies()).getValue()));
order.setDounum(0);
order.setProductmoney(productmoney);
order.setOrdermoney(productmoney+order.getFare()+order.getFees());
order.setPaymoney(productmoney+order.getFare()+order.getFees());
order.setState(OrderState.UNCONFIRMED);
Session session = HibernateSessionFactory.getSession();
try {
session.beginTransaction();
session.save(order);
List<Shopcart> goods = PageUtil.getGoodsFromRequest(request);
// TransactionDAO transactionDAO = new TransactionDAO();
//保存交易表
for(Shopcart good:goods){
Transaction transaction = new Transaction();
transaction.setProduct(good.getProduct());
transaction.setAmount(good.getAmount());
transaction.setColor(good.getColor());
double price = good.getAmount()*good.getProduct().getPrice();
transaction.setMoney(price);
transaction.setOrders(order);
productmoney += price;
session.save(transaction);
}
order.setProductmoney(productmoney);
order.setOrdermoney(productmoney+order.getFare()+order.getFees());
// session.save(order);
session.getTransaction().commit();
//
} catch (RuntimeException e) {
session.getTransaction().rollback();
e.printStackTrace();
}finally{
if(session.isOpen()){
session.close();
}
}
CookieOperate.DeleteCookie(CookieOperate.FindCookie("shopcart", request.getCookies()), response);
// response.sendRedirect(request.getContextPath()+"/default.htm");
response.sendRedirect(request.getContextPath()+"/user/usercporder.htm");
} catch (RuntimeException e) {
MessageOperate.setAttribute(request, "参数错误", "下单出现异常", "下单出现异常,稍后跳转到购物车页面。", "/default.htm");
}
return null;
}
/**
* 我的订单
*/
@SuppressWarnings("unchecked")
public ActionForward usercporder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//此处记得保存rootid
User user = new UserDAO().findUserByUsername(CookieOperate.FindCookie(PublicParameter.cookie_user, request.getCookies()).getValue());
Set<Orders> orders = user.getOrderses();
request.setAttribute("orders", orders);
return mapping.findForward("usercporder");
}
/**
* 订单详细页
*/
public ActionForward usercporderinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//此处记得保存rootid
Integer oid = Transform.StringToInteger(request.getParameter("oid"));
if(oid.equals(-1)){
}
OrdersDAO dao = new OrdersDAO();
Orders order = dao.findById(oid);
System.out.println(order);
if(order != null){
request.setAttribute("order", order);
}else{
}
return mapping.findForward("usercporderinfo");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -