chem01- 添加商品到购物车

1.

package selleck.web.cart;

import java.io.InputStream;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import lombok.Getter;
import lombok.Setter;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

import selleck.Core.util.Constants;
import selleck.Core.util.MD5Maker;
import selleck.Core.web.SelleckActionSupport;
import selleck.model.attachment.dao.imp.AttachmentDAOImp;
import selleck.model.cart.dto.CartDTO;
import selleck.model.cart.service.CartService;
import selleck.model.country.dto.CountryDTO;
import selleck.model.country.service.CountryService;
import selleck.model.product.dto.ProductDTO;
import selleck.model.product.dto.SizeDTO;
import selleck.model.product.service.ProductService;
import selleck.model.product.service.SizeService;
import selleck.model.user.dto.UserDTO;

import com.opensymphony.xwork2.ActionContext;
@Setter @Getter
public class AddCartAction extends SelleckActionSupport {
	private static Logger logger = Logger.getLogger(AddCartAction.class);
    private Double shipFee;
    private Double shipFeeJudge;
    private CartService cartService;
    private CountryService countryService;
    private ProductService productService;
    private SizeService sizeService;
    private List<CartDTO> cartDTOs;
    private CountryDTO countryDTO;
    private InputStream is;

    public String addCart(){
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        HttpSession httpSession = request.getSession();
        Map<String, Object> mapSession = ActionContext.getContext().getSession();
        shipFee = new Double(request.getServletContext().getInitParameter(Constants.FEE));
        shipFeeJudge = new Double(request.getServletContext().getInitParameter(Constants.FEEJUDGE));
        UserDTO user = (UserDTO)mapSession.get(Constants.SESSIONID);

        //1.判断有没有cookie存在
        Cookie[] cookies = request.getCookies();
        int j = 0;
        String sessionId = null;
        String countryCode = null;
        if ( null != cookies ) {
            for (int i = 0, len = cookies.length; i < len; i++) {
                Cookie c = cookies[i];
                if (c.getName().equals(cookieName)) { //cookieCartId
                    sessionId = c.getValue();
                    j++;
                }
                if (Constants.COUNTRYCODE.equals(c.getName())) {
                    countryCode = c.getValue();
                    j++;
                }
                if ( j >=2 && null != sessionId && null != countryCode) {
                    break;
                }
            }
            if ( j == 0) {
                Cookie cookie = new Cookie(cookieName, httpSession.getId());
                cookie.setMaxAge(360 *24*60 *60 *1000);
                cookie.setPath("/");
                response.addCookie(cookie);
            }
        }

        //2. 取国别
        if (countryCode == null) countryCode = getDefaultCountryCode();
        countryDTO = countryService.findByCode(countryCode);
        for (CartDTO cart : cartDTOs) {
            if ( null != user) cart.setUserId(user.getId());
            else {
                if ( null != sessionId){
                    cart.setSessionId(sessionId);
                } else {
                    cart.setSessionId(httpSession.getId());
                }
            }
            try{
                if ( null != cart.getQuantity() && cart.getQuantity() > 0) {
                    cart.setSizeId(cart.getSizeId());
                    cart.setCreateTime(new Timestamp(System.currentTimeMillis()));
                    SizeDTO sizeDTO = sizeService.findById(cart.getSizeId());
                    Double temprice = sizeDTO.getPrice(); //单价
                    if (temprice == 0) {logger.error("Product price is zero exception"); return FAIL;}
                    cart.setUnitPrice(temprice);
                    cart.setSubTotal(temprice * cart.getQuantity().intValue());
                    cartService.create(cart);
                }
            } catch (Exception e) {
                logger.error(e.toString());
            }
        }
        if ( null != user) {
            cartDTOs = cartService.list(user.getId());
        } else {
            cartDTOs = cartService.list(httpSession.getId());
        }
        return SUCCESS;
    }
}

 

posted @ 2016-11-24 15:39  黑土白云  阅读(174)  评论(0编辑  收藏  举报