对象结构
CartItem
购物车项对象
放在domain包中
-
三个属性
-
Route route商品对象
-
Integer num数量
-
Double subTotal小计
-
-
使用@Data注解
-
修改getSubTotal()方法
计算结果 = 线路价格 * 数量
返回计算结果
package com.it.travel.domain;
import lombok.Data;
/**
* 购物车每一项
*/
@Data
public class CartItem {
private Route route; //商品对象
private Integer num; //数量
private Double subTotal; //小计
//计算小计的金额
public Double getSubTotal() {
this.subTotal = num * route.getPrice();
return subTotal;
}
}
Cart
-
添加@Data注解
-
属性
-
Integer cartNum 购物车数量
-
Double cartTotal 购物车总金额
-
LinkedHashMap<String, CartItem> cartItemMap 购物项集合,使用rid做为键 注:这里要创建集合对象
-
-
重写购物车数量getCartNum()方法
-
将购物车数量清0
-
遍历购物项集合,得到每个购物项
-
获取购物项的数量进行累加
-
返回累加的值
-
-
重写购物车总金额getCartTotal()方法
-
将购物车总金额设置为0
-
遍历购物项集合
-
累加每一项的金额
-
返回总金额
-
package com.it.travel.domain;
import lombok.Data;
import java.util.LinkedHashMap;
/**
* 购物车
*/
@Data
public class Cart {
private Integer cartNum; //购物车数量
private Double cartTotal; //购物车总金额
//购物项集合,使用rid做为键,注:这里要创建集合对象
private LinkedHashMap<String, CartItem> cartItemMap = new LinkedHashMap<>();
//计算总数量
public Integer getCartNum() {
this.cartNum = 0;
//遍历集合累加所有项的数量
for (CartItem cartItem : cartItemMap.values()) {
this.cartNum += cartItem.getNum();
}
return cartNum;
}
//计算总金额
public Double getCartTotal() {
this.cartTotal = 0d;
//遍历集合累加所有项的小计
for (CartItem cartItem : cartItemMap.values()) {
this.cartTotal += cartItem.getSubTotal();
}
return cartTotal;
}
}