@Controller("/shopping/cart")
public class CartAction extends Action {
@Resource ProductInfoService productService;
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCartForm formbean = (BuyCartForm) form;
BuyCart buyCart = WebUtil.getBuyCart(request);
if(buyCart==null){
buyCart = new BuyCart();
request.getSession().setAttribute("buyCart", buyCart);
}
//解决session在新开浏览器不能共享的问题
WebUtil.addCookie(response, "JSESSIONID", request.getSession().getId(), request.getSession().getMaxInactiveInterval());
if(formbean.getProductid()!=null && formbean.getProductid()>0){
ProductInfo product = productService.find(formbean.getProductid());
if(product!=null){
ProductStyle selectStyle = null;
for(ProductStyle style : product.getStyles()){
if(style.getId().equals(formbean.getStyleid())){
selectStyle = style;
break;
}
}
product.getStyles().clear();
product.addProductStyle(selectStyle);
buyCart.addBuyItem(new BuyItem(product));
}
}
return mapping.findForward("cart");
}
}
-----------------------------------------------------------------------------
/**
* 购物车管理
*/
@Controller("/shopping/cart/manage")
public class CartManageAction extends DispatchAction {
/**
* 删除购物项
*/
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCartForm formbean = (BuyCartForm) form;
ProductInfo product = new ProductInfo(formbean.getProductid());
product.addProductStyle(new ProductStyle(formbean.getStyleid()));
BuyItem buyItem = new BuyItem(product);
BuyCart buyCart = WebUtil.getBuyCart(request);
buyCart.deleteBuyItem(buyItem);
request.setAttribute("directUrl", "/shopping/cart.do?directUrl="+ formbean.getDirectUrl());
return mapping.findForward("directUrl");
}
/**
* 清空购物车
*/
public ActionForward deleteAll(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCartForm formbean = (BuyCartForm) form;
BuyCart buyCart = WebUtil.getBuyCart(request);
buyCart.deleteAll();
request.setAttribute("directUrl", "/shopping/cart.do?directUrl="+ formbean.getDirectUrl());
return mapping.findForward("directUrl");
}
/**
* 修改购买数量
*/
public ActionForward updateAmount(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCartForm formbean = (BuyCartForm) form;
update(request);
request.setAttribute("directUrl", "/shopping/cart.do?directUrl="+ formbean.getDirectUrl());
return mapping.findForward("directUrl");
}
/**
* 结算
*/
public ActionForward settleAccounts(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCartForm formbean = (BuyCartForm) form;
update(request);
String url = "/customer/shopping/deliver.do";
if(formbean.getDirectUrl()!=null && !"".equals(formbean.getDirectUrl().trim())){
url = new String(Base64.decodeBase64(formbean.getDirectUrl().trim().getBytes()));
}
request.setAttribute("directUrl", url);
return mapping.findForward("directUrl");
}
private void update(HttpServletRequest request) {
BuyCart buyCart = WebUtil.getBuyCart(request);
for(BuyItem item : buyCart.getItems()){
String paramName = "amount_"+ item.getProduct().getId()+ "_"+ item.getProduct().getStyles().iterator().next().getId();
String paramValue = request.getParameter(paramName);
item.setAmount(new Integer(paramValue));
}
}
}
-----------------------------------------------------------------------------
@Controller("/customer/shopping/deliver")
public class DeliverInfoAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
BuyCart cart = WebUtil.getBuyCart(request);
Buyer buyer = WebUtil.getBuyer(request);
formbean.setGender(Gender.MAN);
formbean.setBuyer_gender(Gender.MAN);
formbean.setBuyerIsrecipients(true);
formbean.setEmail(WebUtil.getBuyer(request).getEmail());
if(cart.getBuyerIsrecipients()!=null) formbean.setBuyerIsrecipients(cart.getBuyerIsrecipients());
if(cart.getDeliverInfo()!=null){
formbean.setRecipients(cart.getDeliverInfo().getRecipients());
formbean.setGender(cart.getDeliverInfo().getGender());
formbean.setEmail(cart.getDeliverInfo().getEmail());
formbean.setMobile(cart.getDeliverInfo().getMobile());
formbean.setTel(cart.getDeliverInfo().getTel());//010-3939893-90
formbean.setAddress(cart.getDeliverInfo().getAddress());
formbean.setPostalcode(cart.getDeliverInfo().getPostalcode());
}else{
if(buyer.getContactInfo()!=null){
formbean.setRecipients(buyer.getRealname());
formbean.setGender(buyer.getGender());
formbean.setEmail(buyer.getEmail());
formbean.setMobile(buyer.getContactInfo().getMobile());
formbean.setTel(buyer.getContactInfo().getPhone());//010-3939893-90
formbean.setAddress(buyer.getContactInfo().getAddress());
formbean.setPostalcode(buyer.getContactInfo().getPostalcode());
}
}
if(cart.getContactInfo()!=null){
formbean.setBuyer(cart.getContactInfo().getBuyerName());
formbean.setBuyer_gender(cart.getContactInfo().getGender());
formbean.setBuyer_address(cart.getContactInfo().getAddress());
formbean.setBuyer_mobile(cart.getContactInfo().getMobile());
formbean.setBuyer_tel(cart.getContactInfo().getTel());
formbean.setBuyer_postalcode(cart.getContactInfo().getPostalcode());
}else{
if(buyer.getContactInfo()!=null){
formbean.setBuyer(buyer.getRealname());
formbean.setBuyer_gender(buyer.getGender());
formbean.setBuyer_mobile(buyer.getContactInfo().getMobile());
formbean.setBuyer_tel(buyer.getContactInfo().getPhone());//010-3939893-90
formbean.setBuyer_address(buyer.getContactInfo().getAddress());
formbean.setBuyer_postalcode(buyer.getContactInfo().getPostalcode());
}
}
return mapping.findForward("deliverinfo");
}
}
---------------------------------------------------------------------
/**
* 订单信息确认
*/
@Controller("/customer/shopping/confirm")
public class OrderConfirmAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
String encodeurl = new String(Base64.encodeBase64("/customer/shopping/confirm.do".getBytes()));
request.setAttribute("directUrl", encodeurl);
return mapping.findForward("confirm");
}
}
---------------------------------------------------------------------
@Controller("/customer/shopping/paymentway")
public class PaymentWayAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
BuyCart cart = WebUtil.getBuyCart(request);
if(cart.getDeliverInfo()==null){
request.setAttribute("directUrl", "/customer/shopping/deliver.do");
return mapping.findForward("directUrl");
}
formbean.setDeliverway(DeliverWay.EXPRESSDELIVERY);
formbean.setPaymentway(PaymentWay.NET);
if(cart.getDeliverInfo().getDeliverWay()!=null){
formbean.setDeliverway(cart.getDeliverInfo().getDeliverWay());
}
if(cart.getPaymentWay()!=null){
formbean.setPaymentway(cart.getPaymentWay());
}
formbean.setRequirement(cart.getDeliverInfo().getRequirement());
formbean.setDelivernote(cart.getDeliverInfo().getRequirement());
return mapping.findForward("paymentway");
}
}
---------------------------------------------------------------------------
@Controller("/shopping/finish")
public class ShoppingFinishAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ShoppingFinishForm formbean = (ShoppingFinishForm) form;
String view = "postofficeremittance";
if(PaymentWay.COD.equals(formbean.getPaymentway())){
view = "cod";
}else if(PaymentWay.NET.equals(formbean.getPaymentway())){
view = "net";
}else if(PaymentWay.BANKREMITTANCE.equals(formbean.getPaymentway())){
view = "bank";
}
return mapping.findForward(view);
}
}
--------------------------------------------------------------------------
@Controller("/customer/shopping/manage")
public class ShoppingManageAction extends DispatchAction {
@Resource(name="orderServiceBean") OrderService orderService;
/**
* 保存收货人信息
*/
public ActionForward saveDeliverInfo(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
BuyCart cart = WebUtil.getBuyCart(request);
if(cart.getDeliverInfo()==null) cart.setDeliverInfo(new OrderDeliverInfo());
//保存收货人的信息
cart.getDeliverInfo().setRecipients(formbean.getRecipients());
cart.getDeliverInfo().setGender(formbean.getGender());
cart.getDeliverInfo().setAddress(formbean.getAddress());
cart.getDeliverInfo().setEmail(formbean.getEmail());
cart.getDeliverInfo().setMobile(formbean.getMobile());
cart.getDeliverInfo().setPostalcode(formbean.getPostalcode());
cart.getDeliverInfo().setTel(formbean.getTel());
cart.setBuyerIsrecipients(formbean.getBuyerIsrecipients());
if(cart.getContactInfo()==null) cart.setContactInfo(new OrderContactInfo());
if(cart.getBuyerIsrecipients()){//如果购买人和收货人相同,那么订单的联系信息就是收货人的信息
cart.getContactInfo().setBuyerName(formbean.getRecipients());
cart.getContactInfo().setGender(formbean.getGender());
cart.getContactInfo().setAddress(formbean.getAddress());
cart.getContactInfo().setEmail(formbean.getEmail());
cart.getContactInfo().setMobile(formbean.getMobile());
cart.getContactInfo().setPostalcode(formbean.getPostalcode());
cart.getContactInfo().setTel(formbean.getTel());
}else{//从表单中得到输入数据,并保存进购物车的OrderContactInfo
cart.getContactInfo().setBuyerName(formbean.getBuyer());
cart.getContactInfo().setEmail(WebUtil.getBuyer(request).getEmail());
cart.getContactInfo().setGender(formbean.getBuyer_gender());
cart.getContactInfo().setAddress(formbean.getBuyer_address());
cart.getContactInfo().setMobile(formbean.getBuyer_mobile());
cart.getContactInfo().setPostalcode(formbean.getBuyer_postalcode());
cart.getContactInfo().setTel(formbean.getBuyer_tel());
}
String url = "/customer/shopping/paymentway.do";
if(formbean.getDirectUrl()!=null && !"".equals(formbean.getDirectUrl().trim())){
url = formbean.getDirectUrl();
}
request.setAttribute("directUrl", url);
return mapping.findForward("directUrl");
}
/**
* 保存配送方式与支付方式
*/
public ActionForward savePaymentway(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
BuyCart cart = WebUtil.getBuyCart(request);
/*
* 1>把配送方式保存进购物车的OrderDeliverInfo对象的deliverWay属性
* 2>当用户选择的配送方式为"快递送货上门"或"加急快递送货上门"的时候,需要把"时间要求"保存进购物车的OrderDeliverInfo对象的requirement属性,如果"时间要求"选择的是"特殊说明",应该保存用户填写的数据
* 3>如果用户选择的配送方式不是"快递送货上门"和"加急快递送货上门"的时候,需要把购物车的OrderDeliverInfo对象的requirement属性设置为null;
* 4>保存支付方式进购物车的paymentWay属性.
*/
cart.getDeliverInfo().setDeliverWay(formbean.getDeliverway());
if(DeliverWay.EXPRESSDELIVERY.equals(formbean.getDeliverway()) ||
DeliverWay.EXIGENCEEXPRESSDELIVERY.equals(formbean.getDeliverway())){
cart.getDeliverInfo().setRequirement(formbean.getRequirement());
if("other".equals(formbean.getRequirement())){
cart.getDeliverInfo().setRequirement(formbean.getDelivernote());
}
}else{
cart.getDeliverInfo().setRequirement(null);
}
cart.setPaymentWay(formbean.getPaymentway());
request.setAttribute("directUrl", "/customer/shopping/confirm.do");
return mapping.findForward("directUrl");
}
/**
* 提交订单
*/
public ActionForward saveorder(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DeliverInfoForm formbean = (DeliverInfoForm) form;
BuyCart cart = WebUtil.getBuyCart(request);
cart.setNote(formbean.getNote());
Order order = orderService.createOrder(cart, WebUtil.getBuyer(request).getUsername());
WebUtil.deleteBuyCart(request);
request.setAttribute("directUrl", "/shopping/finish.do?orderid="+ order.getOrderid()+"&payablefee="+
order.getPayablefee()+"&paymentway="+ order.getPaymentWay());
return mapping.findForward("directUrl");
}
}