SSH框架搭建電商系統之購物車表與購物車和商品庫存問題(不用jquery)

1.購物車表的結構

	//購物車ID
	private int cartId;
	//商品ID
	private int productId;
	//商品購買數量
	private int productNum;
	//商品當前單價
	private double price;
	//用戶ID
	private int userId;
	//購物車表單創建時間
	private Product product;
	
	private Date createTime;
	
	//購物車中以保存商品的數量
	private int productOldNum;

2.查詢購物車中所有數據,並更新到session中

	private void findAll(){
		User user = (User) ActionContext.getContext().getSession().get("existUser");
			//查詢該用戶購物車中所有的商品,存入session
			List<Cart> existCarts = cartService.findByUserId(user);
			double totalMoney = 0;
			for(int i=0;i<existCarts.size();i++){
				//通過商品ID查詢商品的所有信息,並將他放入LIST中
				existCarts.get(i).setProduct(cartService.productFindById(existCarts.get(i).getProductId()));
				double money = existCarts.get(i).getPrice();
				int num = existCarts.get(i).getProductNum();
				totalMoney = totalMoney + num*money;
			}
			ActionContext.getContext().getSession().put("totalMoney", totalMoney);			
			ActionContext.getContext().getSession().put("existCarts", existCarts);
	}


3.單頁商品頁保存到購物車方法,其中productOldNum用來存放當前選擇的商品個數,爲了之後修改商品個數時修改庫存做準備。

新創建的購物車單,定於ProductOldNum=0

思路:修改的庫存=product原有的庫存-新選擇的商品數productNum+之前選擇的商品數productOldNum

在接受productId後,將該商品數據庫中的productOldNum放入session中(更新後爲提交的購買商品數量)。


	public String saveUI(){
		User user = (User) ActionContext.getContext().getSession().get("existUser");
		Product product = (Product)ActionContext.getContext().getSession().get("clickProduct");
		//若不是單頁傳遞的數值,則通過接收的商品ID查詢商品
		if(product==null)
		{
			String productIdnum[]=(String[])ActionContext.getContext().getParameters().get("productIdnum");
			int productId = Integer.valueOf(productIdnum[0].trim());
			System.out.println("商品Id"+productId);
			product = cartService.productFindById(productId);
		}
		if(user!=null){
			//取傳過來的參數
			String quantity[]=(String[])ActionContext.getContext().getParameters().get("quantity");
			System.out.println(product.toString());
			if(quantity!=null){
				cart.setProductNum(Integer.valueOf(quantity[0].trim()));
			}
			
			int cartId = cartService.findByUserIdAndProductId(user.getUserId(),product.getProductId());
			cart.setUserId(user.getUserId());
			cart.setProductId(product.getProductId());
			if(product.getIsSale()==0){
				cart.setPrice(product.getPrice());
			}else{
				cart.setPrice(product.getSalePrice());
			}
			if(cart.getProductNum()==0){
				cart.setProductNum(1);
			}
			cart.setCreateTime(new Date());
			int oldNum=0;
			if(cartId==0){
				cart = cartService.save(cart);	
			}else{
				cart.setCartId(cartId);
				oldNum = cartService.findByCartId(cartId).getProductOldNum();
				cart = cartService.update(cart);
			}
			System.out.println(cart.toString());
			System.out.println(oldNum);
			//減少商品對應的庫存
			product.setProductNum(product.getProductNum()-cart.getProductNum()+oldNum);
			cartService.update(product);
			cart.setProductOldNum(cart.getProductNum());
			
			cartService.update(cart);
			int productOldNum1 = cart.getProductOldNum();
			System.out.println("這是值productOldNum1阿!!!"+productOldNum1);
			//查詢該用戶購物車中所有的商品,存入session
			List<Cart> existCarts = cartService.findByUserId(user);
			double totalMoney = 0;
			for(int i=0;i<existCarts.size();i++){
				//通過商品ID查詢商品的所有信息,並將他放入LIST中
				existCarts.get(i).setProduct(cartService.productFindById(existCarts.get(i).getProductId()));
				double money = existCarts.get(i).getPrice();
				int num = existCarts.get(i).getProductNum();
				totalMoney = totalMoney + num*money;
			}
			ActionContext.getContext().getSession().put("productOldNum1",productOldNum1);
			ActionContext.getContext().getSession().put("totalMoney", totalMoney);			
			ActionContext.getContext().getSession().put("existCarts", existCarts);
			return "saveUI";
		}
		return "loginUI";

	}


4.顯示單頁時做一個<s:if test="productOldNum1!=0">的判斷(該值爲存入session中的productOldNum)

若爲0,則顯示單件爲1。若不爲0,則顯示購物車中的數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章