这两个vo比较独特,我们重写了它的get/set方法,对他的属性进行了计算。
package com.gulimall.cart.vo;
import java.math.BigDecimal;
import java.util.List;
/**
* 整个购物车
* 需要计算的属性,重写它的get方法,保证每次获取属性都会进行计算
*/
public class Cart {
List<CartItem> items;
private Integer countNum;//商品数量
private Integer countType;//商品类型种类
private BigDecimal totalAmount;//商品总价
private BigDecimal reduce = new BigDecimal("0.00");//减免价格(默认为0)
public List<CartItem> getItems() {
return items;
}
public void setItems(List<CartItem> items) {
this.items = items;
}
public Integer getCountNum() {
int count = 0;
if (this.items!=null && this.items.size()>0){
for (CartItem item : items) {
count += item.getCount();
}
}
return count;
}
public Integer getCountType() {
if (this.items!=null && this.items.size()>0){
return this.items.size();
}else {
return 0;
}
}
public BigDecimal getTotalAmount() {
BigDecimal total = new BigDecimal("0");
//1、计算购物项总价
if (this.items!=null && this.items.size()>0){
for (CartItem item : this.items) {
total = total.add(item.getTotalPrice());
}
}
//2、减去优惠信息
total = total.subtract(this.getReduce());
return total;
}
public BigDecimal getReduce() {
return reduce;
}
public void setReduce(BigDecimal reduce) {
this.reduce = reduce;
}
}
package com.gulimall.cart.vo;
import java.math.BigDecimal;
import java.util.List;
/**
* 购物项内容
*/
public class CartItem {
private Long skuId;
private Boolean check = true;
private String title;
private String image;
private List<String> skuAttr;
private BigDecimal price;
private Integer count;
private BigDecimal totalPrice;
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public Boolean getCheck() {
return check;
}
public void setCheck(Boolean check) {
this.check = check;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public List<String> getSkuAttr() {
return skuAttr;
}
public void setSkuAttr(List<String> skuAttr) {
this.skuAttr = skuAttr;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public BigDecimal getTotalPrice() {
BigDecimal multiply = this.price.multiply(new BigDecimal("" + this.count)); //BigDecimal的乘法转化成字符串不会丢失精度
return multiply;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
}
标签:return,BigDecimal,items,void,private,vo,---,购物车,public
From: https://www.cnblogs.com/morehair/p/17111870.html