yujian
2019-07-30 969ac5f2ef08e2cd662853d9b771c9663c5d2c70
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.yeshi.fanli.util;
 
import java.math.BigDecimal;
import java.util.List;
 
import org.springframework.stereotype.Component;
import org.yeshi.utils.BigDecimalUtil;
 
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil;
 
@Component
public class CommonGoodsUtil {
    
    /**
     * 商品佣金包含¥符号
     * @param goods
     * @param rate
     * @return
     */
    public static String getCommissionInfo(CommonGoods goods, BigDecimal rate) {
        return "¥" + getCommission(goods, rate).toString();
    }
    
    
    /**
     *        商品佣金
     * @param goods
     * @param rate
     * @return
     */
    public static BigDecimal getCommission(CommonGoods goods, BigDecimal rate) {
        BigDecimal money = null;
 
        if (StringUtil.isNullOrEmpty(goods.getCouponInfo())
                || goods.getCouponInfo().trim().equalsIgnoreCase("无")) {
            money = MoneyBigDecimalUtil.mul(
                    MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(goods.getPrice(), goods.getRate()),
                            new BigDecimal("0.01")),
                    MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
        } else// 有券
        {
            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
            BigDecimal startFee = list.get(0);
            BigDecimal couponAccount = list.get(1);
            if (startFee.compareTo(goods.getPrice()) <= 0
                    && goods.getPrice().compareTo(couponAccount) > 0) {
                BigDecimal finalPrice = goods.getPrice().subtract(couponAccount);
                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil
                        .mul(MoneyBigDecimalUtil.mul(finalPrice, goods.getRate()), new BigDecimal("0.01")),
                        MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
 
            } else {// 不能用券
                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(
                        MoneyBigDecimalUtil.mul(goods.getPrice(), goods.getRate()),
                        new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
            }
        }
        return BigDecimalUtil.getWithNoZera(money);
    }
    
    
    /**
     * 计算商品券后价,没有券则返回原价
     * 
     * @param goodsBrief
     * @return
     */
    public static BigDecimal getAfterUseCouplePrice(CommonGoods goods) {
        if (StringUtil.isNullOrEmpty(goods.getCouponInfo()) || "无".equals(goods.getCouponInfo())) {
            return goods.getPrice();
        } else {
            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
            BigDecimal startFee = list.get(0);
            BigDecimal couponAccount = list.get(1);
            if (startFee.compareTo(goods.getPrice()) <= 0
                    && goods.getPrice().compareTo(couponAccount) > 0) {
                BigDecimal finalPrice = goods.getPrice().subtract(couponAccount);
                return finalPrice;
            } else {// 不能用券
                return goods.getPrice();
            }
        }
    }
}