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

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