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,則顯示購物車中的數量。