| | |
| | | package com.yeshi.fanli.util.vipshop;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | |
|
| | | import org.yeshi.utils.BigDecimalUtil;
|
| | |
|
| | | import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
|
| | | public class VipShopUtil {
|
| | |
|
| | | private static String getBase64Str(String str) {
|
| | | try {
|
| | | return StringUtil.getBase64String(str);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取分享的渠道标识
|
| | | * @Title: getShareChanTag
|
| | | * @Description: |
| | | * @param uid
|
| | | * @return |
| | | * String 返回类型
|
| | | * @throws
|
| | | */
|
| | | public static String getShareChanTag(Long uid) {
|
| | | return getBase64Str("share#" + uid);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取自购的渠道标识
|
| | | * @Title: getBuyChanTag
|
| | | * @Description: |
| | | * @param uid
|
| | | * @return |
| | | * String 返回类型
|
| | | * @throws
|
| | | */
|
| | | public static String getBuyChanTag(Long uid) {
|
| | | return getBase64Str("buy#" + uid);
|
| | |
|
| | | }
|
| | |
|
| | | public static String getUidFromChanTag(String tag) {
|
| | | String decodeTag = StringUtil.getFromBase64(tag);
|
| | | return decodeTag.split("#")[1];
|
| | | }
|
| | |
|
| | | public static String getTypeFromChanTag(String tag) {
|
| | | String decodeTag = StringUtil.getFromBase64(tag);
|
| | | return decodeTag.split("#")[0];
|
| | | }
|
| | |
|
| | | public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) {
|
| | | BigDecimal money = null;
|
| | | BigDecimal hundred = new BigDecimal(100);
|
| | | rate = MoneyBigDecimalUtil.div(rate, hundred);
|
| | | money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate);
|
| | | return BigDecimalUtil.getWithNoZera(money).setScale(2);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取订单详情的唯一标识
|
| | | * @Title: getOrderDetailIdentifyCode
|
| | | * @Description: |
| | | * @param orderSn
|
| | | * @param goodsId
|
| | | * @param sizeId
|
| | | * @return |
| | | * String 返回类型
|
| | | * @throws
|
| | | */
|
| | | public static String getOrderDetailIdentifyCode(String orderSn, String goodsId, String sizeId) {
|
| | |
|
| | | return StringUtil.Md5(orderSn + "#" + goodsId + "#" + sizeId);
|
| | | }
|
| | | }
|
| | | package com.yeshi.fanli.util.vipshop; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | import org.yeshi.utils.BigDecimalUtil; |
| | | import org.yeshi.utils.NumberUtil; |
| | | |
| | | import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | |
| | | public class VipShopUtil { |
| | | |
| | | private static String getBase64Str(String str) { |
| | | try { |
| | | return StringUtil.getBase64String(str); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 获取分享的渠道标识 |
| | | * |
| | | * @param uid |
| | | * @return String 返回类型 |
| | | * @throws |
| | | * @Title: getShareChanTag |
| | | * @Description: |
| | | */ |
| | | public static String getShareChanTag(Long uid) { |
| | | return getBase64Str("share#" + uid); |
| | | } |
| | | |
| | | /** |
| | | * 获取自购的渠道标识 |
| | | * |
| | | * @param uid |
| | | * @return String 返回类型 |
| | | * @throws |
| | | * @Title: getBuyChanTag |
| | | * @Description: |
| | | */ |
| | | public static String getBuyChanTag(Long uid) { |
| | | return getBase64Str("buy#" + uid); |
| | | |
| | | } |
| | | |
| | | public static String getCouponChanTag() { |
| | | return getBase64Str("coupon"); |
| | | |
| | | } |
| | | |
| | | public static String getUidFromChanTag(String tag) { |
| | | String decodeTag = StringUtil.getFromBase64(tag); |
| | | return decodeTag.split("#")[1]; |
| | | } |
| | | |
| | | public static String getTypeFromChanTag(String tag) { |
| | | String decodeTag = StringUtil.getFromBase64(tag); |
| | | return decodeTag.split("#")[0]; |
| | | } |
| | | |
| | | public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) { |
| | | BigDecimal money = null; |
| | | BigDecimal hundred = new BigDecimal(100); |
| | | rate = MoneyBigDecimalUtil.div(rate, hundred); |
| | | money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate); |
| | | return BigDecimalUtil.getWithNoZera(money).setScale(2); |
| | | } |
| | | |
| | | public static BigDecimal getCouponPrice(VIPGoodsInfo goods) { |
| | | return new BigDecimal(goods.getVipPrice()); |
| | | } |
| | | |
| | | /** |
| | | * 获取订单详情的唯一标识 |
| | | * |
| | | * @param orderSn |
| | | * @param goodsId |
| | | * @param sizeId |
| | | * @return String 返回类型 |
| | | * @throws |
| | | * @Title: getOrderDetailIdentifyCode |
| | | * @Description: |
| | | */ |
| | | public static String getOrderDetailIdentifyCode(String orderSn, String goodsId, String sizeId) { |
| | | |
| | | return StringUtil.Md5(orderSn + "#" + goodsId + "#" + sizeId); |
| | | } |
| | | |
| | | public static boolean isVIPShopLink(String url) { |
| | | return url.contains(".vip.com/"); |
| | | } |
| | | |
| | | public static String parseGoodsIdByUrl(String url) { |
| | | try { |
| | | if (isVIPShopLink(url)) { |
| | | if (url.contains("detail-") || url.contains("product-")) { |
| | | String preUrl = url.split("\\?")[0]; |
| | | String goodsId = preUrl.split("-")[preUrl.split("-").length - 1].replace(".html", "").replace(".htm", |
| | | ""); |
| | | if (NumberUtil.isNumeric(goodsId)) |
| | | return goodsId; |
| | | } else { |
| | | if (url.split("\\?").length > 1) { |
| | | String param = url.split("\\?")[1]; |
| | | String[] params = param.split("&"); |
| | | for (String p : params) { |
| | | String[] ps = p.split("="); |
| | | if (ps.length > 1 && ps[0].trim().equalsIgnoreCase("goodsId")) { |
| | | return ps[1].trim(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // 通过订单侠接口解析 |
| | | return DingDanXiaApiUtil.parseGoodsIdFromLink(url); |
| | | } |
| | | } catch (Exception e) { |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | |
| | | System.out.print(parseGoodsIdByUrl("https://mst.vip.com/x6M88WQc9Abq5h0CHNg1uw.php?wapid=mst_100099181&_src=mst&extra_banner=115099181&nova=1&nova_platform=1&mst_page_type=guide&goodsId=6920553939593155215&brandId=1712199535&actType=normal&launchId=&nmsns=shop_android-9.10.2-link&nst=product&nsbc=&nct=link&ncid=9ab423d2-932f-3916-b913-4ddf57e809ed&nabtid=13&nuid=59508964&nchl_param=share:9ab423d2-932f-3916-b913-4ddf57e809ed:1697182347995&mars_cid_a=9ab423d2-932f-3916-b913-4ddf57e809ed&chl_type=share")); |
| | | } |
| | | } |
| | | |
| | | |