pull/1/head
LFE 4 weeks ago
parent 12cf9b7cc1
commit 2e4f4cd1e4

@ -13,93 +13,128 @@ import java.util.Map;
*
*/
public class Cart {
// 注释掉的代码表示之前可能考虑过直接存储总数和总价,但在此实现中,选择动态计算这些值
//private Integer totalCount;
//private BigDecimal totalPrice;
/**
*
*/
public Integer getTotalCount() {
Integer totalCount = 0;
// 初始化总数量为0
for (Map.Entry<Integer,CartItem>entry : items.entrySet()) {
// 遍历购物车中的每一项
totalCount += entry.getValue().getCount();
// 累加每一项的数量
}
return totalCount;
// 返回总数量
}
/**
*
*/
public BigDecimal getTotalPrice() {
BigDecimal totalPrice = new BigDecimal(0);
// 初始化总价格为0
for (Map.Entry<Integer,CartItem>entry : items.entrySet()) {
// 遍历购物车中的每一项
totalPrice = totalPrice.add(entry.getValue().getTotalPrice());
// 累加每一项的总价格
}
return totalPrice;
// 返回总价格
}
/**
*
*/
public Map<Integer, CartItem> getItems() {
return items;
// 返回购物车中的商品项
}
/**
*
*/
public void setItems(Map<Integer, CartItem> items) {
this.items = items;
// 设置购物车中的商品项
}
/**
* keyvalue
* Mapkeyvalue使LinkedHashMap
*/
private Map<Integer,CartItem> items = new LinkedHashMap<Integer, CartItem>();
/**
* toString
*/
@Override
public String toString() {
return "Cart{" +
"totalCount=" + getTotalCount() +
// 总数量
", totalPrice=" + getTotalPrice() +
// 总价格
", items=" + items +
// 商品项
'}';
}
/**
*
* @param cartItem
*
* @param cartItem
*/
public void addItem(CartItem cartItem) {
//先查看购物车中是否包含次商品,如果有的话,数量更新,总金额更新;如果没有,直接放到集合中即可
// 先查看购物车中是否包含此商品
CartItem item = items.get(cartItem.getId());
if(item == null) {
//之前没有添加过此商品
// 之前没有添加过此商品,直接添加到购物车中
items.put(cartItem.getId(),cartItem);
} else {
item.setCount(item.getCount() + 1);//数量累计
item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));//更新总金额
// 购物车中已有此商品数量加1并更新总金额
item.setCount(item.getCount() + 1);
// 数量累计
item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));
// 更新总金额
}
}
/**
*
* @param id
*
* @param id
*/
public void deleteItem(Integer id) {
items.remove(id);
// 从购物车中删除指定编号的商品项
}
/**
*
*
*/
public void clear() {
items.clear();
// 清空购物车
}
/**
*
* @param id
* @param count
*
* @param id
* @param count
*/
public void updateCount(Integer id,Integer count) {
//先查看购物车中是否包含次商品,如果有的话,数量更新,总金额更新;
// 先查看购物车中是否包含此商品项
CartItem cartItem = items.get(id);
if(cartItem != null) {
cartItem.setCount(count);
cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount())));
if(cartItem != null) {
// 购物车中已有此商品项,修改数量并更新总金额
cartItem.setCount(count);
// 修改数量
cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount())));
// 更新总金额
}
}
}
}
Loading…
Cancel
Save