package cc.mrbird.febs.common.enumerates; import lombok.Getter; import java.math.BigDecimal; //商品星级 @Getter public enum StarRatingEnum { /** * 定级规则 * 大于最小值,小于等于最大值 */ NORMAL("普通",0,30,1), ONE_STAR("一星",30,50,2), TWO_STAR("二星",50,100,3), THREE_STAR("三星",100,200,4); private String name; private Integer minValue; private Integer maxValue; private Integer code; StarRatingEnum(String name,Integer minValue, Integer maxValue,Integer code) { this.name = name; this.minValue = minValue; this.maxValue = maxValue; this.code = code; } /** * 根据商品原价获取对应的商品星级 * @param price * @return */ public String belongStarRating(String price){ String name = StarRatingEnum.NORMAL.name; BigDecimal priceBig = new BigDecimal(price).setScale(2,BigDecimal.ROUND_DOWN); for (StarRatingEnum starRatingEnum : StarRatingEnum.values()) { BigDecimal minValue = new BigDecimal(starRatingEnum.minValue).setScale(2, BigDecimal.ROUND_DOWN); BigDecimal maxValue = new BigDecimal(starRatingEnum.maxValue).setScale(2, BigDecimal.ROUND_DOWN); if(priceBig.compareTo(minValue) > 0 && priceBig.compareTo(maxValue) <= 0){ name = starRatingEnum.name; } } return name; } /** * 根据输入的商品星级获取对应的Code * @param name * @return */ public Integer getGoodsStarCode(String name){ Integer code = 0; for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){ if(starRatingEnum.name.equals(name)){ code = starRatingEnum.code; } } return code; } /** * 获取商品可以设置的最小价格 * @return */ public Integer getMinValue(){ Integer totalMinvalue = 0; for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){ if(starRatingEnum.minValue < totalMinvalue){ totalMinvalue = starRatingEnum.minValue; } } return totalMinvalue; } /** * 获取商品可以设置的最大价格 * @return */ public Integer getMaxValue(){ Integer totalMaxValue = 0; for(StarRatingEnum starRatingEnum : StarRatingEnum.values()){ if(starRatingEnum.maxValue > totalMaxValue){ totalMaxValue = starRatingEnum.maxValue; } } return totalMaxValue; } public static void main(String[] args) { String s = StarRatingEnum.NORMAL.belongStarRating(String.valueOf(100)); System.out.println(s); } }