📄 product.java
字号:
package com.bluesky.elecall.domain;
import java.math.BigDecimal;
import java.math.MathContext;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
public class Product {
private String id;
private String name;
private Long imageFileId;
private Long smallImageFileId;
private String model;
private Set attributes;
private BigDecimal price;
private Map<Long,BigDecimal> discountPolicies;
private boolean hasInventory;
private String detail;
private String unit;
private BigDecimal unitWeight;
private Map attributeMap;
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
private CategoryItem categoryItem;
// we are lazy, directly use level 5 category as Product Series entity.
private CategoryItem family;
private Manufactory manufactory;
public Manufactory getManufactory() {
return manufactory;
}
public void setManufactory(Manufactory manufactory) {
this.manufactory = manufactory;
}
public Product() {
attributes = new HashSet();
price = BigDecimal.ZERO;
discountPolicies = new TreeMap<Long,BigDecimal>();
family = new CategoryItem();
manufactory = new Manufactory();
attributeMap = new TreeMap<String, Object>();
}
public CategoryItem getFamily() {
return family;
}
public void setFamily(CategoryItem family) {
this.family = family;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getImageFileId() {
return imageFileId;
}
public void setImageFileId(Long imageFileId) {
this.imageFileId = imageFileId;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public Set getAttributes() {
return attributes;
}
public void setAttributes(Set attributes) {
this.attributes = attributes;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public Map getDiscountPolicies() {
return discountPolicies;
}
public void setDiscountPolicies(Map discountPolicies) {
this.discountPolicies = discountPolicies;
}
public Long getSmallImageFileId() {
return smallImageFileId;
}
public void setSmallImageFileId(Long smallImageFileId) {
this.smallImageFileId = smallImageFileId;
}
public BigDecimal getUnitWeight() {
return unitWeight;
}
public void setUnitWeight(BigDecimal unitWeight) {
this.unitWeight = unitWeight;
}
public boolean isHasInventory() {
return hasInventory;
}
public void setHasInventory(boolean hasInventory) {
this.hasInventory = hasInventory;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public CategoryItem getCategoryItem() {
return categoryItem;
}
public void setCategoryItem(CategoryItem categoryItem) {
this.categoryItem = categoryItem;
}
public ProductAttribute addAttribute(ProductAttribute attribute) {
if (!attributeMap.containsKey(attribute.getName())) {
attributeMap.put(attribute.getName(), attribute);
getAttributes().add(attribute);
attribute.setProduct(this);
return attribute;
}
return null;
}
public String getShortDetail() {
if(name!=null && name.trim().length()>0)
return name;
StringBuilder sb = new StringBuilder();
sb.append(name);
Iterator<ProductAttribute> paIt = attributes.iterator();
int i=0;
while (paIt.hasNext()) {
ProductAttribute pa = paIt.next();
if(i>0)
sb.append(",");
sb.append(pa.getValue());
i++;
}
return sb.toString();
}
public static Product getSample(CategoryItem level4Item, CategoryItem family) {
String[] names = new String[] { "电脑", "电视机", "洗衣机", "冰箱", "汽车" };
String[] unitNames = new String[] { "个", "台", "卷", "枝", "公斤" };
Random random = new Random();
int index = random.nextInt(names.length);
Product p = new Product();
p.setName(names[random.nextInt(5)]);
p.setDetail("no detail");
int basePrice = random.nextInt(500);
MathContext money = new MathContext(2);
p.setPrice(new BigDecimal(basePrice,money));
p.getDiscountPolicies().put(5L, new BigDecimal(basePrice*0.9,money));
p.getDiscountPolicies().put(50L, new BigDecimal(basePrice*0.85,money));
p.getDiscountPolicies().put(100L, new BigDecimal(basePrice*0.80,money));
p.getManufactory().setId(random.nextInt(5) + 1);
p.addAttribute(ProductAttribute.getSample());
p.addAttribute(ProductAttribute.getSample());
p.setCategoryItem(level4Item);
p.setFamily(family);
p.setUnit(unitNames[random.nextInt(unitNames.length)]);
p.setUnitWeight(new BigDecimal(random.nextInt(100)));
return p;
}
public BigDecimal getUnitPrice(long quantity){
BigDecimal rslt = price;
//sort the base_quantity
SortedSet<Long> sortedBaseQuantites = new TreeSet<Long>();
//sortedBaseQuantites.add(1L);
Iterator<Long> it = discountPolicies.keySet().iterator();
while(it.hasNext())
sortedBaseQuantites.add(it.next());
long lastBaseQuantity = 1;
Iterator<Long> it2 = sortedBaseQuantites.iterator();
while(it2.hasNext()){
long curBaseQty = it2.next();
if(quantity >= lastBaseQuantity && quantity < curBaseQty)
break;
lastBaseQuantity = curBaseQty;
}
if(lastBaseQuantity==1)
rslt = price;
else
rslt = discountPolicies.get(lastBaseQuantity);
return rslt;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -