admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/suning/SuningUtil.java
@@ -1,78 +1,126 @@
package com.yeshi.fanli.util.suning;
import java.math.BigDecimal;
import org.yeshi.utils.BigDecimalUtil;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
public class SuningUtil {
   public static BigDecimal getGoodsFanLiMoney(SuningGoodsInfo goods, BigDecimal rate) {
      BigDecimal hundred = new BigDecimal(100);
      rate = MoneyBigDecimalUtil.div(rate, hundred);
      BigDecimal afterUseCouponPrice = new BigDecimal(goods.getCommodityInfo().getCommodityPrice());
      if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {
         // 有券
         BigDecimal startPrice = new BigDecimal(goods.getCouponInfo().getBounsLimit());
         if (afterUseCouponPrice.compareTo(startPrice) >= 0) {
            afterUseCouponPrice = afterUseCouponPrice.subtract(startPrice);
         }
      }
      BigDecimal money = MoneyBigDecimalUtil.mul(afterUseCouponPrice, rate);
      return BigDecimalUtil.getWithNoZera(money).setScale(2);
   }
   /**
    * 获取拼接的商品ID
    * @Title: getConcatGoodsIId
    * @Description:
    * @param supplierCode
    * @param goodsId
    * @return
    * String 返回类型
    * @throws
    */
   public static String getConcatGoodsIId(String supplierCode, String goodsId) {
      return supplierCode + "-" + goodsId;
   }
   public static String getFullSupplierCode(String supplierCode){
      for (int i = 0; i < 10; i++) {
         if (supplierCode.length() < 10)
            supplierCode = "0" + supplierCode;
      }
      return supplierCode;
   }
   /**
    * 通过拼接的商品ID解析出来正确的商品ID
    * @Title: getGoodsIdDetail
    * @Description:
    * @param concatGoodsId
    * @return
    * String[] 返回类型
    * @throws
    */
   public static String[] getGoodsIdDetail(String concatGoodsId) {
      String[] sts = concatGoodsId.split("-");
      String supplierCode = sts[0];
      for (int i = 0; i < 10; i++) {
         if (supplierCode.length() < 10)
            supplierCode = "0" + supplierCode;
      }
      return new String[] { supplierCode, sts[1] };
   }
   public static String getProductUrl(String supplierCode, String goodsId) {
      return String.format("https://product.suning.com/%s/%s.html", supplierCode, goodsId);
   }
}
package com.yeshi.fanli.util.suning;
import java.math.BigDecimal;
import org.yeshi.utils.BigDecimalUtil;
import org.yeshi.utils.NumberUtil;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import org.yeshi.utils.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
public class SuningUtil {
    public static BigDecimal getGoodsFanLiMoney(SuningGoodsInfo goods, BigDecimal rate) {
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        BigDecimal afterUseCouponPrice = getCouponPrice(goods);
        BigDecimal commission = MoneyBigDecimalUtil.mul(afterUseCouponPrice, MoneyBigDecimalUtil.div(new BigDecimal(goods.getCommodityInfo().getRate()), new BigDecimal(100), 5));
        BigDecimal money = MoneyBigDecimalUtil.mul(commission,
                rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * 获取券后价
     *
     * @param goods
     * @return
     */
    public static BigDecimal getCouponPrice(SuningGoodsInfo goods) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        BigDecimal afterUseCouponPrice = new BigDecimal(commodityPrice);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {
            // 有券
            BigDecimal startPrice = null;
            if (StringUtil.isNullOrEmpty(goods.getCouponInfo().getBounsLimit())) {
                startPrice = new BigDecimal(goods.getCouponInfo().getCouponValue());
            } else
                startPrice = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            if (afterUseCouponPrice.compareTo(startPrice) >= 0) {
                afterUseCouponPrice = afterUseCouponPrice.subtract(new BigDecimal(goods.getCouponInfo().getCouponValue()));
            }
        }
        return afterUseCouponPrice;
    }
    /**
     * 获取拼接的商品ID
     *
     * @param supplierCode
     * @param goodsId
     * @return String 返回类型
     * @throws
     * @Title: getConcatGoodsIId
     * @Description:
     */
    public static String getConcatGoodsIId(String supplierCode, String goodsId) {
        return supplierCode + "-" + goodsId;
    }
    public static String getFullSupplierCode(String supplierCode) {
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
        return supplierCode;
    }
    /**
     * 通过拼接的商品ID解析出来正确的商品ID
     *
     * @param concatGoodsId
     * @return String[] 返回类型
     * @throws
     * @Title: getGoodsIdDetail
     * @Description:
     */
    public static String[] getGoodsIdDetail(String concatGoodsId) {
        String[] sts = concatGoodsId.split("-");
        String supplierCode = sts[0];
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
        return new String[]{supplierCode, sts[1]};
    }
    public static String getProductUrl(String supplierCode, String goodsId) {
        return String.format("https://product.suning.com/%s/%s.html", supplierCode, goodsId);
    }
    public static boolean isSuningLink(String url) {
        return (url.contains(".suning.com/")
                && (url.contains(".suning.com/product/") || url.contains("product.suning.com/")));
    }
    public static String parseGoodsIdByUrl(String url) {
        try {
            if (isSuningLink(url)) {
                String preUrl = url.split("\\?")[0];
                String[] sts = preUrl.split("/");
                if (sts.length > 2) {
                    String goodsId = sts[sts.length - 1].replace(".html", "").replace(".htm", "");
                    String supplierCode = sts[sts.length - 2];
                    if (NumberUtil.isNumeric(goodsId) && NumberUtil.isNumeric(supplierCode)) {
                        return supplierCode + "-" + goodsId;
                    }
                }
            }
        } catch (Exception e) {
        }
        return null;
    }
}