admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -23,6 +23,7 @@
import javax.xml.parsers.DocumentBuilderFactory;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.util.*;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
@@ -33,6 +34,7 @@
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.stereotype.Component;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
@@ -67,12 +69,7 @@
import com.yeshi.fanli.service.inter.goods.TaoBaoLinkService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import org.yeshi.utils.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TaoBaoHttpUtil;
import org.yeshi.utils.TimeUtil;
import com.yeshi.common.vo.ClientTextStyleVO;
@@ -187,7 +184,7 @@
                    String id = st.replace("id=", "").trim();
                    TaoBaoGoodsBrief tb = null;
                    try {
                        tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
                        tb = TaoKeApiUtil.searchGoodsDetail(id);
                    } catch (TaobaoGoodsDownException e) {
                        e.printStackTrace();
                    }
@@ -211,7 +208,7 @@
            for (String c : filter.getCateIds().split(","))
                cateList.add(Long.parseLong(c));
        }
        return TaoKeApiUtil.searchWuLiao(filter, specialId, relationId);
        return TaoKeApiUtil.searchWuLiaoNew(filter, specialId, relationId);
    }
    /**
@@ -472,7 +469,7 @@
                    String id = st.replace("id=", "").trim();
                    TaoBaoGoodsBrief tb = null;
                    try {
                        tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
                        tb = TaoKeApiUtil.searchGoodsDetail(id);
                    } catch (TaobaoGoodsDownException e) {
                        e.printStackTrace();
                    }
@@ -499,7 +496,7 @@
        }
        if (1 > 0)
            return TaoKeApiUtil.searchWuLiao(filter, null, null);
            return TaoKeApiUtil.searchWuLiaoNew(filter, null, null);
        Map<String, String> params = new HashMap<String, String>();
        String key = filter.getKey();
@@ -827,7 +824,7 @@
     * @param pid
     * @return
     */
    public static TaoBaoLink getTbLink(long auctionId, String pid, TaoBaoUnionConfig config) {
    public static TaoBaoLink getTbLink(String auctionId, String pid, TaoBaoUnionConfig config) {
        TaoBaoLink tbk = null;
        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
        String adzoneid = pid.split("_")[3];
@@ -883,7 +880,7 @@
     * @param pid
     * @return
     */
    public static TaoBaoLink getTbLinkForShare(long auctionId, String pid, TaoBaoUnionConfig config) {
    public static TaoBaoLink getTbLinkForShare(String auctionId, String pid, TaoBaoUnionConfig config) {
        TaoBaoLink tbk = null;
        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
        selfAdzoneCreate(pid, cookie);
@@ -941,7 +938,7 @@
     * @param pid
     * @return
     */
    public static TaoBaoLink getTbLinkWithCoupon(String picture, String title, String activityId, long auctionId,
    public static TaoBaoLink getTbLinkWithCoupon(String picture, String title, String activityId, String auctionId,
                                                 String pid) {
        activityId = StringUtil.isNullOrEmpty(activityId) ? "da75a5880d4c41ab88a82256b069a38c" : activityId;
        String url = String.format("https://uland.taobao.com/coupon/edetail?activityId=%s&pid=%s&itemId=%s", activityId,
@@ -1078,7 +1075,7 @@
     * 获取未参与推广的淘宝商品详情 @Title: getTaoBaoGoodsBrief @Description: @param
     * id @return TaoBaoGoodsBrief 包含(标题与图片) @throws
     */
    public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(Long id) {
    public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(String id) {
        TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(id + "");
        return tb;
    }
@@ -1112,7 +1109,7 @@
            return new ArrayList<>();
        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
        try {
            taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId));
            taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
        } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
        }
@@ -1133,7 +1130,7 @@
            return null;
        TaoBaoGoodsBrief tb = null;
        try {
            tb = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId));
            tb = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
        } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
        }
@@ -1159,7 +1156,7 @@
            taoBaoGoodsBriefExtra.setTaoBaoHongBaoInfo(taobaoHongbaoInfo);
            taoBaoGoodsBriefExtra.setTaoBaoQuanInfo(taobaoQuanInfo);
            taoBaoGoodsBriefExtra.setAuctionId(Long.parseLong(taoBaoCoupon.getAuctionId()));
            taoBaoGoodsBriefExtra.setAuctionId(taoBaoCoupon.getAuctionId());
            taoBaoGoodsBriefExtra.setAuctionUrl(taoBaoCoupon.getAuctionUrl());
            taoBaoGoodsBriefExtra.setBaoyou(true);
            taoBaoGoodsBriefExtra.setBiz30day(taoBaoCoupon.getBiz30day());
@@ -1218,7 +1215,7 @@
                imgStrs.add(attr);
            }
            taobao = new TaoBaoGoodsBrief();
            taobao.setAuctionId(Long.parseLong(auctionId));
            taobao.setAuctionId(auctionId);
            taobao.setTitle(title);
            taobao.setZkPrice(new BigDecimal(price));
            taobao.setImgList(imgStrs);
@@ -1315,7 +1312,7 @@
                taoBaoGoodsBrief.setTitle(title);
                taoBaoGoodsBrief.setImgList(imgs);
                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
                taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId));
                taoBaoGoodsBrief.setAuctionId(auctionId);
                taoBaoGoodsBrief.setUserType(1);
            } else {
                Connection connect2 = Jsoup.connect(String.format(TB_URL, auctionId));
@@ -1352,7 +1349,7 @@
                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
                taoBaoGoodsBrief.setImgList(imgs);
                taoBaoGoodsBrief.setZkPrice(new BigDecimal(price));
                taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId));
                taoBaoGoodsBrief.setAuctionId(auctionId);
                taoBaoGoodsBrief.setUserType(0);
            }
        } catch (Exception e) {
@@ -1520,7 +1517,7 @@
    /**
     * 获取图文详情
     *
     * @param auctionId
     * @param id
     */
    public static List<String> getGoodsTextAndImageDetails(Long id) {
        if (id == null) {
@@ -1595,7 +1592,7 @@
        return taoBaoProvinceList;
    }
    public static List<ImageInfo> getTBDetailImageWithSize(Long auctionId) {
    public static List<ImageInfo> getTBDetailImageWithSize(String auctionId) {
        List<ImageInfo> imgList = new ArrayList<>();
@@ -1639,7 +1636,7 @@
     * @return
     */
    public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId, ProxyIP ip) {
    public static List<ImageInfo> getTBDetailImageWithSizev2(String auctionId, ProxyIP ip) {
        List<ImageInfo> imgList = new ArrayList<>();
        try {
            Map<String, String> headers = new HashMap<>();
@@ -1699,7 +1696,7 @@
     * @param adzoneId
     * @return
     */
    public static String getBaiChuanConvertLink(Long auctionId, String appKey, String adzoneId) {
    public static String getBaiChuanConvertLink(String auctionId, String appKey, String adzoneId) {
        String url = "http://acs4baichuan.m.taobao.com/gw-open/mtop.taobao.tbk.sdk.item.convert/1.0/";
        JSONObject params = new JSONObject();
        params.put("mcid", "tunion4android@862977040115210");
@@ -1734,7 +1731,11 @@
     */
    public static TaoBaoGoodsBrief convert(CommonGoods commonGoods) {
        TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
        taoBaoGoods.setAuctionId(commonGoods.getGoodsId());
        if(!StringUtil.isNullOrEmpty(commonGoods.getGoodsSign())) {
            taoBaoGoods.setAuctionId(commonGoods.getGoodsSign());
        }else{
            taoBaoGoods.setAuctionId(commonGoods.getGoodsId());
        }
        taoBaoGoods.setBiz30day(commonGoods.getSales());
        taoBaoGoods.setCouponAmount(commonGoods.getCouponAmount());
        taoBaoGoods.setCouponInfo(commonGoods.getCouponInfo());
@@ -1847,7 +1848,7 @@
     * @param actionId
     * @return
     */
    public static TaoBaoGoodsBrief getSimpleGoodsBrief(Long actionId) {
    public static TaoBaoGoodsBrief getSimpleGoodsBrief(String actionId) {
        JSONObject data = new JSONObject();
        data.put("itemNumId", actionId + "");
@@ -1885,7 +1886,7 @@
                    JSONObject seller = data.optJSONObject("seller");
                    TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
                    goods.setTitle(item.optString("title"));
                    goods.setAuctionId(item.optLong("itemId"));
                    goods.setAuctionId(item.optString("itemId"));
                    goods.setTitle(item.optString("title"));
                    if (item.optJSONArray("images") != null && item.optJSONArray("images").size() > 0) {
                        String picture = item.optJSONArray("images").optString(0);
@@ -1913,7 +1914,7 @@
     * @param auctionId
     * @return
     */
    public static TaoBaoShop getTaoBaoShopDetailByAuctionId(Long auctionId) {
    public static TaoBaoShop getTaoBaoShopDetailByAuctionId(String auctionId) {
        JSONObject data = new JSONObject();
        data.put("itemNumId", auctionId + "");
@@ -2004,7 +2005,7 @@
    /**
     * 是否可以加入淘礼金的预选商品库
     *
     * @param v2
     * @param goods
     * @return
     */
    public static boolean canAddToTLJBuyGoods(TaoBaoGoodsBrief goods) {
@@ -2234,9 +2235,19 @@
     * @return
     */
    public static String concatRelationId(String url, String relationId) {
        if (StringUtil.isNullOrEmpty(url)) {
            return url;
        }
        if (StringUtil.isNullOrEmpty(relationId))
            return url;
        return url + "&relationId=" + relationId;
        if (!url.contains("&relationId="))
            if(url.contains("?")) {
                return url + "&relationId=" + relationId;
            }else{
                return url + "?relationId=" + relationId;
            }
        else
            return url;
    }
@@ -2258,6 +2269,7 @@
    /**
     * 获取淘宝授权链接
     *
     * @param uid
     * @param source
     * @return
@@ -2267,4 +2279,161 @@
                "http://api.flqapp.com/fanli/client/v1/auth/callback/tb", uid, source);
    }
    /**
     * 是否为淘宝系的链接
     *
     * @param link
     * @return
     */
    public static boolean isTaoBaoLink(String link) {
        TaoBaoGoodsBrief tb = null;
        String auctionId = null;
        if (link.startsWith("https://a.m.taobao.com/i"))// 淘宝账号未登录状态
        {
            return true;
        } else if (link.contains("ju.taobao.com") || link.contains(".juhuasuan.com")) {// 聚划算
            return true;
        } else if (link.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
            return true;
        } else if (link.contains("m.tb.cn") || link.contains("h5.m.taobao") || link.contains("detail.m.tmall") || link.contains("item.taobao")
                || link.contains("detail.tmall")) { // 手机页面和电脑页面
            return true;
        } else if (link.contains("//s.click.taobao.com")) {
            return true;
        }
        return false;
    }
    /**
     * 是否有新版淘口令
     *
     * @param text
     * @return
     */
    public static boolean isHaveNewVersionTaoBaoToken(String text) {
        if (text == null)
            return false;
        int count = 0;
        for (int i = 0; i < text.length(); i++) {
            //大小写字母+数字
            if ((text.charAt(i) >= 65 && text.charAt(i) <= 90) || (text.charAt(i) >= 97 && text.charAt(i) <= 122) || (text.charAt(i) >= 48 && text.charAt(i) <= 57)) {
                count++;
                if (count >= 10)
                    return true;
            } else {
                count = 0;
            }
        }
        return false;
    }
    /**
     * @return boolean
     * @author hxh
     * @description 判断淘宝商品ID是否相等
     * @date 14:55 2022/8/24
     * @param: auctionId1
     * @param: auctionId2
     **/
    public static boolean isEqual(String auctionId1, String auctionId2) {
        if (auctionId1 == null || auctionId2 == null) {
            return false;
        }
        if (auctionId1.indexOf("-") > 0 && auctionId2.indexOf("-") > 0) {
            return auctionId1.split("-")[1].equals(auctionId2.split("-")[1]);
        }
        return auctionId1.equals(auctionId2);
    }
    /**
     * @return java.lang.String
     * @author hxh
     * @description 获取商品ID的后半段
     * @date 15:20 2022/8/24
     * @param: auctionId
     **/
    public static String getAuctionId(String auctionId) {
        if (auctionId == null)
            return auctionId;
        if (auctionId.indexOf("-") > 0) {
            return auctionId.split("-")[1];
        } else {
            return auctionId;
        }
    }
    /**
     * @return org.springframework.data.mongodb.core.query.Criteria
     * @author hxh
     * @description 获取mongodb商品ID相同的条件
     * @date 16:05 2022/8/24
     * @param: key
     * @param: auctionId
     **/
    public static Criteria getAuctionIdEqualCriteria(String key, String auctionId) {
        if (!isNewAuctionId(auctionId)) {
            return Criteria.where(key).is(auctionId);
        } else {
            return Criteria.where(key).regex("-" + getAuctionId(auctionId));
        }
    }
    /**
     * @return boolean
     * @author hxh
     * @description 是否为新的商品ID
     * @date 15:39 2022/8/24
     * @param: auctionId
     **/
    public static boolean isNewAuctionId(String auctionId) {
        if (auctionId != null && auctionId.indexOf("-") > 0)
            return true;
        return false;
    }
    /**
     * @return java.lang.String
     * @author hxh
     * @description 获取淘宝的商品标题
     * @date 11:36 2022/9/9
     **/
    public static String getGoodsTitleFromTokenText(String text) {
        String reg = "「.*」";
        Pattern p = Pattern.compile(reg);
        Matcher matcher = p.matcher(text);
        if (matcher.find()) {
            String title = matcher.group();
            if(title!=null&&title.length()>0) {
              return title.replace("「","").replace("」","");
            }
        }
        return null;
    }
    public static void main(String[] args) {
//        String reg = "「.*」";
//        Pattern p = Pattern.compile(reg);
//        Matcher matcher = p.matcher("【淘宝】https://m.tb.cn/h.Ub3d7Kb?tk=g2Az2EmdcIX CZ3457 「造梦【蔷薇少女】复古碎花牛奶绒羊羔绒毛毯秋冬保暖休闲毯沙发毯」\n" +
//                "点击链接直接打开");
//        if (matcher.find()) {
//            String title = matcher.group();
//            System.out.println(title);
//        }
        String relationId = "1222";
        String url="http://123id=123";
        if(url.contains("?")) {
            System.out.println(url + "&relationId=" + relationId);
        }else{
            System.out.println(url + "?relationId=" + relationId);
        }
    }
}