From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java | 4672 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 2,439 insertions(+), 2,233 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
index 176f1f8..34f2680 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -1,2233 +1,2439 @@
-package com.yeshi.fanli.util.taobao;
-
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Type;
-import java.math.BigDecimal;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import javax.script.Invocable;
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.params.HttpMethodParams;
-import org.jsoup.Connection;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.NodeList;
-import org.yeshi.utils.BigDecimalUtil;
-import org.yeshi.utils.HttpUtil;
-import org.yeshi.utils.NumberUtil;
-import org.yeshi.utils.entity.ProxyIP;
-import org.yeshi.utils.taobao.TbImgUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.reflect.TypeToken;
-import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
-import com.yeshi.fanli.entity.common.ImageInfo;
-import com.yeshi.fanli.entity.goods.CommonGoods;
-import com.yeshi.fanli.entity.taobao.SearchFilter;
-import com.yeshi.fanli.entity.taobao.TaoBaoCoupon;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
-import com.yeshi.fanli.entity.taobao.TaoBaoHead;
-import com.yeshi.fanli.entity.taobao.TaoBaoHongBaoInfo;
-import com.yeshi.fanli.entity.taobao.TaoBaoLink;
-import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
-import com.yeshi.fanli.entity.taobao.TaoBaoQuanInfo;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
-import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.TaoBaoShop;
-import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
-import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.goods.TaoBaoLinkService;
-import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
-import com.yeshi.fanli.tag.PageEntity;
-import com.yeshi.fanli.util.AESUtil;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.MoneyBigDecimalUtil;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.TaoBaoConstant;
-import com.yeshi.fanli.util.TaoBaoHttpUtil;
-import com.yeshi.fanli.util.TimeUtil;
-import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
-
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Component
-public class TaoBaoUtil {
-
-    @Autowired
-    private HongBaoManageService manageService;
-
-    @Resource
-    private TaoBaoLinkService taoBaoLinkService;
-
-    private static TaoBaoUtil taoBaoUtil;
-
-    @PostConstruct
-    public void init() {
-        taoBaoUtil = this;
-        taoBaoUtil.manageService = this.manageService;
-        taoBaoUtil.taoBaoLinkService = this.taoBaoLinkService;
-    }
-
-    public final static int SORT_PRICE_HIGH_TO_LOW = 3;// 浠锋牸浠庨珮鍒颁綆
-    public final static int SORT_PRICE_LOW_TO_HIGH = 4;// 浠锋牸浠庝綆鍒伴珮
-
-    public static final int SORT_TKRATE_LOW_TO_HIGH = 1;// 娣樺浣i噾姣旂巼浣庡埌楂�
-    public static final int SORT_TKRATE_HIGH_TO_LOW = 2;// 娣樺浣i噾姣旂巼楂樺埌浣�
-
-    public static final int SORT_TOTAL_COMMI_LOW_TO_HIGH = 5;// 鎬绘敮鍑轰剑閲戜綆鍒伴珮
-    public static final int SORT_TOTAL_COMMI_HIGH_TO_LOW = 6;// 鎬绘敮鍑轰剑閲戦珮鍒颁綆
-
-    public static final int SORT_TOTAL_SALES_LOW_TO_HIGH = 10;// 绱鎺ㄥ箍閲忎綆鍒伴珮
-    public static final int SORT_TOTAL_SALES_HIGH_TO_LOW = 11;// 绱鎺ㄥ箍閲忛珮鍒颁綆
-
-    public static final int SORT_SALE_COMMISSION = 7;// 鏈堟敮鍑轰剑閲戜粠楂樺埌浣�
-
-    public final static int SORT_SALE_LOW_TO_HIGH = 8;// 閿�閲忎粠浣庡埌楂�
-
-    public final static int SORT_SALE_HIGH_TO_LOW = 9;// 閿�閲忎粠楂樺埌浣�
-    public final static int SORT_DEFAULT = 0;// 閿�閲忎粠楂樺埌浣�
-
-    public final static int SORT_FILTER_FROM_ALL = 0;// 娣樺疂澶╃尗
-    public final static int SORT_FILTER_FROM_TMALL = 1;// 澶╃尗
-
-    private final static int PAGESIZE = 20;
-
-    public final static String SEARCH_URL = "http://pub.alimama.com/items/search.json";
-    private static final String NZJH_URL = "http://pub.alimama.com/items/channel/nzjh.json";
-    private static final String MUYING_URL = "http://pub.alimama.com/items/channel/muying.json";
-    private static final String QQHD_URL = "http://pub.alimama.com/items/channel/qqhd.json";
-    private static final String IFS_URL = "http://pub.alimama.com/items/channel/ifs.json";
-    private static final String QBB_URL = "http://pub.alimama.com/items/channel/qbb.json";
-    private static final String HCH_URL = "http://pub.alimama.com/items/channel/hch.json";
-    private static final String CDJ_URL = "http://pub.alimama.com/items/channel/cdj.json";
-    private static final String JYJ_URL = "http://pub.alimama.com/items/channel/jyj.json";
-    private static final String KDC_URL = "http://pub.alimama.com/items/channel/kdc.json";
-    private static final String DIY_URL = "http://pub.alimama.com/items/channel/diy.json";
-    private static final String K9_URL = "http://pub.alimama.com/items/channel/9k9.json";
-    private static final String K20_URL = "http://pub.alimama.com/items/channel/20k.json";
-    private static final String TEHUI_URL = "http://pub.alimama.com/items/channel/tehui.json";
-
-    private static final String TB_ITEM_URL = "http://gw.api.taobao.com/router/rest";
-
-    public static final String TB_URL = "http://item.taobao.com/item.htm?id=%s";
-    public static final String TM_PHONE_URL = "https://detail.m.tmall.com/item.htm?id=%s";
-    public static final String TB_H5_URL = "http://h5.m.taobao.com/awp/core/detail.htm?id=%s";
-
-    private static final Map<Integer, String> channelMap = new HashMap<Integer, String>();
-    private static final Map<Integer, String> urlMap = new HashMap<Integer, String>();
-
-    private static List<TaoBaoProvince> taoBaoProvinceList = null;
-
-    static {
-        channelMap.put(0, "");// 鏅��
-        channelMap.put(1, "nzjh");// 濂宠灏栬揣
-        channelMap.put(2, "muying");// 姣嶅┐鐑帹
-        channelMap.put(3, "qqhd");// 楂樹剑娲诲姩
-        channelMap.put(4, "ifs");// ifashion
-        channelMap.put(5, "qbb");// 浜插疂璐�
-        channelMap.put(6, "hch");// 娣樺疂姹囧悆
-        channelMap.put(7, "cdj");// 娼數琛�
-        channelMap.put(8, "jyj");// 鏋佹湁瀹�
-        channelMap.put(9, "kdc");// 閰峰姩鍩�
-        channelMap.put(10, "diy");// 娣樺疂DIY
-        channelMap.put(11, "9k9");// 瓒呭��9鍧�9
-        channelMap.put(12, "20k");// 20鍏冨皝椤�
-        channelMap.put(13, "tehui");// 鐗逛环濂借揣
-
-        urlMap.put(0, SEARCH_URL);
-        urlMap.put(1, NZJH_URL);
-        urlMap.put(2, MUYING_URL);
-        urlMap.put(3, QQHD_URL);
-        urlMap.put(4, IFS_URL);
-        urlMap.put(5, QBB_URL);
-        urlMap.put(6, HCH_URL);
-        urlMap.put(7, CDJ_URL);
-        urlMap.put(8, JYJ_URL);
-        urlMap.put(9, KDC_URL);
-        urlMap.put(10, DIY_URL);
-        urlMap.put(11, K9_URL);
-        urlMap.put(12, K20_URL);
-        urlMap.put(13, TEHUI_URL);
-    }
-
-    public static TaoBaoSearchResult search(SearchFilter filter, boolean proxy) {
-        if (filter.getKey().startsWith("http://") || filter.getKey().startsWith("https://")) {
-            String[] sts = filter.getKey().split("\\?")[1].split("&");
-            for (String st : sts) {
-                if (st.contains("id=")) {
-                    String id = st.replace("id=", "").trim();
-                    TaoBaoGoodsBrief tb = null;
-                    try {
-                        tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
-                    } catch (TaobaoGoodsDownException e) {
-                        e.printStackTrace();
-                    }
-                    List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
-                    goodsList.add(tb);
-                    TaoBaoSearchResult result = new TaoBaoSearchResult();
-                    result.setTaoBaoGoodsBriefs(goodsList);
-                    result.setNavList(new ArrayList<>());
-                    TaoBaoHead taoBaoHead = new TaoBaoHead();
-                    taoBaoHead.setDocsfound(1);
-                    result.setTaoBaoHead(taoBaoHead);
-                    return result;
-                }
-            }
-            return null;
-        }
-
-        List<Long> cateList = null;
-        if (!StringUtil.isNullOrEmpty(filter.getCateIds())) {
-            cateList = new ArrayList<>();
-            for (String c : filter.getCateIds().split(","))
-                cateList.add(Long.parseLong(c));
-        }
-        return TaoKeApiUtil.searchWuLiao(filter);
-    }
-
-    /**
-     * 娣樺疂鑱旂洘缃戦〉鎼滅储鍟嗗搧
-     *
-     * @param filter
-     * @param config -鑱旂洘閰嶇疆
-     * @return
-     */
-    public static TaoBaoSearchResult searchFromAlimamaWeb(SearchFilter filter, TaoBaoUnionConfig config) {
-        Map<String, String> params = new HashMap<String, String>();
-        params.put("q", filter.getKey());
-        params.put("_t", System.currentTimeMillis() + "");
-        params.put("toPage", filter.getPage() + "");
-        params.put("auctionTag", "");
-        params.put("perPageSize", filter.getPageSize() == 0 ? PAGESIZE + "" : filter.getPageSize() + "");
-        params.put("shopTag", filter.getShopTag() + "");
-        params.put("t", System.currentTimeMillis() + "");
-        params.put("_tb_token_", "test");
-        params.put("yxjh", "-1");
-        params.put("queryType", "2");
-        String shopTag = filter.getShopTag();
-        if (shopTag != null) {
-            String[] split = shopTag.split(",");
-            for (String tag : split) {
-                params.put(tag, "1");
-            }
-        }
-
-        if (filter.isTmall()) {
-            params.put("userType", "1");
-        }
-
-        if (filter.isBaoYou()) {
-            params.put("freeShipment", "1");
-        }
-
-        if (filter.getStartPrice() != null) {
-            params.put("startPrice", filter.getStartPrice() + "");
-        }
-        if (filter.getEndPrice() != null) {
-            params.put("endPrice", filter.getEndPrice() + "");
-        }
-        if (!StringUtil.isNullOrEmpty(filter.getCateIds()))
-            params.put("catIds", filter.getCateIds());
-
-        if (filter.getParams() != null && filter.getParams().size() > 0) {
-            Set<String> set = filter.getParams();
-            StringBuffer sb = new StringBuffer();
-            int i = 0;
-            for (String ids : set) {
-                if (i == 0) {
-                    sb.append(ids);
-                } else {
-                    sb.append(";" + ids);
-                }
-                i++;
-            }
-            params.put("pidvid", sb.toString());
-        }
-        if (filter.getSort() > 0) {
-            params.put("sortType", filter.getSort() + "");
-            // params.put("queryType", "0");
-        }
-
-        Map<String, String> headers = new HashMap<>();
-        // headers.put("cookie",
-        // TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount()));
-
-        headers.put("referer", "https://pub.alimama.com/promo/search/index.htm");
-
-        headers.put("User-Agent",
-                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
-
-        String result = TaoBaoHttpUtil.get(SEARCH_URL, params, headers, true);
-        if (result == null || "".equals(result)) {
-            return null;
-        }
-        result = result.replace("</span>", "").replace("<span class=H>", "");
-        if (result.contains("<!DOCTYPE html>")) {
-            TaoBaoSearchResult presult = new TaoBaoSearchResult();
-            presult.setNavList(new ArrayList<TaoBaoSearchNav>());
-            presult.setTaoBaoGoodsBriefs(new ArrayList<TaoBaoGoodsBrief>());
-            TaoBaoHead taoBaoHead = new TaoBaoHead();
-            taoBaoHead.setDocsfound(0);
-            presult.setTaoBaoHead(taoBaoHead);
-            return presult;
-        }
-        TaoBaoSearchResult presult = parseTaoBao(result);
-        presult.setKey(filter.getKey());
-        return presult;
-    }
-
-    /**
-     * 娣樺疂鑱旂洘缃戦〉鎼滅储鍟嗗搧
-     *
-     * @param filter
-     * @param config -鑱旂洘閰嶇疆
-     * @return
-     */
-    public static TaoBaoSearchResult searchAlimamaWeb(SearchFilter filter, TaoBaoUnionConfig config, Integer typeNum) {
-
-        Map<String, String> params = new HashMap<String, String>();
-
-        if (typeNum != null && !typeNum.equals(0)) {
-            if (channelMap.get(typeNum) != null) {
-                params.put("channel", channelMap.get(typeNum));
-            }
-        }
-
-        params.put("toPage", filter.getPage() + "");
-        params.put("perPageSize", filter.getPageSize() == 0 ? PAGESIZE + "" : filter.getPageSize() + "");
-
-        if (typeNum != null && typeNum == 3) {
-            // 鏌ヨ绫荤洰
-            String catIds = filter.getCateIds();
-
-            if (!StringUtil.isNullOrEmpty(catIds)) {
-                // 楂樹剑鏃舵牴鎹被鐩甶d鏌ヨ
-                params.put("catIds", catIds); // 绫荤洰
-                params.put("level", "1");// 榛樿涓�绾�
-            } else {
-                // 鏌ヨ鏉′欢
-                String key = filter.getKey();
-                if (!StringUtil.isNullOrEmpty(key)) {
-                    params.put("q", filter.getKey());
-                }
-            }
-
-        } else {
-            // 鏌ヨ鏉′欢
-            String key = filter.getKey();
-            if (!StringUtil.isNullOrEmpty(key)) {
-                params.put("q", filter.getKey());
-            }
-        }
-
-        // 鎺掑簭瀛楁 3 浠锋牸楂樺埌浣� 4 浠锋牸浣庡埌楂�
-        // 9 閿�閲忛珮鍒颁綆 1 鏀跺叆姣旂巼楂樺埌浣� 5 鏈堟帹骞块噺楂樺埌浣� 7鏈堟敮鍑轰剑閲戦珮鍒颁綆
-        // 13 娲诲姩寮�濮嬫椂闂寸敱杩戝埌杩� 11 娲诲姩鍓╀綑鏃堕棿闀垮埌鐭� 12 娲诲姩鍓╀綑鏃堕棿鐭埌闀�
-
-        int sort = filter.getSort();
-        if (sort > 0) {
-            params.put("sortType", sort + "");
-        }
-
-        // 鏄惁澶╃尗
-        if (filter.isTmall()) {
-            params.put("userType", "1");
-        }
-
-        // 浣跨敤鍚紭鎯犲埜
-        int quan = filter.getQuan();
-        if (quan == 1) {
-            params.put("shopTag", "dpyhq");
-            params.put("dpyhq", "1");
-        } /*
-         * else { params.put("shopTag", ""); }
-         */
-
-        // 閿�閲�
-        String startBiz30day = filter.getStartBiz30day();
-        if (!StringUtil.isNullOrEmpty(startBiz30day)) {
-            params.put("startBiz30day", startBiz30day);
-        }
-
-        // 浣i噾姣斾緥灏忓��
-        int startTkRate = filter.getStartTkRate();
-        if (startTkRate > 0) {
-            params.put("startTkRate", startTkRate / 100 + "");
-        }
-
-        // 浣i噾姣斾緥澶у��
-        int endTkRate = filter.getEndTkRate();
-        if (endTkRate > 0) {
-            params.put("endTkRate", endTkRate + "");
-        }
-
-        // 璧峰浠锋牸
-        if (filter.getStartPrice() != null) {
-
-            params.put("startPrice", filter.getStartPrice() + "");
-        }
-
-        // 鎴浠锋牸
-        if (filter.getEndPrice() != null) {
-            params.put("endPrice", filter.getEndPrice() + "");
-        }
-
-        if (filter.getParams() != null && filter.getParams().size() > 0) {
-            Set<String> set = filter.getParams();
-            StringBuffer sb = new StringBuffer();
-            int i = 0;
-            for (String ids : set) {
-                if (i == 0) {
-                    sb.append(ids);
-                } else {
-                    sb.append(";" + ids);
-                }
-                i++;
-            }
-            params.put("pidvid", sb.toString());
-        }
-
-        params.put("t", System.currentTimeMillis() + "");
-        params.put("_tb_token_", "e430bae750a11");
-
-        Map<String, String> headers = new HashMap<>();
-
-        headers.put("referer", "https://pub.alimama.com/promo/search/index.htm");
-
-        headers.put("User-Agent",
-                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
-
-        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
-        headers.put("Cookie", cookie);
-
-        String url = SEARCH_URL;
-
-        if (typeNum != null && !typeNum.equals(0)) {
-            url = urlMap.get(typeNum);
-        }
-
-        String result = TaoBaoHttpUtil.get(url, params, headers, true);
-        if (result == null || "".equals(result)) {
-            return null;
-        }
-
-        result = result.replace("</span>", "").replace("<span class=H>", "");
-        if (result.contains("<!DOCTYPE html>")) {
-            TaoBaoSearchResult presult = new TaoBaoSearchResult();
-
-            presult.setNavList(new ArrayList<TaoBaoSearchNav>());
-            presult.setTaoBaoGoodsBriefs(new ArrayList<TaoBaoGoodsBrief>());
-
-            TaoBaoHead taoBaoHead = new TaoBaoHead();
-            taoBaoHead.setDocsfound(0);
-            presult.setTaoBaoHead(taoBaoHead);
-
-            return presult;
-        }
-        TaoBaoSearchResult presult = parseTaoBao(result);
-        presult.setKey(filter.getKey());
-
-        return presult;
-    }
-
-    public static TaoBaoSearchResult search(SearchFilter filter) {
-        return search(filter, false);
-    }
-
-    public static TaoBaoSearchResult search2(SearchFilter filter, TaoBaoUnionConfig config) {
-
-        if (filter.getKey().startsWith("http://") || filter.getKey().startsWith("https://")) {
-            String[] sts = filter.getKey().split("\\?")[1].split("&");
-            for (String st : sts) {
-                if (st.contains("id=")) {
-                    String id = st.replace("id=", "").trim();
-                    TaoBaoGoodsBrief tb = null;
-                    try {
-                        tb = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id));
-                    } catch (TaobaoGoodsDownException e) {
-                        e.printStackTrace();
-                    }
-                    List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
-                    goodsList.add(tb);
-                    TaoBaoSearchResult result = new TaoBaoSearchResult();
-                    result.setTaoBaoGoodsBriefs(goodsList);
-                    result.setNavList(new ArrayList<>());
-                    TaoBaoHead taoBaoHead = new TaoBaoHead();
-                    taoBaoHead.setDocsfound(1);
-                    result.setTaoBaoHead(taoBaoHead);
-                    result.setPageEntity(new PageEntity());
-                    return result;
-                }
-            }
-            return null;
-        }
-
-        List<Long> cateList = null;
-        if (!StringUtil.isNullOrEmpty(filter.getCateIds())) {
-            cateList = new ArrayList<>();
-            for (String c : filter.getCateIds().split(","))
-                cateList.add(Long.parseLong(c));
-        }
-
-        if (1 > 0)
-            return TaoKeApiUtil.searchWuLiao(filter);
-
-        Map<String, String> params = new HashMap<String, String>();
-        String key = filter.getKey();
-        if (key != null) {
-            params.put("q", filter.getKey());
-        }
-        params.put("_t", System.currentTimeMillis() + "");
-        params.put("toPage", filter.getPage() + "");
-        params.put("perPageSize", PAGESIZE + "");
-        params.put("auctionTag", "");
-        params.put("shopTag", "");
-        params.put("queryType", "2");
-        params.put("t", System.currentTimeMillis() + "");
-        params.put("_tb_token_", "owxj2i1mfTXq");
-        int type = filter.getType();
-        params.put("channel", channelMap.get(type));
-        if (filter.getSort() > 0) {
-            params.put("sortType", filter.getSort() + "");
-            // params.put("queryType", "0");
-        }
-        String result = TaoBaoHttpUtil.tbGet(urlMap.get(type), params, config.getAccount());
-        result = result.replace("</span>", "").replace("<span class=H>", "");
-        TaoBaoSearchResult presult = parseTaoBao(result);
-        presult.setKey(filter.getKey());
-        return presult;
-    }
-
-    /**
-     * 9鍧�9 19鍧�9鐨勫垪琛�
-     *
-     * @param filter
-     * @return
-     */
-    public static TaoBaoSearchResult search3(SearchFilter filter, TaoBaoUnionConfig config) {
-        Map<String, String> params = new HashMap<String, String>();
-        String key = filter.getKey();
-        if (key != null) {
-            params.put("q", filter.getKey());
-        }
-        params.put("_t", System.currentTimeMillis() + "");
-        params.put("toPage", filter.getPage() + "");
-        params.put("perPageSize", PAGESIZE + "");
-        params.put("auctionTag", "");
-        params.put("shopTag", "");
-        params.put("queryType", "2");
-        params.put("t", System.currentTimeMillis() + "");
-        params.put("_tb_token_", "owxj2i1mfTXq");
-        int type = filter.getType();
-        params.put("channel", channelMap.get(type));
-        if (filter.getSort() > 0) {
-            params.put("sortType", filter.getSort() + "");
-            // params.put("queryType", "0");
-        }
-        String result = TaoBaoHttpUtil.tbGet(urlMap.get(type), params, config.getAccount());
-        result = result.replace("</span>", "").replace("<span class=H>", "");
-        TaoBaoSearchResult presult = parseTaoBao(result);
-        presult.setKey(filter.getKey());
-        return presult;
-    }
-
-    public static TaoBaoSearchResult parseTaoBao(String result) {
-        TaoBaoSearchResult resu = new TaoBaoSearchResult();
-        List<TaoBaoGoodsBrief> list = new ArrayList<TaoBaoGoodsBrief>();
-        JSONObject root = null;
-        try {
-            root = JSONObject.fromObject(result);
-        } catch (Exception e) {
-            e.printStackTrace();
-            resu.setTaoBaoGoodsBriefs(list);
-            return resu;
-        }
-        Gson gson = new GsonBuilder().create();
-        if (root.optBoolean("ok")) {
-            JSONArray array = root.optJSONObject("data").optJSONArray("pageList");
-            if (array != null) {
-                for (int i = 0; i < array.size(); i++) {
-                    list.add(gson.fromJson(array.optJSONObject(i).toString(), TaoBaoGoodsBrief.class));
-                }
-            }
-            JSONObject head = root.optJSONObject("data").optJSONObject("head");
-            Type headType = new TypeToken<TaoBaoHead>() {
-            }.getType();
-            TaoBaoHead taoBaoHead = gson.fromJson(head.toString(), headType);
-            resu.setTaoBaoHead(taoBaoHead);
-
-            JSONArray navArray = root.optJSONObject("data").optJSONArray("navigator");
-            Type type = new TypeToken<ArrayList<TaoBaoSearchNav>>() {
-            }.getType();
-            if (navArray != null) {
-                List<TaoBaoSearchNav> navList = gson.fromJson(navArray.toString(), type);
-                for (TaoBaoSearchNav taoBaoSearchNav : navList) {
-                    String tbtype = taoBaoSearchNav.getType();
-                    if (!"category".equalsIgnoreCase(tbtype)) {
-                        taoBaoSearchNav.setSelector(1);
-                    }
-                }
-                resu.setNavList(navList);
-            }
-            JSONObject paginatorObject = root.optJSONObject("data").optJSONObject("paginator");
-            if (paginatorObject != null) {
-                int count = (Integer) paginatorObject.get("items");
-                int totalPage = (Integer) paginatorObject.get("pages");
-                PageEntity pe = new PageEntity();
-                pe.setTotalCount(count);
-                pe.setPageSize(PAGESIZE);
-                pe.setTotalPage(totalPage);
-                resu.setPageEntity(pe);
-            }
-        }
-        for (TaoBaoGoodsBrief taoBaoGoodsBrief : list) {
-            String pictUrl = taoBaoGoodsBrief.getPictUrl();
-            if (!pictUrl.contains("http:") && !pictUrl.contains("https:")) {
-                taoBaoGoodsBrief.setPictUrl("http:" + pictUrl);
-            }
-        }
-        resu.setTaoBaoGoodsBriefs(list);
-
-        PageEntity pageEntity = resu.getPageEntity();
-        if (pageEntity == null) {
-            PageEntity entity = new PageEntity();
-            resu.setPageEntity(entity);
-        }
-
-        return resu;
-    }
-
-    public static List<TaoBaoSearchNav> getBaseNav() {
-        List<TaoBaoSearchNav> list = new ArrayList<TaoBaoSearchNav>();
-
-        // 璁剧疆瀹濊礉绫诲瀷(娣樺疂澶╃尗/澶╃尗)
-        // TaoBaoSearchNav shopType = new TaoBaoSearchNav();
-        // shopType.setLevel(1);
-        // shopType.setId(2);
-        // shopType.setName("瀹濊礉绫诲瀷");
-        // shopType.setType("shoptype");
-        // shopType.setFlag("shoptype");
-        // shopType.setSelector(0);
-        // List<TaoBaoSearchNav> shopTypeChildList = new
-        // ArrayList<TaoBaoSearchNav>();
-        // shopTypeChildList.add(new TaoBaoSearchNav(0, "all", 21, 2, "娣樺疂澶╃尗",
-        // ""));
-        // shopTypeChildList.add(new TaoBaoSearchNav(0, "tmall", 22, 2, "澶╃尗",
-        // ""));
-        // shopType.setSubIds(shopTypeChildList);
-        // list.add(shopType);
-
-        // 鏄惁鏈夊埜
-        // TaoBaoSearchNav quanType = new TaoBaoSearchNav();
-        // quanType.setLevel(1);
-        // quanType.setId(3);
-        // quanType.setName("鏄惁鏈夊埜");
-        // quanType.setType("quantype");
-        // quanType.setFlag("quantype");
-        // quanType.setSelector(0);
-        // List<TaoBaoSearchNav> quanTypeChildList = new
-        // ArrayList<TaoBaoSearchNav>();
-        // quanTypeChildList.add(new TaoBaoSearchNav(0, "quan", 31, 2, "鏈夊埜",
-        // ""));
-        // quanTypeChildList
-        // .add(new TaoBaoSearchNav(0, "noquan", 32, 2, "鏃犲埜", ""));
-        // quanType.setSubIds(quanTypeChildList);
-        // list.add(quanType);
-
-        // 鏄惁鏈夌孩鍖�
-        // TaoBaoSearchNav hongbaoType = new TaoBaoSearchNav();
-        // hongbaoType.setLevel(1);
-        // hongbaoType.setId(4);
-        // hongbaoType.setName("鏄惁鏈夌孩鍖�");
-        // hongbaoType.setType("hongbaotype");
-        // hongbaoType.setFlag("hongbaotype");
-        // hongbaoType.setSelector(0);
-        // List<TaoBaoSearchNav> hongbaoChildList = new
-        // ArrayList<TaoBaoSearchNav>();
-        // hongbaoChildList
-        // .add(new TaoBaoSearchNav(0, "hongbao", 41, 2, "鏈夌孩鍖�", ""));
-        // hongbaoChildList.add(new TaoBaoSearchNav(0, "nohongbao", 42, 2,
-        // "鏃犵孩鍖�",
-        // ""));
-        // hongbaoType.setSubIds(hongbaoChildList);
-        // list.add(hongbaoType);
-
-        // 璁剧疆鍙戣揣鍦�
-        // TaoBaoSearchNav address = new TaoBaoSearchNav();
-        // address.setLevel(1);
-        // address.setId(1);
-        // address.setName("搴楅摵鎵�鍦ㄥ湴");
-        // address.setType("loc");
-        // address.setFlag("loc");
-        // List<TaoBaoSearchNav> addressChildList = new
-        // ArrayList<TaoBaoSearchNav>();
-        //
-        // list.add(address);
-
-        return list;
-    }
-
-    public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, String proportion, String pid) {
-        TaoBaoGoodsBriefExtra tg = new TaoBaoGoodsBriefExtra();
-        tg.setId(tb.getId());
-        tg.setAuctionId(tb.getAuctionId());
-        tg.setBiz30day(tb.getBiz30day());
-        tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
-        tg.setTitle(tb.getTitle());
-        if (!StringUtil.isNullOrEmpty(tb.getPictUrlWhite()))
-            tg.setPictUrl(TbImgUtil.getTBSize320Img(tb.getPictUrlWhite()));
-        else
-            tg.setPictUrl(TbImgUtil.getTBSize320Img(tb.getPictUrl()));
-        tg.setZkPrice(tb.getZkPrice());
-        tg.setAuctionUrl(tb.getAuctionUrl());
-        tg.setReservePrice(tb.getReservePrice());
-        tg.setUserType(tb.getUserType());
-        tg.setShopTitle(tb.getShopTitle());
-        tg.setTkRate(tb.getTkRate());
-        tg.setSellerId(tb.getSellerId());
-        tg.setState(tb.getState()); // 鐘舵�侊細2018-12-03
-        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
-
-            tg.setCoupon(true);// 鏈夊埜
-
-            TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
-            quanInfo.setCouponAmount(tb.getCouponAmount());
-            String couponEffectiveEndTime = tb.getCouponEffectiveEndTime();
-            long endtime = TimeUtil.convertDateToTemp(couponEffectiveEndTime);
-            quanInfo.setCouponEffectiveEndTime(endtime + 1000 * 60 * 60 * 24L + "");
-            quanInfo.setCouponEffectiveStartTime(TimeUtil.convertDateToTemp(tb.getCouponEffectiveStartTime()) + "");
-            quanInfo.setCouponInfo(tb.getCouponInfo());
-            quanInfo.setCouponLeftCount(tb.getCouponLeftCount());
-            quanInfo.setCouponLink(
-                    TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), pid, tb.getAuctionId() + ""));
-            quanInfo.setCouponPrice(MoneyBigDecimalUtil.sub(tg.getZkPrice(), tb.getCouponAmount()));
-            quanInfo.setCouponStartFee(tb.getCouponStartFee());
-            quanInfo.setCouponTotalCount(tb.getCouponTotalCount());
-            tg.setTaoBaoQuanInfo(quanInfo);
-        }
-        TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
-
-        hongBaoInfo.setRate("鏈�楂�40%");
-
-        String hongbao = getGoodsHongBaoInfo(tb, new BigDecimal(proportion), false);
-        if (hongbao.contains("鏈�楂�")) {
-            hongBaoInfo.setType(1);
-            hongBaoInfo.setHongbao(new BigDecimal(0));
-        } else {
-            hongBaoInfo.setRate(hongbao);
-            hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("楼", "")));
-        }
-
-        tg.setBaoyou(true);
-
-        if (tb.getUserType() == 1)
-            tg.setShopType(2);
-        else
-            tg.setShopType(1);
-
-        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1)
-            tg.setShowType(3);
-        else
-            tg.setShowType(2);
-
-        int showType = tg.getShowType();
-        if (showType == 3 || showType == 1) {
-            BigDecimal sub = tg.getZkPrice().subtract(tb.getCouponStartFee());
-            if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
-                BigDecimal quanPrice = MoneyBigDecimalUtil.sub(tg.getZkPrice(), tb.getCouponAmount());
-                tg.setQuanPrice(quanPrice);
-            } else {
-                tg.setQuanPrice(tg.getZkPrice());
-            }
-        }
-
-        tg.setTaoBaoHongBaoInfo(hongBaoInfo);
-
-        tg.setMoneyType(1);
-        tg.setSalesType(1);
-        // 娴嬭瘯浣跨敤
-        // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
-        // if(Constant.IS_TEST)
-        // {
-        // List<ClientTextStyleVO> labels = new ArrayList<>();
-        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#F14242"));
-        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#00FF00"));
-        // tg.setLabels(labels);
-        // }
-        return loadYuShouInfo(tg, tb);
-    }
-
-    private static TaoBaoGoodsBriefExtra loadYuShouInfo(TaoBaoGoodsBriefExtra extra, TaoBaoGoodsBrief goods) {
-        if (goods != null && extra != null) {
-            if (isYUShou(goods)) {// 棰勫敭鍟嗗搧
-                // extra.setZkPrice(new BigDecimal(goods.getPresaleDeposit()));
-                // 棰勫敭
-                if (extra.getLabels() == null)
-                    extra.setLabels(new ArrayList<>());
-                extra.getLabels().add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
-            }
-        }
-        return extra;
-    }
-
-    /**
-     * 鏄惁涓洪鍞晢鍝�
-     *
-     * @param goods
-     * @return
-     */
-    public static boolean isYUShou(TaoBaoGoodsBrief goods) {
-        if (!StringUtil.isNullOrEmpty(goods.getPresaleDeposit())
-                && !StringUtil.isNullOrEmpty(goods.getPresaleStartTime())
-                && !StringUtil.isNullOrEmpty(goods.getPresaleEndTime())) {
-            long startTime = Long.parseLong(goods.getPresaleStartTime());
-            long endTime = Long.parseLong(goods.getPresaleEndTime());
-            long now = System.currentTimeMillis();
-            if (now >= startTime && now < endTime) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * 鑾峰彇娣樺疂鎺ㄥ箍閾炬帴
-     *
-     * @param auctionId
-     * @param pid
-     * @return
-     */
-    public static TaoBaoLink getTbLink(long auctionId, String pid, TaoBaoUnionConfig config) {
-        TaoBaoLink tbk = null;
-        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
-        String adzoneid = pid.split("_")[3];
-        String siteId = pid.split("_")[2];
-        Map<String, String> headers = new HashMap<>();
-
-        headers.put("Cookie", cookie);
-        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
-        headers.put("User-Agent",
-                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
-        headers.put("Cookie", cookie);
-        headers.put("X-Requested-With", "XMLHttpRequest");
-
-        String json = TaoBaoHttpUtil.proxyGet("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid="
-                + auctionId + "&adzoneid=" + adzoneid + "&siteid=" + siteId + "&scenes=1", cookie);
-        System.out.println(json);
-        if (json == null || "".equals(json.trim())) {
-            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
-            return null;
-        }
-
-        JSONObject data;
-        try {
-            data = JSONObject.fromObject(json);
-        } catch (Exception e) {
-            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
-            return null;
-        }
-
-        if (data.optBoolean("ok")) {
-            tbk = new TaoBaoLink();
-            JSONObject dat = data.optJSONObject("data");
-            String couponLink = dat.optString("couponLink");
-            String clickUrl = dat.optString("clickUrl");
-            String taoToken = dat.optString("taoToken");
-            tbk.setCouponLink(couponLink);
-            tbk.setClickUrl(clickUrl);
-            tbk.setTaoToken(taoToken);
-            tbk.setAuctionId(auctionId);
-            return tbk;
-        } else {
-            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
-        }
-        // 濡傛灉json杩斿洖鐨勬槸false锛岃鏄巆ookie澶辨晥
-        TaoBaoOrderUtil.reportCookieInvalid(config.getAccount());
-        return null;
-    }
-
-    /**
-     * 鑾峰彇鎺ㄥ箍鐢ㄧ殑娣樺彛浠�
-     *
-     * @param auctionId
-     * @param pid
-     * @return
-     */
-    public static TaoBaoLink getTbLinkForShare(long auctionId, String pid, TaoBaoUnionConfig config) {
-        TaoBaoLink tbk = null;
-        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
-        selfAdzoneCreate(pid, cookie);
-        String adzoneid = pid.split("_")[3];
-        String siteId = pid.split("_")[2];
-        Map<String, String> headers = new HashMap<>();
-
-        headers.put("Cookie", cookie);
-        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
-        headers.put("User-Agent",
-                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
-        headers.put("Cookie", cookie);
-        headers.put("X-Requested-With", "XMLHttpRequest");
-
-        String json = TaoBaoHttpUtil.proxyGet("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid="
-                + auctionId + "&adzoneid=" + adzoneid + "&siteid=" + siteId + "&scenes=1", cookie);
-        System.out.println(json);
-        LogHelper.test(json);
-        if (json == null || "".equals(json.trim())) {
-            return null;
-        }
-
-        JSONObject data;
-        try {
-            data = JSONObject.fromObject(json);
-        } catch (Exception e) {
-            return null;
-        }
-
-        if (data.optBoolean("ok")) {
-            tbk = new TaoBaoLink();
-            JSONObject dat = data.optJSONObject("data");
-            String couponLink = dat.optString("couponLink");
-            String clickUrl = dat.optString("clickUrl");
-            String taoToken = dat.optString("taoToken");
-            tbk.setCouponLink(couponLink);
-            tbk.setClickUrl(clickUrl);
-            tbk.setTaoToken(taoToken);
-            tbk.setAuctionId(auctionId);
-
-            return tbk;
-        }
-        // 濡傛灉json杩斿洖鐨勬槸false锛岃鏄巆ookie澶辨晥
-        TaoBaoOrderUtil.reportCookieInvalid(config.getAccount());
-        return null;
-    }
-
-    /**
-     * 閫氳繃浼樻儬鍒搁摼鎺ヨ幏鍙栨窐鍙d护
-     *
-     * @param picture
-     * @param title
-     * @param activityId
-     * @param auctionId
-     * @param pid
-     * @return
-     */
-    public static TaoBaoLink getTbLinkWithCoupon(String picture, String title, String activityId, long 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,
-                pid, auctionId + "");
-        String tbk = TaoKeApiUtil.getTKToken(picture, title, url);
-        if (StringUtil.isNullOrEmpty(tbk))
-            LogHelper.error("鐢熸垚娣樺彛浠ゅけ璐ワ紙浼樻儬鍒搁摼鎺ワ級:" + auctionId);
-        TaoBaoLink taoBaoLink = new TaoBaoLink();
-        taoBaoLink.setAuctionId(auctionId);
-        taoBaoLink.setClickUrl(url);
-        taoBaoLink.setCouponLink(url);
-        taoBaoLink.setTaoToken(tbk);
-        return taoBaoLink;
-    }
-
-    private static void selfAdzoneCreate(String pid, String cookie) {
-        String[] sts = cookie.split(";");
-        String tbToken = "";
-        for (String st : sts) {
-            if (st.contains("_tb_token_")) {
-                tbToken = st.replace("_tb_token_=", "");
-                break;
-            }
-        }
-        String adzoneid = pid.split("_")[3];
-        String siteId = pid.split("_")[2];
-        String url = "http://pub.alimama.com/common/adzone/selfAdzoneCreate.json";
-        Map<String, String> params = new HashMap<>();
-        params.put("tag", "29");
-        params.put("gcid", "8");
-        params.put("siteid", siteId);
-        params.put("selectact", "sel");
-        params.put("adzoneid", adzoneid);
-        params.put("t", System.currentTimeMillis() + "");
-        params.put("_tb_token_", tbToken);
-
-        Map<String, String> headers = new HashMap<>();
-        headers.put("Cookie", cookie);
-        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
-        headers.put("User-Agent",
-                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
-        headers.put("Cookie", cookie);
-        headers.put("X-Requested-With", "XMLHttpRequest");
-        String result = TaoBaoHttpUtil.post(url, params, headers);
-        System.out.println(result);
-    }
-
-    public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, TaoBaoUnionConfig config) {
-        TaoBaoGoodsBriefExtra tg = new TaoBaoGoodsBriefExtra();
-        tg.setId(tb.getId());
-        tg.setAuctionId(tb.getAuctionId());
-        tg.setBiz30day(tb.getBiz30day());
-        tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
-        tg.setTitle(tb.getTitle());
-        tg.setPictUrl(tb.getPictUrl());
-        tg.setZkPrice(tb.getZkPrice());
-        tg.setAuctionUrl(tb.getAuctionUrl());
-        tg.setReservePrice(tb.getReservePrice());
-        tg.setUserType(tb.getUserType());
-        tg.setImgList(tb.getImgList());
-
-        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1) {
-            TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
-            quanInfo.setCouponAmount(tb.getCouponAmount());
-            String couponEffectiveEndTime = tb.getCouponEffectiveEndTime();
-            long endtime = TimeUtil.convertDateToTemp(couponEffectiveEndTime);
-            quanInfo.setCouponEffectiveEndTime(endtime + 1000 * 60 * 60 * 24L + "");
-            quanInfo.setCouponEffectiveStartTime(TimeUtil.convertDateToTemp(tb.getCouponEffectiveStartTime()) + "");
-            quanInfo.setCouponInfo(tb.getCouponInfo());
-            quanInfo.setCouponLeftCount(tb.getCouponLeftCount());
-            String pid = config.getDefaultPid();
-            quanInfo.setCouponLink(
-                    TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), pid, tb.getAuctionId() + ""));
-            quanInfo.setCouponPrice(tb.getZkPrice().subtract(tb.getCouponAmount()));
-            quanInfo.setCouponStartFee(tb.getCouponStartFee());
-            quanInfo.setCouponTotalCount(tb.getCouponTotalCount());
-            tg.setTaoBaoQuanInfo(quanInfo);
-        }
-
-        BigDecimal proportion = taoBaoUtil.manageService.getFanLiRate(UserLevelEnum.daRen);
-        TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
-        String tkMktStatus = tb.getTkMktStatus();
-        if ("1".equals(tkMktStatus)) {
-            hongBaoInfo.setType(1);
-        }
-
-        hongBaoInfo.setRate("鏈�楂�40%");
-
-        String hongbao = getGoodsHongBaoInfo(tb, proportion, false);
-        if (!hongbao.contains("鏈�楂�"))
-            hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("楼", "")));
-        else
-            hongBaoInfo.setHongbao(new BigDecimal(0));
-
-        tg.setBaoyou(true);
-
-        if (tb.getUserType() == 1)
-            tg.setShopType(2);
-        else
-            tg.setShopType(1);
-
-        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1)
-            tg.setShowType(3);
-        else
-            tg.setShowType(2);
-
-        int showType = tg.getShowType();
-        if (showType == 3 || showType == 1) {
-            BigDecimal sub = tg.getZkPrice().subtract(tb.getCouponStartFee());
-            if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
-                BigDecimal quanPrice = tg.getZkPrice().subtract(tb.getCouponAmount());
-                tg.setQuanPrice(quanPrice);
-            } else {
-                tg.setQuanPrice(tg.getZkPrice());
-            }
-        }
-        tg.setTaoBaoHongBaoInfo(hongBaoInfo);
-
-        tg.setMoneyType(1);
-        tg.setSalesType(1);
-        // 娴嬭瘯浣跨敤
-        // tg.setMoneyType(Math.random() > 0.5 ? 1 : 2);
-        // tg.setSalesType(Math.random() > 0.5 ? 1 : 2);
-        // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
-        // List<ClientTextStyleVO> labels = new ArrayList<>();
-        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#F14242"));
-        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#000000"));
-        // tg.setLabels(labels);
-
-        return tg;
-    }
-
-    /**
-     * 鑾峰彇鏈弬涓庢帹骞跨殑娣樺疂鍟嗗搧璇︽儏 @Title: getTaoBaoGoodsBrief @Description: @param
-     * id @return TaoBaoGoodsBrief 鍖呭惈锛堟爣棰樹笌鍥剧墖锛� @throws
-     */
-    public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(Long id) {
-        TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(id + "");
-        return tb;
-    }
-
-    public static List<String> getSuguestSearch(String key) {
-        try {
-            String url = String.format("https://suggest.taobao.com/sug?code=utf-8&q=%s&_=1486720576511",
-                    URLEncoder.encode(key, "UTF-8"));
-            HttpClient client = new HttpClient();
-            GetMethod gm = new GetMethod(url);
-            client.executeMethod(gm);
-            String result = gm.getResponseBodyAsString();
-            JSONObject obj = JSONObject.fromObject(result);
-            if (obj != null) {
-                JSONArray array = obj.optJSONArray("result");
-                List<String> list = new ArrayList<String>();
-                for (int i = 0; i < array.size(); i++) {
-                    list.add(array.optJSONArray(i).optString(0));
-                }
-                return list;
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public static List<String> getTbImg(String auctionId) {
-        if (!NumberUtil.isNumeric(auctionId))
-            return new ArrayList<>();
-        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
-        try {
-            taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId));
-        } catch (TaobaoGoodsDownException e) {
-            e.printStackTrace();
-        }
-
-        List<String> list = new ArrayList<String>();
-        if (taoBaoGoodsBrief == null)
-            return list;
-
-        if (!StringUtil.isNullOrEmpty(taoBaoGoodsBrief.getPictUrl()))
-            list.add(taoBaoGoodsBrief.getPictUrl());
-        if (taoBaoGoodsBrief.getImgList() != null && taoBaoGoodsBrief.getImgList().size() > 0)
-            list.addAll(taoBaoGoodsBrief.getImgList());
-        return list;
-    }
-
-    public static TaoBaoGoodsBrief isAlimama(String auctionId) {
-        if (StringUtil.isNullOrEmpty(auctionId) || !NumberUtil.isNumeric(auctionId))
-            return null;
-        TaoBaoGoodsBrief tb = null;
-        try {
-            tb = TaoKeApiUtil.getSimpleGoodsInfo(Long.parseLong(auctionId));
-        } catch (TaobaoGoodsDownException e) {
-            e.printStackTrace();
-        }
-        return tb;
-    }
-
-    public static List<TaoBaoGoodsBriefExtra> getTaoBaoGoodsBriefExtraList(List<TaoBaoCoupon> list) {
-        List<TaoBaoGoodsBriefExtra> tbxs = new ArrayList<TaoBaoGoodsBriefExtra>();
-        TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null;
-        TaoBaoQuanInfo taobaoQuanInfo = null;
-        TaoBaoHongBaoInfo taobaoHongbaoInfo = null;
-        for (TaoBaoCoupon taoBaoCoupon : list) {
-            taoBaoGoodsBriefExtra = new TaoBaoGoodsBriefExtra();
-            taobaoQuanInfo = new TaoBaoQuanInfo();
-            taobaoQuanInfo.setCouponAmount(taoBaoCoupon.getCouponAmount());
-            taobaoQuanInfo.setCouponInfo(taoBaoCoupon.getCouponinfo());
-            taobaoQuanInfo.setCouponPrice(taoBaoCoupon.getQuanPrice());
-            taobaoQuanInfo.setCouponLink(taoBaoCoupon.getCouponLink());
-            taobaoHongbaoInfo = new TaoBaoHongBaoInfo();
-            taobaoHongbaoInfo.setHongbao(taoBaoCoupon.getHongbao());
-            taobaoHongbaoInfo.setRate("楼" + taoBaoCoupon.getHongbao().toString());
-
-            taoBaoGoodsBriefExtra.setTaoBaoHongBaoInfo(taobaoHongbaoInfo);
-            taoBaoGoodsBriefExtra.setTaoBaoQuanInfo(taobaoQuanInfo);
-
-            taoBaoGoodsBriefExtra.setAuctionId(Long.parseLong(taoBaoCoupon.getAuctionId()));
-            taoBaoGoodsBriefExtra.setAuctionUrl(taoBaoCoupon.getAuctionUrl());
-            taoBaoGoodsBriefExtra.setBaoyou(true);
-            taoBaoGoodsBriefExtra.setBiz30day(taoBaoCoupon.getBiz30day());
-            taoBaoGoodsBriefExtra.setPictUrl(taoBaoCoupon.getPictUrl());
-            taoBaoGoodsBriefExtra.setQuanPrice(taoBaoCoupon.getQuanPrice());
-
-            int shopType = taoBaoCoupon.getShopType();
-            taoBaoGoodsBriefExtra.setShopType(shopType);
-            taoBaoGoodsBriefExtra.setShowType(taoBaoCoupon.getShowType());
-
-            taoBaoGoodsBriefExtra.setTitle(taoBaoCoupon.getTitle());
-            taoBaoGoodsBriefExtra.setReservePrice(taoBaoCoupon.getZkPrice());
-            taoBaoGoodsBriefExtra.setZkPrice(taoBaoCoupon.getZkPrice());
-            taoBaoGoodsBriefExtra.setSellerId(taoBaoCoupon.getSellerId());
-            tbxs.add(taoBaoGoodsBriefExtra);
-        }
-
-        return tbxs;
-    }
-
-    public static TaoBaoGoodsBrief parsePhoneShareUrlByTM(String murl) {
-        if (!murl.contains("http://zmnxbc.com")) { // 鎵嬫満澶╃尗鍒嗕韩
-            return null;
-        }
-        TaoBaoGoodsBrief taobao;
-        try {
-            Connection connect = Jsoup.connect(murl);
-            Document document = connect.get();
-            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
-                    .get(2);
-            String html = element.html();
-            String json = html.substring(html.indexOf("{"), html.lastIndexOf("}") + 1);
-            JSONObject data = JSONObject.fromObject(json);
-            String auctionId = data.optString("bizId");
-            TaoBaoGoodsBrief alimama = isAlimama(auctionId);
-            if (alimama != null) {
-                return alimama;
-            }
-            String price = data.optString("itemPrice", "0");
-            String title = data.optString("content");
-            String url = data.optJSONArray("actionRule").optJSONObject(0).optString("url");
-            Document document2 = Jsoup.connect("http:" + url).get();
-            org.jsoup.nodes.Element element2 = document2.getElementById("s-showcase").getElementsByClass("scroller")
-                    .get(0);
-            Elements elements = element2.getElementsByClass("item");
-            List<String> imgStrs = new ArrayList<String>();
-            for (org.jsoup.nodes.Element e : elements) {
-                org.jsoup.nodes.Element img = e.getElementsByTag("img").get(0);
-                String attr = img.attr("src");
-                if (attr == "") {
-                    attr = img.attr("data-src");
-                }
-                if (!attr.contains("http:")) {
-                    attr = "http:" + attr;
-                }
-                imgStrs.add(attr);
-            }
-            taobao = new TaoBaoGoodsBrief();
-            taobao.setAuctionId(Long.parseLong(auctionId));
-            taobao.setTitle(title);
-            taobao.setZkPrice(new BigDecimal(price));
-            taobao.setImgList(imgStrs);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        return taobao;
-    }
-
-    public static TaoBaoGoodsBrief parsePhoneShareUrlByTB(String burl) {
-        try {
-            Connection connect = Jsoup.connect(burl);
-            Document document = connect.get();
-            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
-                    .get(1);
-            String html = element.toString();
-            int index = html.indexOf("var url = ");
-            int endIndex = html.lastIndexOf("'");
-            html = html.substring(index, endIndex);
-            int index2 = html.indexOf("'");
-            html = html.substring(index2 + 1);
-            int indexId = html.indexOf("id=");
-            String id = "";
-            if (html.contains("a.m.taobao.com")) {
-                indexId = html.indexOf("com/i");
-                html = html.substring(indexId);
-                html = html.substring(5, html.indexOf("."));
-                id = html;
-            } else {
-                String reg = "[?|&]{1}[i]{1}[d]{1}[=]{1}\\d+[&]?";
-                Pattern p = Pattern.compile(reg);
-                Matcher matcher = p.matcher(html);
-                if (matcher.find()) {
-                    id = matcher.group();
-                }
-                id = id.substring(id.indexOf("=") + 1, id.lastIndexOf("&"));
-            }
-            TaoBaoGoodsBrief alimama = isAlimama(id);
-
-            if (alimama != null) {
-                return alimama;
-            }
-            return parsePhoneTmAndTb(id);
-        } catch (Exception e) {
-            LogHelper.error("鏃犳硶瑙f瀽鍒版窐瀹濆晢鍝両D:" + burl);
-            return null;
-        }
-
-    }
-
-    public static TaoBaoGoodsBrief parsePhoneTmAndTb(String auctionId) {
-
-        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
-        try {
-
-            Connection connect = Jsoup.connect(String.format(TM_PHONE_URL, auctionId));
-            Document document = connect.get();
-            Elements elements = document.getElementsByTag("script");
-            if (elements.size() >= 9) {
-                String json = elements.get(8).toString();
-                json = json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1);
-                JSONObject data = JSONObject.fromObject(json);
-                JSONObject model = data.optJSONObject("defaultModel");
-                JSONObject itemPriceResultDO = model.optJSONObject("itemPriceResultDO");
-                JSONObject priceInfo = itemPriceResultDO.optJSONObject("priceInfo");
-                Set keySet = priceInfo.keySet();
-                String key = (String) keySet.toArray()[0];
-                JSONObject goods = priceInfo.optJSONObject(key);
-                String price = "";
-                if (goods.optJSONArray("promotionList") != null) {
-                    price = goods.optJSONArray("promotionList").getJSONObject(0).optString("price");
-                } else {
-                    price = goods.optString("price");
-                }
-                List<String> imgs = new ArrayList<String>();
-                Element showcase = document.getElementById("s-showcase");
-                Elements Eleimgs = showcase.getElementsByTag("img");
-                for (Element Eleimg : Eleimgs) {
-                    String img = Eleimg.attr("src");
-                    if ("".equals(img)) {
-                        img = Eleimg.attr("data-src");
-                    }
-                    if (!img.contains("http")) {
-                        img = "http:" + img;
-                    }
-                    imgs.add(img);
-                }
-                Element stitle = document.getElementById("s-title");
-                String title = stitle.getElementsByTag("h1").get(0).toString().replaceAll("<h1>", "")
-                        .replaceAll("</h1>", "");
-                taoBaoGoodsBrief = new TaoBaoGoodsBrief();
-                taoBaoGoodsBrief.setZkPrice(new BigDecimal(price));
-                taoBaoGoodsBrief.setTitle(title);
-                taoBaoGoodsBrief.setImgList(imgs);
-                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
-                taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId));
-                taoBaoGoodsBrief.setUserType(1);
-            } else {
-                Connection connect2 = Jsoup.connect(String.format(TB_URL, auctionId));
-                Document document2 = connect2.get();
-                Elements elements2 = document2.getElementsByTag("script");
-                String json = elements2.get(0).toString();
-                json = json.substring(json.indexOf("item:"), json.indexOf("seller:"));
-                json = json.substring(json.indexOf("{"), json.lastIndexOf(","));
-                json = json.substring(json.indexOf("auctionImages"), json.lastIndexOf("]") + 1);
-                json = json.substring(json.indexOf("["));
-                JSONArray array = JSONArray.fromObject(json);
-                List<String> imgs = new ArrayList<String>();
-                for (Object str : array) {
-                    String imgStr = String.valueOf(str);
-                    if (!imgStr.contains("http")) {
-                        imgStr = "http:" + imgStr;
-                    }
-                    imgs.add(imgStr);
-                }
-                String turl = "https://detailskip.taobao.com/service/getData/1/p1/item/detail/sib.htm?itemId="
-                        + auctionId
-                        + "&sellerId=0&modules=dynStock,qrcode,viewer,price,duty,xmpPromotion,delivery,upp,activity,fqg,zjys,couponActivity,soldQuantity,contract,tradeContract&callback=onSibRequestSuccess";
-                Map<String, String> params = new HashMap<String, String>();
-                params.put("Referer", "https://item.taobao.com/item.htm?id=" + auctionId);
-                String json2 = TaoBaoHttpUtil.get(turl, params);
-                json2 = json2.substring(json2.indexOf("{"), json2.lastIndexOf("}") + 1);
-                JSONObject data2 = JSONObject.fromObject(json2);
-                String price = data2.optJSONObject("data").optJSONObject("promotion").optJSONObject("promoData")
-                        .optJSONArray("def").getJSONObject(0).optString("price");
-                String title = document2.getElementsByTag("title").get(0).toString();
-                title = title.replaceAll("-娣樺疂缃�", "").replaceAll("<title>", "").replaceAll("</title>", "");
-                taoBaoGoodsBrief = new TaoBaoGoodsBrief();
-                taoBaoGoodsBrief.setTitle(title);
-                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
-                taoBaoGoodsBrief.setImgList(imgs);
-                taoBaoGoodsBrief.setZkPrice(new BigDecimal(price));
-                taoBaoGoodsBrief.setAuctionId(Long.parseLong(auctionId));
-                taoBaoGoodsBrief.setUserType(0);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return null;
-        }
-        return taoBaoGoodsBrief;
-    }
-
-    public static String getGoodsIdByPhoneShareUrl(String burl) {
-        try {
-            Connection connect = Jsoup.connect(burl);
-            Document document = connect.get();
-            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
-                    .get(1);
-            String html = element.toString();
-            int index = html.indexOf("var url = ");
-            int endIndex = html.lastIndexOf("'");
-            html = html.substring(index, endIndex);
-            int index2 = html.indexOf("'");
-            html = html.substring(index2 + 1);
-            int indexId = html.indexOf("id=");
-            String id = "";
-            if (html.contains("a.m.taobao.com")) {
-                indexId = html.indexOf("com/i");
-                html = html.substring(indexId);
-                html = html.substring(5, html.indexOf("."));
-                id = html;
-            } else {
-                String reg = "[?|&]{1}[i]{1}[d]{1}[=]{1}\\d+[&]?";
-                Pattern p = Pattern.compile(reg);
-                Matcher matcher = p.matcher(html);
-                if (matcher.find()) {
-                    id = matcher.group();
-                }
-                id = id.substring(id.indexOf("=") + 1, id.lastIndexOf("&"));
-            }
-            return id;
-        } catch (Exception e) {
-            LogHelper.error("鏃犳硶瑙f瀽鍒版窐瀹濆晢鍝両D:" + burl);
-            return null;
-        }
-    }
-
-    /**
-     * 鑾峰彇鍟嗗搧鐨勭敤鎴峰垎鎴愭瘮渚�
-     *
-     * @param goodsBrief 鍟嗗搧璇︽儏
-     * @param rate       鐢ㄦ埛鍐嶆鍒嗘垚姣斾緥锛�0-100锛�
-     * @return
-     */
-    public static String getGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
-        // if (goodsBrief != null && goodsBrief.getMaterialLibType() != null &&
-        // goodsBrief.getMaterialLibType() == 0)
-        // return "楼0.00";
-        // else
-        return "楼" + getGoodsHongBaoMoney(goodsBrief, rate, share).toString();
-    }
-
-    /**
-     * 鑾峰彇娣樺疂鍟嗗搧璇ヨ幏寰楀灏戜剑閲�
-     *
-     * @param goodsBrief
-     * @param rate
-     * @return
-     */
-    public static BigDecimal getGoodsHongBaoMoney(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
-        BigDecimal money = null;
-        if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo())
-                || goodsBrief.getCouponInfo().trim().equalsIgnoreCase("鏃�")) {
-            money = MoneyBigDecimalUtil.mul(
-                    MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), goodsBrief.getTkRate()),
-                            new BigDecimal("0.01")),
-                    MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
-        } else// 鏈夊埜
-        {
-            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goodsBrief.getCouponInfo());
-            BigDecimal startFee = list.get(0);
-            BigDecimal couponAccount = list.get(1);
-            if (startFee.compareTo(goodsBrief.getZkPrice()) <= 0
-                    && goodsBrief.getZkPrice().compareTo(couponAccount) > 0) {
-                BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
-                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil
-                                .mul(MoneyBigDecimalUtil.mul(finalPrice, goodsBrief.getTkRate()), new BigDecimal("0.01")),
-                        MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
-
-            } else {// 涓嶈兘鐢ㄥ埜
-                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(
-                        MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), goodsBrief.getTkRate()),
-                        new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
-            }
-        }
-
-        if (share)
-            money = TaoBaoUtil.getCanShareMoney(new Date(), money);
-
-        return BigDecimalUtil.getWithNoZera(money);
-    }
-
-    // }
-
-    // 鑾峰彇鍒哥殑绾㈠寘鏄剧ず
-    public static BigDecimal getCouponHongBaoInfo(TaoBaoCoupon taoBaoCoupon, BigDecimal rate) {
-        // 钀ラ攢璁″垝
-
-        // 璁$畻杩斿埄
-        // 鏃犲埜
-
-        BigDecimal startFee = taoBaoCoupon.getCouponStartFee();
-        BigDecimal couponAccount = taoBaoCoupon.getCouponAmount();
-        if (startFee.compareTo(taoBaoCoupon.getZkPrice()) <= 0
-                && taoBaoCoupon.getZkPrice().compareTo(couponAccount) > 0) {
-            BigDecimal finalPrice = taoBaoCoupon.getZkPrice().subtract(couponAccount);
-            return finalPrice.multiply(new BigDecimal(taoBaoCoupon.getTkRate())).divide(new BigDecimal(10000))
-                    .multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
-        } else {// 涓嶈兘鐢ㄥ埜
-            return taoBaoCoupon.getZkPrice().multiply(new BigDecimal(taoBaoCoupon.getTkRate()))
-                    .divide(new BigDecimal(10000)).multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
-        }
-    }
-
-    /**
-     * 鑾峰彇鍒嗕韩璧氱殑閲戦
-     *
-     * @param goodsBrief
-     * @param rate
-     * @return
-     */
-
-    public static BigDecimal getShareGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
-        return getGoodsHongBaoMoney(goodsBrief, rate, true);
-    }
-
-    /**
-     * 璁$畻鍟嗗搧鍒稿悗浠凤紝娌℃湁鍒稿垯杩斿洖鍘熶环
-     *
-     * @param goodsBrief
-     * @return
-     */
-    public static BigDecimal getAfterUseCouplePrice(TaoBaoGoodsBrief goodsBrief) {
-
-        if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo()) || "鏃�".equals(goodsBrief.getCouponInfo())) {
-            return goodsBrief.getZkPrice();
-        } else {
-            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goodsBrief.getCouponInfo());
-            BigDecimal startFee = list.get(0);
-            BigDecimal couponAccount = list.get(1);
-            if (startFee.compareTo(goodsBrief.getZkPrice()) <= 0
-                    && goodsBrief.getZkPrice().compareTo(couponAccount) > 0) {
-                BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
-                return finalPrice;
-            } else {// 涓嶈兘鐢ㄥ埜
-                return goodsBrief.getZkPrice();
-            }
-        }
-    }
-
-    /**
-     * 鑾峰彇鍥炬枃璇︽儏
-     *
-     * @param auctionId
-     */
-    public static List<String> getGoodsTextAndImageDetails(Long id) {
-        if (id == null) {
-            return null;
-        }
-        long startTime = System.currentTimeMillis();
-
-        String url = null;
-        try {
-            url = String.format("http://hws.m.taobao.com/cache/mtop.wdetail.getItemDescx/4.1/?&data=%s&type=jsonp",
-                    URLEncoder.encode("{\"item_num_id\":\"" + id + "\"}", "UTF-8"));
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        List<String> list = new ArrayList<>();
-        String html = org.yeshi.utils.HttpUtil.get(url);
-        String json = html.substring(9, html.length() - 1);
-
-        try {
-            JSONObject obj = JSONObject.fromObject(json);
-            JSONArray array = obj.getJSONObject("data").optJSONArray("images");
-            for (int i = 0; i < array.size(); i++) {
-                list.add(array.optString(i));
-            }
-            LogHelper.test("鑾峰彇鍟嗗搧鍥炬枃璇︽儏鑰楁椂:" + (System.currentTimeMillis() - startTime));
-        } catch (Exception e) {
-
-        }
-        return list;
-    }
-
-    public static String getSaleCount(int count) {
-        if (count >= 10000) {
-            double sales = count;
-            String salesCountMidea = String.format("%.1f", sales / 10000);
-            return salesCountMidea + "涓�";
-        } else
-            return count + "";
-    }
-
-    public static List<TaoBaoProvince> getTaoBaoProvinceList() {
-        if (taoBaoProvinceList == null) {
-            taoBaoProvinceList = new ArrayList<>();
-            // 瑙f瀽
-            try {
-                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-                DocumentBuilder builder = factory.newDocumentBuilder();
-                org.w3c.dom.Document doc = builder
-                        .parse(TaoBaoUtil.class.getClassLoader().getResourceAsStream("taobao_address.xml"));
-                NodeList nodeList = doc.getElementsByTagName("province");
-                nodeList = nodeList.item(0).getChildNodes();
-                for (int i = 0; i < nodeList.getLength(); i++) {
-                    TaoBaoProvince province = new TaoBaoProvince();
-                    org.w3c.dom.Node node = nodeList.item(i);
-                    if (node.getNodeName().equalsIgnoreCase("topName")) {
-                        NamedNodeMap map = node.getAttributes();
-                        for (int n = 0; n < map.getLength(); n++) {
-                            if (map.item(n).getNodeName().equalsIgnoreCase("id")) {
-                                province.setId(map.item(n).getNodeValue());
-                            } else if (map.item(n).getNodeName().equalsIgnoreCase("name")) {
-                                province.setName(map.item(n).getNodeValue());
-                            }
-                        }
-                        taoBaoProvinceList.add(province);
-                    }
-                }
-
-            } catch (Exception e) {
-
-            }
-        }
-        return taoBaoProvinceList;
-    }
-
-    public static List<ImageInfo> getTBDetailImageWithSize(Long auctionId) {
-
-        List<ImageInfo> imgList = new ArrayList<>();
-
-        long startTime = System.currentTimeMillis();
-        JSONObject data = new JSONObject();
-        data.put("id", auctionId + "");
-        String url = "";
-        try {
-            url = String.format(
-                    "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdesc/6.0/?data=%s&callback=GoodsLogic.showTuwen&_=%s",
-                    URLEncoder.encode(data.toString(), "UTF-8"), System.currentTimeMillis() + "");
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        String result = HttpUtil.get(url);
-        result = result.replace("GoodsLogic.showTuwen(", "").replace(")", "");
-        data = JSONObject.fromObject(result);
-        String pcDescContent = data.optJSONObject("data").optString("pcDescContent");
-        System.out.println(pcDescContent);
-        if (!StringUtil.isNullOrEmpty(pcDescContent)) {
-            try {
-                Document doc = Jsoup.parse(pcDescContent);
-                Elements eles = doc.getElementsByTag("img");
-                for (int i = 0; i < eles.size(); i++) {
-                    String imgSrc = eles.get(i).attr("src");
-                    if (imgSrc.endsWith(".jpg")) {
-                        if (!imgSrc.startsWith("http"))
-                            imgSrc = "https:" + imgSrc;
-                        imgList.add(new ImageInfo(imgSrc, 0, 0));
-                    }
-                }
-            } catch (Exception e) {
-            }
-        }
-        System.out.println("璇锋眰璇︽儏鑰楁椂:" + (System.currentTimeMillis() - startTime));
-        return imgList;
-    }
-
-    /**
-     * @param auctionId
-     * @return
-     */
-
-    public static List<ImageInfo> getTBDetailImageWithSizev2(Long auctionId, ProxyIP ip) {
-        List<ImageInfo> imgList = new ArrayList<>();
-        try {
-            Map<String, String> headers = new HashMap<>();
-            headers.put("User-Agent",
-                    "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
-            headers.put("Referer", "https://detail.tmall.com/item.htm?id=" + auctionId);
-            String url = String.format("https://hws.m.taobao.com/cache/desc/5.0?id=" + auctionId);
-            String result = HttpUtil.get(url, headers, ip);
-            if (!StringUtil.isNullOrEmpty(result)) {
-                JSONObject data = JSONObject.fromObject(result);
-
-                JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
-                if (array != null) {
-                    String html = "";
-                    for (int i = 0; i < array.size(); i++) {
-                        String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
-                        html += itemStr;
-                    }
-                    Document doc = Jsoup.parse(html);
-                    Elements items = doc.getElementsByTag("a");
-                    for (int i = 0; i < items.size(); i++) {
-                        ImageInfo img = new ImageInfo();
-                        Element item = items.get(i);
-                        if (StringUtil.isNullOrEmpty(item.ownText()))
-                            continue;
-                        if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
-                            img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
-                            img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
-                        }
-                        if (item.ownText().startsWith("http"))
-                            img.setPicture(item.ownText().trim());
-                        else
-                            img.setPicture("http:" + item.ownText().trim());
-                        if (img != null && img.getPicture() != null && img.getPicture().endsWith(".jpg"))
-                            imgList.add(img);
-                    }
-
-                }
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            try {
-                LogHelper.errorDetailInfo(e);
-            } catch (Exception e1) {
-                e1.printStackTrace();
-            }
-        }
-        return imgList;
-    }
-
-    /**
-     * 闃块噷鐧惧窛杞摼鎺ュ彛锛堟殏鏃舵棤娉曚娇鐢級
-     *
-     * @param auctionId
-     * @param appKey
-     * @param adzoneId
-     * @return
-     */
-    public static String getBaiChuanConvertLink(Long 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");
-        params.put("appVersion", "1.3.4");
-        params.put("os", "android8.0.0");
-        params.put("taokeAppkey", appKey);
-        params.put("jtype", "tb");
-        params.put("aliapp", "tb");
-        params.put("adzoneid", adzoneId);
-        params.put("url", "https://h5.m.taobao.com/awp/core/detail.htm?id=" + auctionId);
-        params.put("deviceModel", "LND-AL30");
-        params.put("sdkVersion", "0.3.2");
-        params.put("packageName", "com.yeshi.ec.rebate");
-        params.put("cid", "tunion4android@862977040115210_1536222395791");
-
-        try {
-            url += "?data=" + URLEncoder.encode(params.toString(), "UTF-8");
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-
-        String result = HttpUtil.get(url);
-        System.out.println(result);
-        return null;
-    }
-
-    /**
-     * 甯歌鍟嗗搧杞负娣樺疂鍟嗗搧瀵硅薄
-     *
-     * @param commonGoods
-     * @return
-     */
-    public static TaoBaoGoodsBrief convert(CommonGoods commonGoods) {
-        TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
-        taoBaoGoods.setAuctionId(commonGoods.getGoodsId());
-        taoBaoGoods.setBiz30day(commonGoods.getSales());
-        taoBaoGoods.setCouponAmount(commonGoods.getCouponAmount());
-        taoBaoGoods.setCouponInfo(commonGoods.getCouponInfo());
-        taoBaoGoods.setCouponLeftCount(commonGoods.getCouponLeftCount());
-        taoBaoGoods.setCouponStartFee(commonGoods.getCouponStartPrice());
-        taoBaoGoods.setCouponTotalCount(commonGoods.getCouponTotalCount());
-        taoBaoGoods.setPictUrl(commonGoods.getPicture());
-        taoBaoGoods.setPictUrlWhite(commonGoods.getPictureWhite());
-        taoBaoGoods.setSellerId(commonGoods.getSellerId());
-        taoBaoGoods.setShopTitle(commonGoods.getSellerName());
-        taoBaoGoods.setTitle(commonGoods.getTitle());
-        taoBaoGoods.setUserType(commonGoods.getShopType() - 1);
-        taoBaoGoods.setZkPrice(commonGoods.getPrice());
-        taoBaoGoods.setTkRate(commonGoods.getRate());
-        taoBaoGoods.setTkCommFee(new BigDecimal("0"));
-        taoBaoGoods.setState(commonGoods.getState());
-        return taoBaoGoods;
-    }
-
-    public static TaoBaoGoodsBrief convert(DaTaoKeDetailV2 detail) {
-        TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
-        taoBaoGoods.setAuctionId(detail.getGoodsId());
-        taoBaoGoods.setBiz30day(detail.getMonthSales());
-        // 鍒哥浉鍏宠浆鎹�
-        taoBaoGoods.setCouponAmount(detail.getCouponPrice());
-        taoBaoGoods.setCouponInfo(String.format("婊�%s鍏冨噺%s鍏�", detail.getOriginalPrice(),
-                MoneyBigDecimalUtil.getWithNoZera(detail.getCouponPrice())));
-        if (detail.getCouponTotalNum() != null && detail.getCouponReceiveNum() != null)
-            taoBaoGoods.setCouponLeftCount(detail.getCouponTotalNum() - detail.getCouponReceiveNum());
-        else
-            taoBaoGoods.setCouponLeftCount(0);
-        taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
-        try {
-            taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
-        } catch (Exception e) {
-        }
-
-        taoBaoGoods.setCouponTotalCount(detail.getCouponTotalNum());
-        taoBaoGoods.setCouponLink(detail.getCouponLink());
-        taoBaoGoods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(
-                TimeUtil.convertToTimeTemp(detail.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
-        taoBaoGoods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(
-                TimeUtil.convertToTimeTemp(detail.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
-
-        taoBaoGoods.setPictUrl(detail.getMainPic());
-        taoBaoGoods.setPictUrlWhite(detail.getMainPic());
-        if (taoBaoGoods.getPictUrl() != null && !taoBaoGoods.getPictUrl().startsWith("http"))
-            taoBaoGoods.setPictUrl("https:" + taoBaoGoods.getPictUrl());
-
-        if (taoBaoGoods.getPictUrlWhite() != null && !taoBaoGoods.getPictUrlWhite().startsWith("http"))
-            taoBaoGoods.setPictUrlWhite("https:" + taoBaoGoods.getPictUrlWhite());
-
-
-        String imgs = detail.getImgs();
-        if (!StringUtil.isNullOrEmpty(imgs)) {
-            String[] array = imgs.split(",");
-            if (array != null && array.length > 0) {
-                List<String> imgList = new ArrayList<>();
-                for (int i = 0; i < array.length; i++) {
-                    imgList.add(array[i]);
-                }
-                taoBaoGoods.setImgList(imgList);
-            }
-        }
-
-
-        taoBaoGoods.setSellerId(detail.getSellerId());
-        taoBaoGoods.setShopTitle(detail.getShopName());
-        taoBaoGoods.setTitle(detail.getDtitle());
-        taoBaoGoods.setUserType(detail.getShopType());
-        taoBaoGoods.setZkPrice(detail.getOriginalPrice());
-        taoBaoGoods.setTkRate(detail.getCommissionRate());
-        taoBaoGoods.setTkCommFee(new BigDecimal("0"));
-        taoBaoGoods.setState(0);
-        return taoBaoGoods;
-    }
-
-    /**
-     * 鑾峰彇娣樺疂鑱旂洘鐨勬巿鏉冮摼鎺�
-     *
-     * @param appKey      -搴旂敤Key
-     * @param callBackUrl -鍥炶皟閾炬帴
-     * @param uid-鐢ㄦ埛ID
-     * @return
-     */
-    public static String getTaoBaoUnionAuthUrl(String appKey, String callBackUrl, Long uid, String source) {
-        if (uid == null)
-            return null;
-        long timestamp = System.currentTimeMillis();
-        JSONObject json = new JSONObject();
-        json.put("u", uid);
-        json.put("t", timestamp);
-        json.put("s", source);
-        String url = null;
-        try {
-            url = String.format(
-                    "https://oauth.taobao.com/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s&view=wap",
-                    appKey, callBackUrl,
-                    URLEncoder.encode(AESUtil.encrypt(json.toString(), Constant.UIDAESKEY), "UTF-8"));
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        return url;
-    }
-
-    /**
-     * 鑾峰彇娣樺疂鐨勫晢鍝佽鎯�
-     *
-     * @param actionId
-     * @return
-     */
-    public static TaoBaoGoodsBrief getSimpleGoodsBrief(Long actionId) {
-        JSONObject data = new JSONObject();
-        data.put("itemNumId", actionId + "");
-
-        String url = "";
-        try {
-            url = String.format(
-                    "http://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s&qq-pf-to=pcqq.group",
-                    URLEncoder.encode(data.toString(), "UTF-8"));
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-
-        String result = null;
-        try {
-            Connection.Response doc = Jsoup.connect(url).ignoreContentType(true).timeout(1000 * 10)
-                    .userAgent(
-                            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362")
-                    .header("Accept", "text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8")
-                    .header("Accept-Language", "zh-CN").header("Host", "acs.m.taobao.com")
-                    .header("Upgrade-Insecure-Requests", "1")
-                    .header("Cookie",
-                            "_cc_=VFC%2FuZ9ajQ%3D%3D; isg=BLu7TvdFYk89dV4DMXO7XNRGU58lEM8SDjV-ja14l7rRDNvuNeBfYtlOJmznNycK; thw=cn; miid=1490566681358073134; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; cna=ZW8rFCpNP1gCAWpXAiKqMzqi; tracknick=tb23001560; l=cBxbffilq1UJdAFCBOCanurza77OSdAYYuPzaNbMi_5NE6T1BR7Ok6G1vF96VsWdOW8B4NSiTkp9-etkZ3Znq9SpXUJ1.; tg=0; _w_app_lg=19; WAPFDFDTGFG=%2B4cMKKP%2B8PI%2BtNYpkiAuTPLkiJB1kcwi")
-                    .execute();
-            result = doc.body();
-        } catch (Exception e1) {
-            e1.printStackTrace();
-        }
-
-        JSONObject resultOBJ = JSONObject.fromObject(result);
-        if (resultOBJ.optJSONObject("data") != null) {
-            data = resultOBJ.optJSONObject("data");
-            if (data != null) {
-                JSONObject item = data.optJSONObject("item");
-                if (item != null) {
-                    JSONObject seller = data.optJSONObject("seller");
-                    TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
-                    goods.setTitle(item.optString("title"));
-                    goods.setAuctionId(item.optLong("itemId"));
-                    goods.setTitle(item.optString("title"));
-                    if (item.optJSONArray("images") != null && item.optJSONArray("images").size() > 0) {
-                        String picture = item.optJSONArray("images").optString(0);
-                        goods.setPictUrl(picture.startsWith("http") ? picture : "https:" + picture);
-                    }
-                    if (seller != null) {
-                        goods.setSellerId(seller.optLong("shopId"));
-                        String shopType = seller.optString("shopType");
-                        if ("B".equalsIgnoreCase(shopType)) {
-                            goods.setUserType(1);
-                        } else
-                            goods.setUserType(0);
-                        goods.setShopTitle(seller.optString("shopName"));
-                    }
-                    return goods;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * 鏍规嵁鍟嗗搧ID鑾峰彇搴楅摵璇︽儏
-     *
-     * @param auctionId
-     * @return
-     */
-    public static TaoBaoShop getTaoBaoShopDetailByAuctionId(Long auctionId) {
-        JSONObject data = new JSONObject();
-        data.put("itemNumId", auctionId + "");
-
-        String url = "";
-        try {
-            url = String.format("https://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s",
-                    URLEncoder.encode(data.toString(), "UTF-8"));
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        String result = HttpUtil.get(url);
-
-        TaoBaoShop shop = new TaoBaoShop();
-
-        try {
-            JSONObject resultJson = JSONObject.fromObject(result);
-            JSONObject dataJson = resultJson.optJSONObject("data");
-            JSONObject sellerJson = dataJson.optJSONObject("seller");
-
-            shop.setGoodRatePercentage(new BigDecimal(sellerJson.optString("goodRatePercentage").replace("%", "")));
-
-            LogHelper.test("鍗栧淇℃伅:" + result);
-            shop.setId(sellerJson.optLong("userId"));
-            JSONArray array = sellerJson.optJSONArray("evaluates");
-            for (int i = 0; i < array.size(); i++) {
-                JSONObject item = array.optJSONObject(i);
-                if ("瀹濊礉鎻忚堪".equalsIgnoreCase(item.optString("title").trim())) {
-                    shop.setScoreGoods(new BigDecimal(item.optString("score").trim()));
-                    shop.setScoreGoodsD(new BigDecimal(item.optString("level").trim()));
-                } else if ("鍗栧鏈嶅姟".equalsIgnoreCase(item.optString("title").trim())) {
-                    shop.setScoreSeller(new BigDecimal(item.optString("score").trim()));
-                    shop.setScoreSellerD(new BigDecimal(item.optString("level").trim()));
-                } else if ("鐗╂祦鏈嶅姟".equalsIgnoreCase(item.optString("title").trim())) {
-                    shop.setScoreLogistics(new BigDecimal(item.optString("score").trim()));
-                    shop.setScoreLogisticsD(new BigDecimal(item.optString("level").trim()));
-                }
-            }
-
-            shop.setSellerNick(sellerJson.optString("sellerNick"));
-            shop.setShopIcon("https:" + sellerJson.optString("shopIcon"));
-            shop.setShopId(sellerJson.optLong("shopId"));
-            shop.setShopName(sellerJson.optString("shopName"));
-            if ("B".equalsIgnoreCase(sellerJson.optString("sellerType")))
-                shop.setUserType(1);
-            else
-                shop.setUserType(0);
-
-            shop.setShopLink(TaoBaoUtil.getShopLink(shop.getId()));
-        } catch (Exception e) {
-            // if (1 > 0)
-            // return null;
-            try {
-                TaoBaoGoodsBrief goods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
-                shop.setId(goods.getSellerId());
-                shop.setShopName(goods.getShopTitle());
-                shop.setUserType(goods.getUserType());
-            } catch (Exception e1) {
-                shop.setId(1L);
-                shop.setShopName("");
-                shop.setUserType(0);
-            }
-
-            shop.setGoodRatePercentage(new BigDecimal(100));
-            shop.setScoreGoods(new BigDecimal("4.9"));
-            shop.setScoreGoodsD(new BigDecimal("0"));
-            shop.setScoreSeller(new BigDecimal("4.9"));
-            shop.setScoreSellerD(new BigDecimal("0"));
-            shop.setScoreLogistics(new BigDecimal("4.9"));
-            shop.setScoreLogisticsD(new BigDecimal("0"));
-            shop.setSellerNick("");
-            shop.setShopIcon("https:");
-            shop.setShopLink(TaoBaoUtil.getShopLink(shop.getId()));
-        }
-
-        return shop;
-    }
-
-    /**
-     * 鏍规嵁鍗栧id鑾峰彇搴楅摵閾炬帴
-     *
-     * @param sellerId
-     * @return
-     */
-    public static String getShopLink(Long sellerId) {
-        return "http://store.taobao.com/shop/view_shop.htm?user_number_id=" + sellerId;
-    }
-
-    /**
-     * 鏄惁鍙互鍔犲叆娣樼ぜ閲戠殑棰勯�夊晢鍝佸簱
-     *
-     * @param v2
-     * @return
-     */
-    public static boolean canAddToTLJBuyGoods(TaoBaoGoodsBrief goods) {
-        BigDecimal tljMoney = getShareGoodsHongBaoInfo(goods, TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
-        // 涓嶈兘灏忎簬1鍧�
-        if (tljMoney.compareTo(new BigDecimal(1)) < 0 || tljMoney.compareTo(new BigDecimal(10)) > 0)
-            return false;
-
-        // 鍒稿悗浠蜂笉鑳藉ぇ浜�150
-        if (getAfterUseCouplePrice(goods).compareTo(new BigDecimal(150)) > 0)
-            return false;
-
-        return true;
-    }
-
-    /**
-     * 鏌ヨ澶╃尗鍟嗗搧鍥剧墖銆佹爣棰�
-     *
-     * @param auctionId
-     * @return
-     */
-    public static TaoBaoGoodsBrief getTmallGoodsInfo(String auctionId) {
-        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
-        try {
-            Connection connect = Jsoup.connect(String.format(TM_PHONE_URL, auctionId));
-            Document document = connect.get();
-            Elements elements = document.getElementsByTag("script");
-            if (elements.size() >= 0) {
-                for (int i = 0; i < elements.size(); i++) {
-                    String content = elements.get(i).toString();
-                    if (content.contains("var _DATA_Detail")) {
-                        content = content.replace("<script>", "");
-                        content = content.replace("</script>", "");
-
-                        if (content.contains("videoDetail")) {
-                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
-                        } else {
-                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
-                        }
-
-                        ScriptEngineManager manager = new ScriptEngineManager();
-                        ScriptEngine engine = manager.getEngineByName("javascript");
-                        engine.eval(content);
-
-                        if (engine instanceof Invocable) {
-                            Invocable in = (Invocable) engine;
-                            JSONObject json = JSONObject.fromObject(in.invokeFunction("getData"));
-                            Object title = json.get("title");
-                            Object pictUrl = json.get("pictUrl");
-                            taoBaoGoodsBrief = new TaoBaoGoodsBrief();
-                            taoBaoGoodsBrief.setTitle(title.toString());
-                            taoBaoGoodsBrief.setPictUrl(pictUrl.toString());
-                            if (!pictUrl.toString().startsWith("http")) {
-                                taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize220Img("http:" + pictUrl.toString()));
-                            }
-                        }
-
-                        break;
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return taoBaoGoodsBrief;
-    }
-
-    /**
-     * 鎶栭煶杩斿埄local 鑾峰彇鐪熷疄娣樺疂閾炬帴
-     *
-     * @param url https://s.click.taobao.com/t?e=m%3D2%26s%
-     *            3DT9DFpHQCT7Rw4vFB6t2Z2ueEDrYVVa64XoO8tOebS+dRAdhuF14FMR8
-     * @return
-     */
-    public static String getRealUrl(String url) {
-        if (StringUtil.isNullOrEmpty(url))
-            return null;
-
-        try {
-            HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
-            client.getHttpConnectionManager().getParams().setConnectionTimeout(10000);
-            client.getParams().setParameter(HttpMethodParams.USER_AGENT,
-                    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"); // 璁╂湇鍔″櫒璁や负鏄疘E
-            GetMethod get = new GetMethod(url);
-            get.setFollowRedirects(false); // 绂佹鑷姩閲嶅畾鍚�
-            int iGetResultCode = client.executeMethod(get);
-            String location = get.getResponseHeader("location").getValue(); // 鎵撳嵃鍦板潃
-            GetMethod get2 = new GetMethod(URLDecoder.decode(location.split("tu=")[1]));
-            get2.addRequestHeader("Referer", location);
-            get2.setFollowRedirects(false); // 绂佹鑷姩閲嶅畾鍚�
-            int iGetResultCode2 = client.executeMethod(get2);
-            return get2.getResponseHeader("location").getValue(); // 鐪熷疄鍦板潃
-        } catch (Exception ex) {
-            ex.printStackTrace();
-        }
-        return null;
-    }
-
-    /**
-     * 娣樺彛浠よ繃婊�
-     *
-     * @param token
-     * @return
-     */
-    public static String filterTaoToken(String token) {
-        if (StringUtil.isNullOrEmpty(token))
-            return token;
-        if (token.contains("锟�") || token.contains("鈧�")) {
-            String newToken = "";
-            for (int i = 0; i < token.length(); i++) {
-                if (token.charAt(i) == '锟�' || token.charAt(i) == '鈧�') {
-                    if (!newToken.contains("("))
-                        newToken += "(";
-                    else
-                        newToken += ")";
-                } else
-                    newToken += token.charAt(i) + "";
-            }
-            return newToken;
-        }
-        return token;
-    }
-
-    /**
-     * 鎻愬彇鑷湁鏍煎紡鐨勬窐鍙d护
-     *
-     * @param str
-     * @return
-     */
-    public static String parseSystemTaoToken(String str) {
-        String pattern = "(\\({1}[A-Za-z0-9]+\\){1})";
-        Pattern r = Pattern.compile(pattern);
-        Matcher m = r.matcher(str);
-        while (m.find()) {
-            String group = m.group(0);
-            if (!StringUtil.isNullOrEmpty(group) && group.length() >= 10)
-                return group;
-        }
-        return null;
-    }
-
-    public static boolean isSpecialGoods(Integer materialLibType) {
-        if (materialLibType != null && materialLibType == 1)
-            return true;
-        else
-            return false;
-    }
-
-    private final static String[] taoTokenSymbols = new String[]{"鈧�-鈧�", "楼-楼", "锟�-锟�", "鈧�-鈧�", "\\$-\\$", "鈧�-鈧�", "垄-垄",
-            "鈧�-鈧�"};
-
-    /**
-     * 浠庢枃鏈腑鎻愬彇娣樺彛浠� @Title: getTokenListFromText @Description: @param str @return
-     * List<String> 杩斿洖绫诲瀷 @throws
-     */
-    public static List<String> getTokenListFromText(String str) {
-        String[] marks = taoTokenSymbols;
-        List<String> list=new ArrayList<>();
-        for(String m:marks){
-            for(String m1:marks){
-                list.add(m.split("-")[0]+"-"+m1.split("-")[1]);
-            }
-        }
-
-        return getTokenListFromText(str, list);
-    }
-
-    /**
-     * 浠庢枃鏈腑鎻愬彇娣樺彛浠�(鎷彿鐨勫彛浠や篃绠�)
-     *
-     * @param str
-     * @return
-     */
-    public static List<String> getTokenListFromTextWithKuoHao(String str) {
-        String[] marks = taoTokenSymbols;
-        List<String> list = new ArrayList<>();
-        for(String m:marks){
-            for(String m1:marks){
-                list.add(m.split("-")[0]+"-"+m1.split("-")[1]);
-            }
-        }
-
-        list.add("\\(-\\)");
-        list.add("锛�-锛�");
-        return getTokenListFromText(str, list);
-    }
-
-    public static List<String> getTokenListFromText(String str, List<String> markList) {
-        List<String> expressList = new ArrayList<>();
-        for (String st : markList) {
-            expressList.add(String.format("(%s{1}[A-Za-z0-9]{11,13}+%s{1})", st.split("-")[0], st.split("-")[1]));
-        }
-        String pattern = StringUtil.concat(expressList, "|");
-        Pattern r = Pattern.compile(pattern);
-        Matcher m = r.matcher(str);
-        List<String> urlList = new ArrayList<>();
-        while (m.find()) {
-            urlList.add(m.group());
-        }
-        return urlList;
-    }
-
-    /**
-     * 鑾峰彇鑳藉鍒嗙殑閽�
-     *
-     * @param estimate
-     * @return BigDecimal 杩斿洖绫诲瀷
-     * @throws
-     * @Title: getCanShareMoney
-     * @Description:
-     */
-    public static BigDecimal getCanShareMoney(Date createTime, BigDecimal estimate) {
-        if (estimate == null)
-            return null;
-        if (createTime.getTime() < TimeUtil.convertToTimeTemp("2020-06-01 12:30:00", "yyyy-MM-dd HH:mm:ss")) {
-            return estimate;
-        }
-        BigDecimal rate = new BigDecimal("0.9101");
-        return MoneyBigDecimalUtil.mul(estimate, rate);
-    }
-
-    /**
-     * 鎷兼帴娓犻亾ID
-     * @param url
-     * @param relationId
-     * @return
-     */
-    public static String concatRelationId(String url, String relationId) {
-        if (StringUtil.isNullOrEmpty(relationId))
-            return url;
-        return url + "&relationId=" + relationId;
-    }
-
-}
+package com.yeshi.fanli.util.taobao;
+
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import javax.script.Invocable;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.xml.parsers.DocumentBuilder;
+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;
+import org.apache.commons.httpclient.params.HttpMethodParams;
+import org.jsoup.Connection;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+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;
+import org.yeshi.utils.BigDecimalUtil;
+import org.yeshi.utils.HttpUtil;
+import org.yeshi.utils.NumberUtil;
+import org.yeshi.utils.entity.ProxyIP;
+import org.yeshi.utils.taobao.TbImgUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
+import com.yeshi.fanli.entity.common.ImageInfo;
+import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.fanli.entity.taobao.SearchFilter;
+import com.yeshi.fanli.entity.taobao.TaoBaoCoupon;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoHead;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoHongBaoInfo;
+import com.yeshi.fanli.entity.taobao.TaoBaoLink;
+import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoQuanInfo;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
+import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
+import com.yeshi.common.entity.taobao.TaoBaoShop;
+import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
+import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2;
+import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.goods.TaoBaoLinkService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.common.entity.PageEntity;
+import org.yeshi.utils.MoneyBigDecimalUtil;
+import org.yeshi.utils.TimeUtil;
+import com.yeshi.common.vo.ClientTextStyleVO;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+@Component
+public class TaoBaoUtil {
+
+    @Autowired
+    private HongBaoManageService manageService;
+
+    @Resource
+    private TaoBaoLinkService taoBaoLinkService;
+
+    private static TaoBaoUtil taoBaoUtil;
+
+    @PostConstruct
+    public void init() {
+        taoBaoUtil = this;
+        taoBaoUtil.manageService = this.manageService;
+        taoBaoUtil.taoBaoLinkService = this.taoBaoLinkService;
+    }
+
+    public final static int SORT_PRICE_HIGH_TO_LOW = 3;// 浠锋牸浠庨珮鍒颁綆
+    public final static int SORT_PRICE_LOW_TO_HIGH = 4;// 浠锋牸浠庝綆鍒伴珮
+
+    public static final int SORT_TKRATE_LOW_TO_HIGH = 1;// 娣樺浣i噾姣旂巼浣庡埌楂�
+    public static final int SORT_TKRATE_HIGH_TO_LOW = 2;// 娣樺浣i噾姣旂巼楂樺埌浣�
+
+    public static final int SORT_TOTAL_COMMI_LOW_TO_HIGH = 5;// 鎬绘敮鍑轰剑閲戜綆鍒伴珮
+    public static final int SORT_TOTAL_COMMI_HIGH_TO_LOW = 6;// 鎬绘敮鍑轰剑閲戦珮鍒颁綆
+
+    public static final int SORT_TOTAL_SALES_LOW_TO_HIGH = 10;// 绱鎺ㄥ箍閲忎綆鍒伴珮
+    public static final int SORT_TOTAL_SALES_HIGH_TO_LOW = 11;// 绱鎺ㄥ箍閲忛珮鍒颁綆
+
+    public static final int SORT_SALE_COMMISSION = 7;// 鏈堟敮鍑轰剑閲戜粠楂樺埌浣�
+
+    public final static int SORT_SALE_LOW_TO_HIGH = 8;// 閿�閲忎粠浣庡埌楂�
+
+    public final static int SORT_SALE_HIGH_TO_LOW = 9;// 閿�閲忎粠楂樺埌浣�
+    public final static int SORT_DEFAULT = 0;// 閿�閲忎粠楂樺埌浣�
+
+    public final static int SORT_FILTER_FROM_ALL = 0;// 娣樺疂澶╃尗
+    public final static int SORT_FILTER_FROM_TMALL = 1;// 澶╃尗
+
+    private final static int PAGESIZE = 20;
+
+    public final static String SEARCH_URL = "http://pub.alimama.com/items/search.json";
+    private static final String NZJH_URL = "http://pub.alimama.com/items/channel/nzjh.json";
+    private static final String MUYING_URL = "http://pub.alimama.com/items/channel/muying.json";
+    private static final String QQHD_URL = "http://pub.alimama.com/items/channel/qqhd.json";
+    private static final String IFS_URL = "http://pub.alimama.com/items/channel/ifs.json";
+    private static final String QBB_URL = "http://pub.alimama.com/items/channel/qbb.json";
+    private static final String HCH_URL = "http://pub.alimama.com/items/channel/hch.json";
+    private static final String CDJ_URL = "http://pub.alimama.com/items/channel/cdj.json";
+    private static final String JYJ_URL = "http://pub.alimama.com/items/channel/jyj.json";
+    private static final String KDC_URL = "http://pub.alimama.com/items/channel/kdc.json";
+    private static final String DIY_URL = "http://pub.alimama.com/items/channel/diy.json";
+    private static final String K9_URL = "http://pub.alimama.com/items/channel/9k9.json";
+    private static final String K20_URL = "http://pub.alimama.com/items/channel/20k.json";
+    private static final String TEHUI_URL = "http://pub.alimama.com/items/channel/tehui.json";
+
+    private static final String TB_ITEM_URL = "http://gw.api.taobao.com/router/rest";
+
+    public static final String TB_URL = "http://item.taobao.com/item.htm?id=%s";
+    public static final String TM_PHONE_URL = "https://detail.m.tmall.com/item.htm?id=%s";
+    public static final String TB_H5_URL = "http://h5.m.taobao.com/awp/core/detail.htm?id=%s";
+
+    private static final Map<Integer, String> channelMap = new HashMap<Integer, String>();
+    private static final Map<Integer, String> urlMap = new HashMap<Integer, String>();
+
+    private static List<TaoBaoProvince> taoBaoProvinceList = null;
+
+    static {
+        channelMap.put(0, "");// 鏅��
+        channelMap.put(1, "nzjh");// 濂宠灏栬揣
+        channelMap.put(2, "muying");// 姣嶅┐鐑帹
+        channelMap.put(3, "qqhd");// 楂樹剑娲诲姩
+        channelMap.put(4, "ifs");// ifashion
+        channelMap.put(5, "qbb");// 浜插疂璐�
+        channelMap.put(6, "hch");// 娣樺疂姹囧悆
+        channelMap.put(7, "cdj");// 娼數琛�
+        channelMap.put(8, "jyj");// 鏋佹湁瀹�
+        channelMap.put(9, "kdc");// 閰峰姩鍩�
+        channelMap.put(10, "diy");// 娣樺疂DIY
+        channelMap.put(11, "9k9");// 瓒呭��9鍧�9
+        channelMap.put(12, "20k");// 20鍏冨皝椤�
+        channelMap.put(13, "tehui");// 鐗逛环濂借揣
+
+        urlMap.put(0, SEARCH_URL);
+        urlMap.put(1, NZJH_URL);
+        urlMap.put(2, MUYING_URL);
+        urlMap.put(3, QQHD_URL);
+        urlMap.put(4, IFS_URL);
+        urlMap.put(5, QBB_URL);
+        urlMap.put(6, HCH_URL);
+        urlMap.put(7, CDJ_URL);
+        urlMap.put(8, JYJ_URL);
+        urlMap.put(9, KDC_URL);
+        urlMap.put(10, DIY_URL);
+        urlMap.put(11, K9_URL);
+        urlMap.put(12, K20_URL);
+        urlMap.put(13, TEHUI_URL);
+    }
+
+    public static TaoBaoSearchResult search(SearchFilter filter, boolean proxy, String specialId, String relationId) {
+        if (filter.getKey().startsWith("http://") || filter.getKey().startsWith("https://")) {
+            String[] sts = filter.getKey().split("\\?")[1].split("&");
+            for (String st : sts) {
+                if (st.contains("id=")) {
+                    String id = st.replace("id=", "").trim();
+                    TaoBaoGoodsBrief tb = null;
+                    try {
+                        tb = TaoKeApiUtil.searchGoodsDetail(id);
+                    } catch (TaobaoGoodsDownException e) {
+                        e.printStackTrace();
+                    }
+                    List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
+                    goodsList.add(tb);
+                    TaoBaoSearchResult result = new TaoBaoSearchResult();
+                    result.setTaoBaoGoodsBriefs(goodsList);
+                    result.setNavList(new ArrayList<>());
+                    TaoBaoHead taoBaoHead = new TaoBaoHead();
+                    taoBaoHead.setDocsfound(1);
+                    result.setTaoBaoHead(taoBaoHead);
+                    return result;
+                }
+            }
+            return null;
+        }
+
+        List<Long> cateList = null;
+        if (!StringUtil.isNullOrEmpty(filter.getCateIds())) {
+            cateList = new ArrayList<>();
+            for (String c : filter.getCateIds().split(","))
+                cateList.add(Long.parseLong(c));
+        }
+        return TaoKeApiUtil.searchWuLiaoNew(filter, specialId, relationId);
+    }
+
+    /**
+     * 娣樺疂鑱旂洘缃戦〉鎼滅储鍟嗗搧
+     *
+     * @param filter
+     * @param config -鑱旂洘閰嶇疆
+     * @return
+     */
+    public static TaoBaoSearchResult searchFromAlimamaWeb(SearchFilter filter, TaoBaoUnionConfig config) {
+        Map<String, String> params = new HashMap<String, String>();
+        params.put("q", filter.getKey());
+        params.put("_t", System.currentTimeMillis() + "");
+        params.put("toPage", filter.getPage() + "");
+        params.put("auctionTag", "");
+        params.put("perPageSize", filter.getPageSize() == 0 ? PAGESIZE + "" : filter.getPageSize() + "");
+        params.put("shopTag", filter.getShopTag() + "");
+        params.put("t", System.currentTimeMillis() + "");
+        params.put("_tb_token_", "test");
+        params.put("yxjh", "-1");
+        params.put("queryType", "2");
+        String shopTag = filter.getShopTag();
+        if (shopTag != null) {
+            String[] split = shopTag.split(",");
+            for (String tag : split) {
+                params.put(tag, "1");
+            }
+        }
+
+        if (filter.isTmall()) {
+            params.put("userType", "1");
+        }
+
+        if (filter.isBaoYou()) {
+            params.put("freeShipment", "1");
+        }
+
+        if (filter.getStartPrice() != null) {
+            params.put("startPrice", filter.getStartPrice() + "");
+        }
+        if (filter.getEndPrice() != null) {
+            params.put("endPrice", filter.getEndPrice() + "");
+        }
+        if (!StringUtil.isNullOrEmpty(filter.getCateIds()))
+            params.put("catIds", filter.getCateIds());
+
+        if (filter.getParams() != null && filter.getParams().size() > 0) {
+            Set<String> set = filter.getParams();
+            StringBuffer sb = new StringBuffer();
+            int i = 0;
+            for (String ids : set) {
+                if (i == 0) {
+                    sb.append(ids);
+                } else {
+                    sb.append(";" + ids);
+                }
+                i++;
+            }
+            params.put("pidvid", sb.toString());
+        }
+        if (filter.getSort() > 0) {
+            params.put("sortType", filter.getSort() + "");
+            // params.put("queryType", "0");
+        }
+
+        Map<String, String> headers = new HashMap<>();
+        // headers.put("cookie",
+        // TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount()));
+
+        headers.put("referer", "https://pub.alimama.com/promo/search/index.htm");
+
+        headers.put("User-Agent",
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
+
+        String result = TaoBaoHttpUtil.get(SEARCH_URL, params, headers, true);
+        if (result == null || "".equals(result)) {
+            return null;
+        }
+        result = result.replace("</span>", "").replace("<span class=H>", "");
+        if (result.contains("<!DOCTYPE html>")) {
+            TaoBaoSearchResult presult = new TaoBaoSearchResult();
+            presult.setNavList(new ArrayList<TaoBaoSearchNav>());
+            presult.setTaoBaoGoodsBriefs(new ArrayList<TaoBaoGoodsBrief>());
+            TaoBaoHead taoBaoHead = new TaoBaoHead();
+            taoBaoHead.setDocsfound(0);
+            presult.setTaoBaoHead(taoBaoHead);
+            return presult;
+        }
+        TaoBaoSearchResult presult = parseTaoBao(result);
+        presult.setKey(filter.getKey());
+        return presult;
+    }
+
+    /**
+     * 娣樺疂鑱旂洘缃戦〉鎼滅储鍟嗗搧
+     *
+     * @param filter
+     * @param config -鑱旂洘閰嶇疆
+     * @return
+     */
+    public static TaoBaoSearchResult searchAlimamaWeb(SearchFilter filter, TaoBaoUnionConfig config, Integer typeNum) {
+
+        Map<String, String> params = new HashMap<String, String>();
+
+        if (typeNum != null && !typeNum.equals(0)) {
+            if (channelMap.get(typeNum) != null) {
+                params.put("channel", channelMap.get(typeNum));
+            }
+        }
+
+        params.put("toPage", filter.getPage() + "");
+        params.put("perPageSize", filter.getPageSize() == 0 ? PAGESIZE + "" : filter.getPageSize() + "");
+
+        if (typeNum != null && typeNum == 3) {
+            // 鏌ヨ绫荤洰
+            String catIds = filter.getCateIds();
+
+            if (!StringUtil.isNullOrEmpty(catIds)) {
+                // 楂樹剑鏃舵牴鎹被鐩甶d鏌ヨ
+                params.put("catIds", catIds); // 绫荤洰
+                params.put("level", "1");// 榛樿涓�绾�
+            } else {
+                // 鏌ヨ鏉′欢
+                String key = filter.getKey();
+                if (!StringUtil.isNullOrEmpty(key)) {
+                    params.put("q", filter.getKey());
+                }
+            }
+
+        } else {
+            // 鏌ヨ鏉′欢
+            String key = filter.getKey();
+            if (!StringUtil.isNullOrEmpty(key)) {
+                params.put("q", filter.getKey());
+            }
+        }
+
+        // 鎺掑簭瀛楁 3 浠锋牸楂樺埌浣� 4 浠锋牸浣庡埌楂�
+        // 9 閿�閲忛珮鍒颁綆 1 鏀跺叆姣旂巼楂樺埌浣� 5 鏈堟帹骞块噺楂樺埌浣� 7鏈堟敮鍑轰剑閲戦珮鍒颁綆
+        // 13 娲诲姩寮�濮嬫椂闂寸敱杩戝埌杩� 11 娲诲姩鍓╀綑鏃堕棿闀垮埌鐭� 12 娲诲姩鍓╀綑鏃堕棿鐭埌闀�
+
+        int sort = filter.getSort();
+        if (sort > 0) {
+            params.put("sortType", sort + "");
+        }
+
+        // 鏄惁澶╃尗
+        if (filter.isTmall()) {
+            params.put("userType", "1");
+        }
+
+        // 浣跨敤鍚紭鎯犲埜
+        int quan = filter.getQuan();
+        if (quan == 1) {
+            params.put("shopTag", "dpyhq");
+            params.put("dpyhq", "1");
+        } /*
+         * else { params.put("shopTag", ""); }
+         */
+
+        // 閿�閲�
+        String startBiz30day = filter.getStartBiz30day();
+        if (!StringUtil.isNullOrEmpty(startBiz30day)) {
+            params.put("startBiz30day", startBiz30day);
+        }
+
+        // 浣i噾姣斾緥灏忓��
+        int startTkRate = filter.getStartTkRate();
+        if (startTkRate > 0) {
+            params.put("startTkRate", startTkRate / 100 + "");
+        }
+
+        // 浣i噾姣斾緥澶у��
+        int endTkRate = filter.getEndTkRate();
+        if (endTkRate > 0) {
+            params.put("endTkRate", endTkRate + "");
+        }
+
+        // 璧峰浠锋牸
+        if (filter.getStartPrice() != null) {
+
+            params.put("startPrice", filter.getStartPrice() + "");
+        }
+
+        // 鎴浠锋牸
+        if (filter.getEndPrice() != null) {
+            params.put("endPrice", filter.getEndPrice() + "");
+        }
+
+        if (filter.getParams() != null && filter.getParams().size() > 0) {
+            Set<String> set = filter.getParams();
+            StringBuffer sb = new StringBuffer();
+            int i = 0;
+            for (String ids : set) {
+                if (i == 0) {
+                    sb.append(ids);
+                } else {
+                    sb.append(";" + ids);
+                }
+                i++;
+            }
+            params.put("pidvid", sb.toString());
+        }
+
+        params.put("t", System.currentTimeMillis() + "");
+        params.put("_tb_token_", "e430bae750a11");
+
+        Map<String, String> headers = new HashMap<>();
+
+        headers.put("referer", "https://pub.alimama.com/promo/search/index.htm");
+
+        headers.put("User-Agent",
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
+
+        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
+        headers.put("Cookie", cookie);
+
+        String url = SEARCH_URL;
+
+        if (typeNum != null && !typeNum.equals(0)) {
+            url = urlMap.get(typeNum);
+        }
+
+        String result = TaoBaoHttpUtil.get(url, params, headers, true);
+        if (result == null || "".equals(result)) {
+            return null;
+        }
+
+        result = result.replace("</span>", "").replace("<span class=H>", "");
+        if (result.contains("<!DOCTYPE html>")) {
+            TaoBaoSearchResult presult = new TaoBaoSearchResult();
+
+            presult.setNavList(new ArrayList<TaoBaoSearchNav>());
+            presult.setTaoBaoGoodsBriefs(new ArrayList<TaoBaoGoodsBrief>());
+
+            TaoBaoHead taoBaoHead = new TaoBaoHead();
+            taoBaoHead.setDocsfound(0);
+            presult.setTaoBaoHead(taoBaoHead);
+
+            return presult;
+        }
+        TaoBaoSearchResult presult = parseTaoBao(result);
+        presult.setKey(filter.getKey());
+
+        return presult;
+    }
+
+    public static TaoBaoSearchResult search(SearchFilter filter, String specialId, String relationId) {
+        return search(filter, false, specialId, relationId);
+    }
+
+    public static TaoBaoSearchResult search2(SearchFilter filter, TaoBaoUnionConfig config) {
+
+        if (filter.getKey().startsWith("http://") || filter.getKey().startsWith("https://")) {
+            String[] sts = filter.getKey().split("\\?")[1].split("&");
+            for (String st : sts) {
+                if (st.contains("id=")) {
+                    String id = st.replace("id=", "").trim();
+                    TaoBaoGoodsBrief tb = null;
+                    try {
+                        tb = TaoKeApiUtil.searchGoodsDetail(id);
+                    } catch (TaobaoGoodsDownException e) {
+                        e.printStackTrace();
+                    }
+                    List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
+                    goodsList.add(tb);
+                    TaoBaoSearchResult result = new TaoBaoSearchResult();
+                    result.setTaoBaoGoodsBriefs(goodsList);
+                    result.setNavList(new ArrayList<>());
+                    TaoBaoHead taoBaoHead = new TaoBaoHead();
+                    taoBaoHead.setDocsfound(1);
+                    result.setTaoBaoHead(taoBaoHead);
+                    result.setPageEntity(new PageEntity());
+                    return result;
+                }
+            }
+            return null;
+        }
+
+        List<Long> cateList = null;
+        if (!StringUtil.isNullOrEmpty(filter.getCateIds())) {
+            cateList = new ArrayList<>();
+            for (String c : filter.getCateIds().split(","))
+                cateList.add(Long.parseLong(c));
+        }
+
+        if (1 > 0)
+            return TaoKeApiUtil.searchWuLiaoNew(filter, null, null);
+
+        Map<String, String> params = new HashMap<String, String>();
+        String key = filter.getKey();
+        if (key != null) {
+            params.put("q", filter.getKey());
+        }
+        params.put("_t", System.currentTimeMillis() + "");
+        params.put("toPage", filter.getPage() + "");
+        params.put("perPageSize", PAGESIZE + "");
+        params.put("auctionTag", "");
+        params.put("shopTag", "");
+        params.put("queryType", "2");
+        params.put("t", System.currentTimeMillis() + "");
+        params.put("_tb_token_", "owxj2i1mfTXq");
+        int type = filter.getType();
+        params.put("channel", channelMap.get(type));
+        if (filter.getSort() > 0) {
+            params.put("sortType", filter.getSort() + "");
+            // params.put("queryType", "0");
+        }
+        String result = TaoBaoHttpUtil.tbGet(urlMap.get(type), params, config.getAccount());
+        result = result.replace("</span>", "").replace("<span class=H>", "");
+        TaoBaoSearchResult presult = parseTaoBao(result);
+        presult.setKey(filter.getKey());
+        return presult;
+    }
+
+    /**
+     * 9鍧�9 19鍧�9鐨勫垪琛�
+     *
+     * @param filter
+     * @return
+     */
+    public static TaoBaoSearchResult search3(SearchFilter filter, TaoBaoUnionConfig config) {
+        Map<String, String> params = new HashMap<String, String>();
+        String key = filter.getKey();
+        if (key != null) {
+            params.put("q", filter.getKey());
+        }
+        params.put("_t", System.currentTimeMillis() + "");
+        params.put("toPage", filter.getPage() + "");
+        params.put("perPageSize", PAGESIZE + "");
+        params.put("auctionTag", "");
+        params.put("shopTag", "");
+        params.put("queryType", "2");
+        params.put("t", System.currentTimeMillis() + "");
+        params.put("_tb_token_", "owxj2i1mfTXq");
+        int type = filter.getType();
+        params.put("channel", channelMap.get(type));
+        if (filter.getSort() > 0) {
+            params.put("sortType", filter.getSort() + "");
+            // params.put("queryType", "0");
+        }
+        String result = TaoBaoHttpUtil.tbGet(urlMap.get(type), params, config.getAccount());
+        result = result.replace("</span>", "").replace("<span class=H>", "");
+        TaoBaoSearchResult presult = parseTaoBao(result);
+        presult.setKey(filter.getKey());
+        return presult;
+    }
+
+    public static TaoBaoSearchResult parseTaoBao(String result) {
+        TaoBaoSearchResult resu = new TaoBaoSearchResult();
+        List<TaoBaoGoodsBrief> list = new ArrayList<TaoBaoGoodsBrief>();
+        JSONObject root = null;
+        try {
+            root = JSONObject.fromObject(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+            resu.setTaoBaoGoodsBriefs(list);
+            return resu;
+        }
+        Gson gson = new GsonBuilder().create();
+        if (root.optBoolean("ok")) {
+            JSONArray array = root.optJSONObject("data").optJSONArray("pageList");
+            if (array != null) {
+                for (int i = 0; i < array.size(); i++) {
+                    list.add(gson.fromJson(array.optJSONObject(i).toString(), TaoBaoGoodsBrief.class));
+                }
+            }
+            JSONObject head = root.optJSONObject("data").optJSONObject("head");
+            Type headType = new TypeToken<TaoBaoHead>() {
+            }.getType();
+            TaoBaoHead taoBaoHead = gson.fromJson(head.toString(), headType);
+            resu.setTaoBaoHead(taoBaoHead);
+
+            JSONArray navArray = root.optJSONObject("data").optJSONArray("navigator");
+            Type type = new TypeToken<ArrayList<TaoBaoSearchNav>>() {
+            }.getType();
+            if (navArray != null) {
+                List<TaoBaoSearchNav> navList = gson.fromJson(navArray.toString(), type);
+                for (TaoBaoSearchNav taoBaoSearchNav : navList) {
+                    String tbtype = taoBaoSearchNav.getType();
+                    if (!"category".equalsIgnoreCase(tbtype)) {
+                        taoBaoSearchNav.setSelector(1);
+                    }
+                }
+                resu.setNavList(navList);
+            }
+            JSONObject paginatorObject = root.optJSONObject("data").optJSONObject("paginator");
+            if (paginatorObject != null) {
+                int count = (Integer) paginatorObject.get("items");
+                int totalPage = (Integer) paginatorObject.get("pages");
+                PageEntity pe = new PageEntity();
+                pe.setTotalCount(count);
+                pe.setPageSize(PAGESIZE);
+                pe.setTotalPage(totalPage);
+                resu.setPageEntity(pe);
+            }
+        }
+        for (TaoBaoGoodsBrief taoBaoGoodsBrief : list) {
+            String pictUrl = taoBaoGoodsBrief.getPictUrl();
+            if (!pictUrl.contains("http:") && !pictUrl.contains("https:")) {
+                taoBaoGoodsBrief.setPictUrl("http:" + pictUrl);
+            }
+        }
+        resu.setTaoBaoGoodsBriefs(list);
+
+        PageEntity pageEntity = resu.getPageEntity();
+        if (pageEntity == null) {
+            PageEntity entity = new PageEntity();
+            resu.setPageEntity(entity);
+        }
+
+        return resu;
+    }
+
+    public static List<TaoBaoSearchNav> getBaseNav() {
+        List<TaoBaoSearchNav> list = new ArrayList<TaoBaoSearchNav>();
+
+        // 璁剧疆瀹濊礉绫诲瀷(娣樺疂澶╃尗/澶╃尗)
+        // TaoBaoSearchNav shopType = new TaoBaoSearchNav();
+        // shopType.setLevel(1);
+        // shopType.setId(2);
+        // shopType.setName("瀹濊礉绫诲瀷");
+        // shopType.setType("shoptype");
+        // shopType.setFlag("shoptype");
+        // shopType.setSelector(0);
+        // List<TaoBaoSearchNav> shopTypeChildList = new
+        // ArrayList<TaoBaoSearchNav>();
+        // shopTypeChildList.add(new TaoBaoSearchNav(0, "all", 21, 2, "娣樺疂澶╃尗",
+        // ""));
+        // shopTypeChildList.add(new TaoBaoSearchNav(0, "tmall", 22, 2, "澶╃尗",
+        // ""));
+        // shopType.setSubIds(shopTypeChildList);
+        // list.add(shopType);
+
+        // 鏄惁鏈夊埜
+        // TaoBaoSearchNav quanType = new TaoBaoSearchNav();
+        // quanType.setLevel(1);
+        // quanType.setId(3);
+        // quanType.setName("鏄惁鏈夊埜");
+        // quanType.setType("quantype");
+        // quanType.setFlag("quantype");
+        // quanType.setSelector(0);
+        // List<TaoBaoSearchNav> quanTypeChildList = new
+        // ArrayList<TaoBaoSearchNav>();
+        // quanTypeChildList.add(new TaoBaoSearchNav(0, "quan", 31, 2, "鏈夊埜",
+        // ""));
+        // quanTypeChildList
+        // .add(new TaoBaoSearchNav(0, "noquan", 32, 2, "鏃犲埜", ""));
+        // quanType.setSubIds(quanTypeChildList);
+        // list.add(quanType);
+
+        // 鏄惁鏈夌孩鍖�
+        // TaoBaoSearchNav hongbaoType = new TaoBaoSearchNav();
+        // hongbaoType.setLevel(1);
+        // hongbaoType.setId(4);
+        // hongbaoType.setName("鏄惁鏈夌孩鍖�");
+        // hongbaoType.setType("hongbaotype");
+        // hongbaoType.setFlag("hongbaotype");
+        // hongbaoType.setSelector(0);
+        // List<TaoBaoSearchNav> hongbaoChildList = new
+        // ArrayList<TaoBaoSearchNav>();
+        // hongbaoChildList
+        // .add(new TaoBaoSearchNav(0, "hongbao", 41, 2, "鏈夌孩鍖�", ""));
+        // hongbaoChildList.add(new TaoBaoSearchNav(0, "nohongbao", 42, 2,
+        // "鏃犵孩鍖�",
+        // ""));
+        // hongbaoType.setSubIds(hongbaoChildList);
+        // list.add(hongbaoType);
+
+        // 璁剧疆鍙戣揣鍦�
+        // TaoBaoSearchNav address = new TaoBaoSearchNav();
+        // address.setLevel(1);
+        // address.setId(1);
+        // address.setName("搴楅摵鎵�鍦ㄥ湴");
+        // address.setType("loc");
+        // address.setFlag("loc");
+        // List<TaoBaoSearchNav> addressChildList = new
+        // ArrayList<TaoBaoSearchNav>();
+        //
+        // list.add(address);
+
+        return list;
+    }
+
+    public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, String proportion, String pid) {
+        TaoBaoGoodsBriefExtra tg = new TaoBaoGoodsBriefExtra();
+        tg.setId(tb.getId());
+        tg.setAuctionId(tb.getAuctionId());
+        tg.setBiz30day(tb.getBiz30day());
+        tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
+        tg.setTitle(tb.getTitle());
+        if (!StringUtil.isNullOrEmpty(tb.getPictUrlWhite()))
+            tg.setPictUrl(TbImgUtil.getTBSize320Img(tb.getPictUrlWhite()));
+        else
+            tg.setPictUrl(TbImgUtil.getTBSize320Img(tb.getPictUrl()));
+        tg.setZkPrice(tb.getZkPrice());
+        tg.setAuctionUrl(tb.getAuctionUrl());
+        tg.setReservePrice(tb.getReservePrice());
+        tg.setUserType(tb.getUserType());
+        tg.setShopTitle(tb.getShopTitle());
+        tg.setTkRate(tb.getTkRate());
+        tg.setSellerId(tb.getSellerId());
+        tg.setState(tb.getState()); // 鐘舵�侊細2018-12-03
+        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
+
+            tg.setCoupon(true);// 鏈夊埜
+
+            TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
+            quanInfo.setCouponAmount(tb.getCouponAmount());
+            String couponEffectiveEndTime = tb.getCouponEffectiveEndTime();
+            long endtime = TimeUtil.convertDateToTemp(couponEffectiveEndTime);
+            quanInfo.setCouponEffectiveEndTime(endtime + 1000 * 60 * 60 * 24L + "");
+            quanInfo.setCouponEffectiveStartTime(TimeUtil.convertDateToTemp(tb.getCouponEffectiveStartTime()) + "");
+            quanInfo.setCouponInfo(tb.getCouponInfo());
+            quanInfo.setCouponLeftCount(tb.getCouponLeftCount());
+            quanInfo.setCouponLink(
+                    TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), pid, tb.getAuctionId() + ""));
+            quanInfo.setCouponPrice(MoneyBigDecimalUtil.sub(tg.getZkPrice(), tb.getCouponAmount()));
+            quanInfo.setCouponStartFee(tb.getCouponStartFee());
+            quanInfo.setCouponTotalCount(tb.getCouponTotalCount());
+            tg.setTaoBaoQuanInfo(quanInfo);
+        }
+        TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
+
+        hongBaoInfo.setRate("鏈�楂�40%");
+
+        String hongbao = getGoodsHongBaoInfo(tb, new BigDecimal(proportion), false);
+        if (hongbao.contains("鏈�楂�")) {
+            hongBaoInfo.setType(1);
+            hongBaoInfo.setHongbao(new BigDecimal(0));
+        } else {
+            hongBaoInfo.setRate(hongbao);
+            hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("楼", "")));
+        }
+
+        tg.setBaoyou(true);
+
+        if (tb.getUserType() == 1)
+            tg.setShopType(2);
+        else
+            tg.setShopType(1);
+
+        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1)
+            tg.setShowType(3);
+        else
+            tg.setShowType(2);
+
+        int showType = tg.getShowType();
+        if (showType == 3 || showType == 1) {
+            BigDecimal sub = tg.getZkPrice().subtract(tb.getCouponStartFee());
+            if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
+                BigDecimal quanPrice = MoneyBigDecimalUtil.sub(tg.getZkPrice(), tb.getCouponAmount());
+                tg.setQuanPrice(quanPrice);
+            } else {
+                tg.setQuanPrice(tg.getZkPrice());
+            }
+        }
+
+        tg.setTaoBaoHongBaoInfo(hongBaoInfo);
+
+        tg.setMoneyType(1);
+        tg.setSalesType(1);
+        // 娴嬭瘯浣跨敤
+        // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
+        // if(Constant.IS_TEST)
+        // {
+        // List<ClientTextStyleVO> labels = new ArrayList<>();
+        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#F14242"));
+        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#00FF00"));
+        // tg.setLabels(labels);
+        // }
+        return loadYuShouInfo(tg, tb);
+    }
+
+    private static TaoBaoGoodsBriefExtra loadYuShouInfo(TaoBaoGoodsBriefExtra extra, TaoBaoGoodsBrief goods) {
+        if (goods != null && extra != null) {
+            if (isYUShou(goods)) {// 棰勫敭鍟嗗搧
+                // extra.setZkPrice(new BigDecimal(goods.getPresaleDeposit()));
+                // 棰勫敭
+                if (extra.getLabels() == null)
+                    extra.setLabels(new ArrayList<>());
+                extra.getLabels().add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+            }
+        }
+        return extra;
+    }
+
+    /**
+     * 鏄惁涓洪鍞晢鍝�
+     *
+     * @param goods
+     * @return
+     */
+    public static boolean isYUShou(TaoBaoGoodsBrief goods) {
+        if (!StringUtil.isNullOrEmpty(goods.getPresaleDeposit())
+                && !StringUtil.isNullOrEmpty(goods.getPresaleStartTime())
+                && !StringUtil.isNullOrEmpty(goods.getPresaleEndTime())) {
+            long startTime = Long.parseLong(goods.getPresaleStartTime());
+            long endTime = Long.parseLong(goods.getPresaleEndTime());
+            long now = System.currentTimeMillis();
+            if (now >= startTime && now < endTime) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * 鑾峰彇娣樺疂鎺ㄥ箍閾炬帴
+     *
+     * @param auctionId
+     * @param pid
+     * @return
+     */
+    public static TaoBaoLink getTbLink(String auctionId, String pid, TaoBaoUnionConfig config) {
+        TaoBaoLink tbk = null;
+        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
+        String adzoneid = pid.split("_")[3];
+        String siteId = pid.split("_")[2];
+        Map<String, String> headers = new HashMap<>();
+
+        headers.put("Cookie", cookie);
+        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
+        headers.put("User-Agent",
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
+        headers.put("Cookie", cookie);
+        headers.put("X-Requested-With", "XMLHttpRequest");
+
+        String json = TaoBaoHttpUtil.proxyGet("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid="
+                + auctionId + "&adzoneid=" + adzoneid + "&siteid=" + siteId + "&scenes=1", cookie);
+        System.out.println(json);
+        if (json == null || "".equals(json.trim())) {
+            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
+            return null;
+        }
+
+        JSONObject data;
+        try {
+            data = JSONObject.fromObject(json);
+        } catch (Exception e) {
+            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
+            return null;
+        }
+
+        if (data.optBoolean("ok")) {
+            tbk = new TaoBaoLink();
+            JSONObject dat = data.optJSONObject("data");
+            String couponLink = dat.optString("couponLink");
+            String clickUrl = dat.optString("clickUrl");
+            String taoToken = dat.optString("taoToken");
+            tbk.setCouponLink(couponLink);
+            tbk.setClickUrl(clickUrl);
+            tbk.setTaoToken(taoToken);
+            tbk.setAuctionId(auctionId);
+            return tbk;
+        } else {
+            LogHelper.taoBaoLinkError("鑾峰彇鎺ㄥ箍閾炬帴澶辫触:" + auctionId);
+        }
+        // 濡傛灉json杩斿洖鐨勬槸false锛岃鏄巆ookie澶辨晥
+        TaoBaoOrderUtil.reportCookieInvalid(config.getAccount());
+        return null;
+    }
+
+    /**
+     * 鑾峰彇鎺ㄥ箍鐢ㄧ殑娣樺彛浠�
+     *
+     * @param auctionId
+     * @param pid
+     * @return
+     */
+    public static TaoBaoLink getTbLinkForShare(String auctionId, String pid, TaoBaoUnionConfig config) {
+        TaoBaoLink tbk = null;
+        String cookie = TaoBaoOrderUtil.getTaoBaoCookie(config.getAccount());
+        selfAdzoneCreate(pid, cookie);
+        String adzoneid = pid.split("_")[3];
+        String siteId = pid.split("_")[2];
+        Map<String, String> headers = new HashMap<>();
+
+        headers.put("Cookie", cookie);
+        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
+        headers.put("User-Agent",
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
+        headers.put("Cookie", cookie);
+        headers.put("X-Requested-With", "XMLHttpRequest");
+
+        String json = TaoBaoHttpUtil.proxyGet("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid="
+                + auctionId + "&adzoneid=" + adzoneid + "&siteid=" + siteId + "&scenes=1", cookie);
+        System.out.println(json);
+        LogHelper.test(json);
+        if (json == null || "".equals(json.trim())) {
+            return null;
+        }
+
+        JSONObject data;
+        try {
+            data = JSONObject.fromObject(json);
+        } catch (Exception e) {
+            return null;
+        }
+
+        if (data.optBoolean("ok")) {
+            tbk = new TaoBaoLink();
+            JSONObject dat = data.optJSONObject("data");
+            String couponLink = dat.optString("couponLink");
+            String clickUrl = dat.optString("clickUrl");
+            String taoToken = dat.optString("taoToken");
+            tbk.setCouponLink(couponLink);
+            tbk.setClickUrl(clickUrl);
+            tbk.setTaoToken(taoToken);
+            tbk.setAuctionId(auctionId);
+
+            return tbk;
+        }
+        // 濡傛灉json杩斿洖鐨勬槸false锛岃鏄巆ookie澶辨晥
+        TaoBaoOrderUtil.reportCookieInvalid(config.getAccount());
+        return null;
+    }
+
+    /**
+     * 閫氳繃浼樻儬鍒搁摼鎺ヨ幏鍙栨窐鍙d护
+     *
+     * @param picture
+     * @param title
+     * @param activityId
+     * @param auctionId
+     * @param pid
+     * @return
+     */
+    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,
+                pid, auctionId + "");
+        String tbk = TaoKeApiUtil.getTKToken(picture, title, url);
+        if (StringUtil.isNullOrEmpty(tbk))
+            LogHelper.error("鐢熸垚娣樺彛浠ゅけ璐ワ紙浼樻儬鍒搁摼鎺ワ級:" + auctionId);
+        TaoBaoLink taoBaoLink = new TaoBaoLink();
+        taoBaoLink.setAuctionId(auctionId);
+        taoBaoLink.setClickUrl(url);
+        taoBaoLink.setCouponLink(url);
+        taoBaoLink.setTaoToken(tbk);
+        return taoBaoLink;
+    }
+
+    private static void selfAdzoneCreate(String pid, String cookie) {
+        String[] sts = cookie.split(";");
+        String tbToken = "";
+        for (String st : sts) {
+            if (st.contains("_tb_token_")) {
+                tbToken = st.replace("_tb_token_=", "");
+                break;
+            }
+        }
+        String adzoneid = pid.split("_")[3];
+        String siteId = pid.split("_")[2];
+        String url = "http://pub.alimama.com/common/adzone/selfAdzoneCreate.json";
+        Map<String, String> params = new HashMap<>();
+        params.put("tag", "29");
+        params.put("gcid", "8");
+        params.put("siteid", siteId);
+        params.put("selectact", "sel");
+        params.put("adzoneid", adzoneid);
+        params.put("t", System.currentTimeMillis() + "");
+        params.put("_tb_token_", tbToken);
+
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Cookie", cookie);
+        headers.put("Referer", "http://pub.alimama.com/promo/search/index.htm");
+        headers.put("User-Agent",
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
+        headers.put("Cookie", cookie);
+        headers.put("X-Requested-With", "XMLHttpRequest");
+        String result = TaoBaoHttpUtil.post(url, params, headers);
+        System.out.println(result);
+    }
+
+    public static TaoBaoGoodsBriefExtra getTaoBaoGoodsBriefExtra(TaoBaoGoodsBrief tb, TaoBaoUnionConfig config, SystemEnum system) {
+        TaoBaoGoodsBriefExtra tg = new TaoBaoGoodsBriefExtra();
+        tg.setId(tb.getId());
+        tg.setAuctionId(tb.getAuctionId());
+        tg.setBiz30day(tb.getBiz30day());
+        tg.setSalesCount(TaoBaoUtil.getSaleCount(tb.getBiz30day()));
+        tg.setTitle(tb.getTitle());
+        tg.setPictUrl(tb.getPictUrl());
+        tg.setZkPrice(tb.getZkPrice());
+        tg.setAuctionUrl(tb.getAuctionUrl());
+        tg.setReservePrice(tb.getReservePrice());
+        tg.setUserType(tb.getUserType());
+        tg.setImgList(tb.getImgList());
+
+        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1) {
+            TaoBaoQuanInfo quanInfo = new TaoBaoQuanInfo();
+            quanInfo.setCouponAmount(tb.getCouponAmount());
+            String couponEffectiveEndTime = tb.getCouponEffectiveEndTime();
+            long endtime = TimeUtil.convertDateToTemp(couponEffectiveEndTime);
+            quanInfo.setCouponEffectiveEndTime(endtime + 1000 * 60 * 60 * 24L + "");
+            quanInfo.setCouponEffectiveStartTime(TimeUtil.convertDateToTemp(tb.getCouponEffectiveStartTime()) + "");
+            quanInfo.setCouponInfo(tb.getCouponInfo());
+            quanInfo.setCouponLeftCount(tb.getCouponLeftCount());
+            String pid = config.getDefaultPid();
+            quanInfo.setCouponLink(
+                    TaoBaoCouponUtil.getCoupleUrl(tb.getCouponActivityId(), pid, tb.getAuctionId() + ""));
+            quanInfo.setCouponPrice(tb.getZkPrice().subtract(tb.getCouponAmount()));
+            quanInfo.setCouponStartFee(tb.getCouponStartFee());
+            quanInfo.setCouponTotalCount(tb.getCouponTotalCount());
+            tg.setTaoBaoQuanInfo(quanInfo);
+        }
+
+        BigDecimal proportion = taoBaoUtil.manageService.getFanLiRate(UserLevelEnum.daRen, system);
+        TaoBaoHongBaoInfo hongBaoInfo = new TaoBaoHongBaoInfo();
+        String tkMktStatus = tb.getTkMktStatus();
+        if ("1".equals(tkMktStatus)) {
+            hongBaoInfo.setType(1);
+        }
+
+        hongBaoInfo.setRate("鏈�楂�40%");
+
+        String hongbao = getGoodsHongBaoInfo(tb, proportion, false);
+        if (!hongbao.contains("鏈�楂�"))
+            hongBaoInfo.setHongbao(new BigDecimal(hongbao.replace("楼", "")));
+        else
+            hongBaoInfo.setHongbao(new BigDecimal(0));
+
+        tg.setBaoyou(true);
+
+        if (tb.getUserType() == 1)
+            tg.setShopType(2);
+        else
+            tg.setShopType(1);
+
+        if (tb.getCouponAmount().compareTo(BigDecimal.valueOf(0)) == 1)
+            tg.setShowType(3);
+        else
+            tg.setShowType(2);
+
+        int showType = tg.getShowType();
+        if (showType == 3 || showType == 1) {
+            BigDecimal sub = tg.getZkPrice().subtract(tb.getCouponStartFee());
+            if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
+                BigDecimal quanPrice = tg.getZkPrice().subtract(tb.getCouponAmount());
+                tg.setQuanPrice(quanPrice);
+            } else {
+                tg.setQuanPrice(tg.getZkPrice());
+            }
+        }
+        tg.setTaoBaoHongBaoInfo(hongBaoInfo);
+
+        tg.setMoneyType(1);
+        tg.setSalesType(1);
+        // 娴嬭瘯浣跨敤
+        // tg.setMoneyType(Math.random() > 0.5 ? 1 : 2);
+        // tg.setSalesType(Math.random() > 0.5 ? 1 : 2);
+        // tg.setSalesType(Math.random() > 0.5 ? tg.getSalesType() : 3);
+        // List<ClientTextStyleVO> labels = new ArrayList<>();
+        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#F14242"));
+        // labels.add(new ClientTextStyleVO("鏍囩鍐呭", "#000000"));
+        // tg.setLabels(labels);
+
+        return tg;
+    }
+
+    /**
+     * 鑾峰彇鏈弬涓庢帹骞跨殑娣樺疂鍟嗗搧璇︽儏 @Title: getTaoBaoGoodsBrief @Description: @param
+     * id @return TaoBaoGoodsBrief 鍖呭惈锛堟爣棰樹笌鍥剧墖锛� @throws
+     */
+    public static TaoBaoGoodsBrief getTaoBaoGoodsBriefNotInPub(String id) {
+        TaoBaoGoodsBrief tb = TaoBaoUtil.getTmallGoodsInfo(id + "");
+        return tb;
+    }
+
+    public static List<String> getSuguestSearch(String key) {
+        try {
+            String url = String.format("https://suggest.taobao.com/sug?code=utf-8&q=%s&_=1486720576511",
+                    URLEncoder.encode(key, "UTF-8"));
+            HttpClient client = new HttpClient();
+            GetMethod gm = new GetMethod(url);
+            client.executeMethod(gm);
+            String result = gm.getResponseBodyAsString();
+            JSONObject obj = JSONObject.fromObject(result);
+            if (obj != null) {
+                JSONArray array = obj.optJSONArray("result");
+                List<String> list = new ArrayList<String>();
+                for (int i = 0; i < array.size(); i++) {
+                    list.add(array.optJSONArray(i).optString(0));
+                }
+                return list;
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static List<String> getTbImg(String auctionId) {
+        if (!NumberUtil.isNumeric(auctionId))
+            return new ArrayList<>();
+        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
+        try {
+            taoBaoGoodsBrief = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
+        } catch (TaobaoGoodsDownException e) {
+            e.printStackTrace();
+        }
+
+        List<String> list = new ArrayList<String>();
+        if (taoBaoGoodsBrief == null)
+            return list;
+
+        if (!StringUtil.isNullOrEmpty(taoBaoGoodsBrief.getPictUrl()))
+            list.add(taoBaoGoodsBrief.getPictUrl());
+        if (taoBaoGoodsBrief.getImgList() != null && taoBaoGoodsBrief.getImgList().size() > 0)
+            list.addAll(taoBaoGoodsBrief.getImgList());
+        return list;
+    }
+
+    public static TaoBaoGoodsBrief isAlimama(String auctionId) {
+        if (StringUtil.isNullOrEmpty(auctionId) || !NumberUtil.isNumeric(auctionId))
+            return null;
+        TaoBaoGoodsBrief tb = null;
+        try {
+            tb = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
+        } catch (TaobaoGoodsDownException e) {
+            e.printStackTrace();
+        }
+        return tb;
+    }
+
+    public static List<TaoBaoGoodsBriefExtra> getTaoBaoGoodsBriefExtraList(List<TaoBaoCoupon> list) {
+        List<TaoBaoGoodsBriefExtra> tbxs = new ArrayList<TaoBaoGoodsBriefExtra>();
+        TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null;
+        TaoBaoQuanInfo taobaoQuanInfo = null;
+        TaoBaoHongBaoInfo taobaoHongbaoInfo = null;
+        for (TaoBaoCoupon taoBaoCoupon : list) {
+            taoBaoGoodsBriefExtra = new TaoBaoGoodsBriefExtra();
+            taobaoQuanInfo = new TaoBaoQuanInfo();
+            taobaoQuanInfo.setCouponAmount(taoBaoCoupon.getCouponAmount());
+            taobaoQuanInfo.setCouponInfo(taoBaoCoupon.getCouponinfo());
+            taobaoQuanInfo.setCouponPrice(taoBaoCoupon.getQuanPrice());
+            taobaoQuanInfo.setCouponLink(taoBaoCoupon.getCouponLink());
+            taobaoHongbaoInfo = new TaoBaoHongBaoInfo();
+            taobaoHongbaoInfo.setHongbao(taoBaoCoupon.getHongbao());
+            taobaoHongbaoInfo.setRate("楼" + taoBaoCoupon.getHongbao().toString());
+
+            taoBaoGoodsBriefExtra.setTaoBaoHongBaoInfo(taobaoHongbaoInfo);
+            taoBaoGoodsBriefExtra.setTaoBaoQuanInfo(taobaoQuanInfo);
+
+            taoBaoGoodsBriefExtra.setAuctionId(taoBaoCoupon.getAuctionId());
+            taoBaoGoodsBriefExtra.setAuctionUrl(taoBaoCoupon.getAuctionUrl());
+            taoBaoGoodsBriefExtra.setBaoyou(true);
+            taoBaoGoodsBriefExtra.setBiz30day(taoBaoCoupon.getBiz30day());
+            taoBaoGoodsBriefExtra.setPictUrl(taoBaoCoupon.getPictUrl());
+            taoBaoGoodsBriefExtra.setQuanPrice(taoBaoCoupon.getQuanPrice());
+
+            int shopType = taoBaoCoupon.getShopType();
+            taoBaoGoodsBriefExtra.setShopType(shopType);
+            taoBaoGoodsBriefExtra.setShowType(taoBaoCoupon.getShowType());
+
+            taoBaoGoodsBriefExtra.setTitle(taoBaoCoupon.getTitle());
+            taoBaoGoodsBriefExtra.setReservePrice(taoBaoCoupon.getZkPrice());
+            taoBaoGoodsBriefExtra.setZkPrice(taoBaoCoupon.getZkPrice());
+            taoBaoGoodsBriefExtra.setSellerId(taoBaoCoupon.getSellerId());
+            tbxs.add(taoBaoGoodsBriefExtra);
+        }
+
+        return tbxs;
+    }
+
+    public static TaoBaoGoodsBrief parsePhoneShareUrlByTM(String murl) {
+        if (!murl.contains("http://zmnxbc.com")) { // 鎵嬫満澶╃尗鍒嗕韩
+            return null;
+        }
+        TaoBaoGoodsBrief taobao;
+        try {
+            Connection connect = Jsoup.connect(murl);
+            Document document = connect.get();
+            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
+                    .get(2);
+            String html = element.html();
+            String json = html.substring(html.indexOf("{"), html.lastIndexOf("}") + 1);
+            JSONObject data = JSONObject.fromObject(json);
+            String auctionId = data.optString("bizId");
+            TaoBaoGoodsBrief alimama = isAlimama(auctionId);
+            if (alimama != null) {
+                return alimama;
+            }
+            String price = data.optString("itemPrice", "0");
+            String title = data.optString("content");
+            String url = data.optJSONArray("actionRule").optJSONObject(0).optString("url");
+            Document document2 = Jsoup.connect("http:" + url).get();
+            org.jsoup.nodes.Element element2 = document2.getElementById("s-showcase").getElementsByClass("scroller")
+                    .get(0);
+            Elements elements = element2.getElementsByClass("item");
+            List<String> imgStrs = new ArrayList<String>();
+            for (org.jsoup.nodes.Element e : elements) {
+                org.jsoup.nodes.Element img = e.getElementsByTag("img").get(0);
+                String attr = img.attr("src");
+                if (attr == "") {
+                    attr = img.attr("data-src");
+                }
+                if (!attr.contains("http:")) {
+                    attr = "http:" + attr;
+                }
+                imgStrs.add(attr);
+            }
+            taobao = new TaoBaoGoodsBrief();
+            taobao.setAuctionId(auctionId);
+            taobao.setTitle(title);
+            taobao.setZkPrice(new BigDecimal(price));
+            taobao.setImgList(imgStrs);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return taobao;
+    }
+
+    public static TaoBaoGoodsBrief parsePhoneShareUrlByTB(String burl) {
+        try {
+            Connection connect = Jsoup.connect(burl);
+            Document document = connect.get();
+            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
+                    .get(1);
+            String html = element.toString();
+            int index = html.indexOf("var url = ");
+            int endIndex = html.lastIndexOf("'");
+            html = html.substring(index, endIndex);
+            int index2 = html.indexOf("'");
+            html = html.substring(index2 + 1);
+            int indexId = html.indexOf("id=");
+            String id = "";
+            if (html.contains("a.m.taobao.com")) {
+                indexId = html.indexOf("com/i");
+                html = html.substring(indexId);
+                html = html.substring(5, html.indexOf("."));
+                id = html;
+            } else {
+                String reg = "[?|&]{1}[i]{1}[d]{1}[=]{1}\\d+[&]?";
+                Pattern p = Pattern.compile(reg);
+                Matcher matcher = p.matcher(html);
+                if (matcher.find()) {
+                    id = matcher.group();
+                }
+                id = id.substring(id.indexOf("=") + 1, id.lastIndexOf("&"));
+            }
+            TaoBaoGoodsBrief alimama = isAlimama(id);
+
+            if (alimama != null) {
+                return alimama;
+            }
+            return parsePhoneTmAndTb(id);
+        } catch (Exception e) {
+            LogHelper.error("鏃犳硶瑙f瀽鍒版窐瀹濆晢鍝両D:" + burl);
+            return null;
+        }
+
+    }
+
+    public static TaoBaoGoodsBrief parsePhoneTmAndTb(String auctionId) {
+
+        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
+        try {
+
+            Connection connect = Jsoup.connect(String.format(TM_PHONE_URL, auctionId));
+            Document document = connect.get();
+            Elements elements = document.getElementsByTag("script");
+            if (elements.size() >= 9) {
+                String json = elements.get(8).toString();
+                json = json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1);
+                JSONObject data = JSONObject.fromObject(json);
+                JSONObject model = data.optJSONObject("defaultModel");
+                JSONObject itemPriceResultDO = model.optJSONObject("itemPriceResultDO");
+                JSONObject priceInfo = itemPriceResultDO.optJSONObject("priceInfo");
+                Set keySet = priceInfo.keySet();
+                String key = (String) keySet.toArray()[0];
+                JSONObject goods = priceInfo.optJSONObject(key);
+                String price = "";
+                if (goods.optJSONArray("promotionList") != null) {
+                    price = goods.optJSONArray("promotionList").getJSONObject(0).optString("price");
+                } else {
+                    price = goods.optString("price");
+                }
+                List<String> imgs = new ArrayList<String>();
+                Element showcase = document.getElementById("s-showcase");
+                Elements Eleimgs = showcase.getElementsByTag("img");
+                for (Element Eleimg : Eleimgs) {
+                    String img = Eleimg.attr("src");
+                    if ("".equals(img)) {
+                        img = Eleimg.attr("data-src");
+                    }
+                    if (!img.contains("http")) {
+                        img = "http:" + img;
+                    }
+                    imgs.add(img);
+                }
+                Element stitle = document.getElementById("s-title");
+                String title = stitle.getElementsByTag("h1").get(0).toString().replaceAll("<h1>", "")
+                        .replaceAll("</h1>", "");
+                taoBaoGoodsBrief = new TaoBaoGoodsBrief();
+                taoBaoGoodsBrief.setZkPrice(new BigDecimal(price));
+                taoBaoGoodsBrief.setTitle(title);
+                taoBaoGoodsBrief.setImgList(imgs);
+                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
+                taoBaoGoodsBrief.setAuctionId(auctionId);
+                taoBaoGoodsBrief.setUserType(1);
+            } else {
+                Connection connect2 = Jsoup.connect(String.format(TB_URL, auctionId));
+                Document document2 = connect2.get();
+                Elements elements2 = document2.getElementsByTag("script");
+                String json = elements2.get(0).toString();
+                json = json.substring(json.indexOf("item:"), json.indexOf("seller:"));
+                json = json.substring(json.indexOf("{"), json.lastIndexOf(","));
+                json = json.substring(json.indexOf("auctionImages"), json.lastIndexOf("]") + 1);
+                json = json.substring(json.indexOf("["));
+                JSONArray array = JSONArray.fromObject(json);
+                List<String> imgs = new ArrayList<String>();
+                for (Object str : array) {
+                    String imgStr = String.valueOf(str);
+                    if (!imgStr.contains("http")) {
+                        imgStr = "http:" + imgStr;
+                    }
+                    imgs.add(imgStr);
+                }
+                String turl = "https://detailskip.taobao.com/service/getData/1/p1/item/detail/sib.htm?itemId="
+                        + auctionId
+                        + "&sellerId=0&modules=dynStock,qrcode,viewer,price,duty,xmpPromotion,delivery,upp,activity,fqg,zjys,couponActivity,soldQuantity,contract,tradeContract&callback=onSibRequestSuccess";
+                Map<String, String> params = new HashMap<String, String>();
+                params.put("Referer", "https://item.taobao.com/item.htm?id=" + auctionId);
+                String json2 = TaoBaoHttpUtil.get(turl, params);
+                json2 = json2.substring(json2.indexOf("{"), json2.lastIndexOf("}") + 1);
+                JSONObject data2 = JSONObject.fromObject(json2);
+                String price = data2.optJSONObject("data").optJSONObject("promotion").optJSONObject("promoData")
+                        .optJSONArray("def").getJSONObject(0).optString("price");
+                String title = document2.getElementsByTag("title").get(0).toString();
+                title = title.replaceAll("-娣樺疂缃�", "").replaceAll("<title>", "").replaceAll("</title>", "");
+                taoBaoGoodsBrief = new TaoBaoGoodsBrief();
+                taoBaoGoodsBrief.setTitle(title);
+                taoBaoGoodsBrief.setPictUrl(imgs.get(0));
+                taoBaoGoodsBrief.setImgList(imgs);
+                taoBaoGoodsBrief.setZkPrice(new BigDecimal(price));
+                taoBaoGoodsBrief.setAuctionId(auctionId);
+                taoBaoGoodsBrief.setUserType(0);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        return taoBaoGoodsBrief;
+    }
+
+    public static String getGoodsIdByPhoneShareUrl(String burl) {
+        try {
+            Connection connect = Jsoup.connect(burl);
+            Document document = connect.get();
+            org.jsoup.nodes.Element element = document.getElementsByTag("head").get(0).getElementsByTag("Script")
+                    .get(1);
+            String html = element.toString();
+            int index = html.indexOf("var url = ");
+            int endIndex = html.lastIndexOf("'");
+            html = html.substring(index, endIndex);
+            int index2 = html.indexOf("'");
+            html = html.substring(index2 + 1);
+            int indexId = html.indexOf("id=");
+            String id = "";
+            if (html.contains("a.m.taobao.com")) {
+                indexId = html.indexOf("com/i");
+                html = html.substring(indexId);
+                html = html.substring(5, html.indexOf("."));
+                id = html;
+            } else {
+                String reg = "[?|&]{1}[i]{1}[d]{1}[=]{1}\\d+[&]?";
+                Pattern p = Pattern.compile(reg);
+                Matcher matcher = p.matcher(html);
+                if (matcher.find()) {
+                    id = matcher.group();
+                }
+                id = id.substring(id.indexOf("=") + 1, id.lastIndexOf("&"));
+            }
+            return id;
+        } catch (Exception e) {
+            LogHelper.error("鏃犳硶瑙f瀽鍒版窐瀹濆晢鍝両D:" + burl);
+            return null;
+        }
+    }
+
+    /**
+     * 鑾峰彇鍟嗗搧鐨勭敤鎴峰垎鎴愭瘮渚�
+     *
+     * @param goodsBrief 鍟嗗搧璇︽儏
+     * @param rate       鐢ㄦ埛鍐嶆鍒嗘垚姣斾緥锛�0-100锛�
+     * @return
+     */
+    public static String getGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
+        // if (goodsBrief != null && goodsBrief.getMaterialLibType() != null &&
+        // goodsBrief.getMaterialLibType() == 0)
+        // return "楼0.00";
+        // else
+        return "楼" + getGoodsHongBaoMoney(goodsBrief, rate, share).toString();
+    }
+
+    /**
+     * 鑾峰彇娣樺疂鍟嗗搧璇ヨ幏寰楀灏戜剑閲�
+     *
+     * @param goodsBrief
+     * @param rate
+     * @return
+     */
+    public static BigDecimal getGoodsHongBaoMoney(TaoBaoGoodsBrief goodsBrief, BigDecimal rate, boolean share) {
+        BigDecimal commissionRate = null;
+        if (goodsBrief.getMinTkRate() != null && !share)
+            commissionRate = goodsBrief.getMinTkRate();
+        else
+            commissionRate = goodsBrief.getTkRate();
+
+        BigDecimal money = null;
+        if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo())
+                || goodsBrief.getCouponInfo().trim().equalsIgnoreCase("鏃�")) {
+            money = MoneyBigDecimalUtil.mul(
+                    MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), commissionRate),
+                            new BigDecimal("0.01")),
+                    MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
+        } else// 鏈夊埜
+        {
+            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goodsBrief.getCouponInfo());
+            BigDecimal startFee = list.get(0);
+            BigDecimal couponAccount = list.get(1);
+            if (startFee.compareTo(goodsBrief.getZkPrice()) <= 0
+                    && goodsBrief.getZkPrice().compareTo(couponAccount) > 0) {
+                BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
+                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil
+                                .mul(MoneyBigDecimalUtil.mul(finalPrice, commissionRate), new BigDecimal("0.01")),
+                        MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
+
+            } else {// 涓嶈兘鐢ㄥ埜
+                money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(
+                        MoneyBigDecimalUtil.mul(goodsBrief.getZkPrice(), commissionRate),
+                        new BigDecimal("0.01")), MoneyBigDecimalUtil.div(rate, new BigDecimal(100)));
+            }
+        }
+
+        if (share)
+            money = TaoBaoUtil.getCanShareMoney(new Date(), money);
+
+
+        return BigDecimalUtil.getWithNoZera(money);
+    }
+
+    // }
+
+    // 鑾峰彇鍒哥殑绾㈠寘鏄剧ず
+    public static BigDecimal getCouponHongBaoInfo(TaoBaoCoupon taoBaoCoupon, BigDecimal rate) {
+        // 钀ラ攢璁″垝
+
+        // 璁$畻杩斿埄
+        // 鏃犲埜
+
+        BigDecimal startFee = taoBaoCoupon.getCouponStartFee();
+        BigDecimal couponAccount = taoBaoCoupon.getCouponAmount();
+        if (startFee.compareTo(taoBaoCoupon.getZkPrice()) <= 0
+                && taoBaoCoupon.getZkPrice().compareTo(couponAccount) > 0) {
+            BigDecimal finalPrice = taoBaoCoupon.getZkPrice().subtract(couponAccount);
+            return finalPrice.multiply(new BigDecimal(taoBaoCoupon.getTkRate())).divide(new BigDecimal(10000))
+                    .multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
+        } else {// 涓嶈兘鐢ㄥ埜
+            return taoBaoCoupon.getZkPrice().multiply(new BigDecimal(taoBaoCoupon.getTkRate()))
+                    .divide(new BigDecimal(10000)).multiply(rate).setScale(2, BigDecimal.ROUND_DOWN);
+        }
+    }
+
+    /**
+     * 鑾峰彇鍒嗕韩璧氱殑閲戦
+     *
+     * @param goodsBrief
+     * @param rate
+     * @return
+     */
+
+    public static BigDecimal getShareGoodsHongBaoInfo(TaoBaoGoodsBrief goodsBrief, BigDecimal rate) {
+        return getGoodsHongBaoMoney(goodsBrief, rate, true);
+    }
+
+    /**
+     * 璁$畻鍟嗗搧鍒稿悗浠凤紝娌℃湁鍒稿垯杩斿洖鍘熶环
+     *
+     * @param goodsBrief
+     * @return
+     */
+    public static BigDecimal getCouponPrice(TaoBaoGoodsBrief goodsBrief) {
+
+        if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo()) || "鏃�".equals(goodsBrief.getCouponInfo())) {
+            return goodsBrief.getZkPrice();
+        } else {
+            List<BigDecimal> list = TaoBaoCouponUtil.getCouponInfo(goodsBrief.getCouponInfo());
+            BigDecimal startFee = list.get(0);
+            BigDecimal couponAccount = list.get(1);
+            if (startFee.compareTo(goodsBrief.getZkPrice()) <= 0
+                    && goodsBrief.getZkPrice().compareTo(couponAccount) > 0) {
+                BigDecimal finalPrice = goodsBrief.getZkPrice().subtract(couponAccount);
+                return finalPrice;
+            } else {// 涓嶈兘鐢ㄥ埜
+                return goodsBrief.getZkPrice();
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇鍥炬枃璇︽儏
+     *
+     * @param id
+     */
+    public static List<String> getGoodsTextAndImageDetails(Long id) {
+        if (id == null) {
+            return null;
+        }
+        long startTime = System.currentTimeMillis();
+
+        String url = null;
+        try {
+            url = String.format("http://hws.m.taobao.com/cache/mtop.wdetail.getItemDescx/4.1/?&data=%s&type=jsonp",
+                    URLEncoder.encode("{\"item_num_id\":\"" + id + "\"}", "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        List<String> list = new ArrayList<>();
+        String html = org.yeshi.utils.HttpUtil.get(url);
+        String json = html.substring(9, html.length() - 1);
+
+        try {
+            JSONObject obj = JSONObject.fromObject(json);
+            JSONArray array = obj.getJSONObject("data").optJSONArray("images");
+            for (int i = 0; i < array.size(); i++) {
+                list.add(array.optString(i));
+            }
+            LogHelper.test("鑾峰彇鍟嗗搧鍥炬枃璇︽儏鑰楁椂:" + (System.currentTimeMillis() - startTime));
+        } catch (Exception e) {
+
+        }
+        return list;
+    }
+
+    public static String getSaleCount(int count) {
+        if (count >= 10000) {
+            double sales = count;
+            String salesCountMidea = String.format("%.1f", sales / 10000);
+            return salesCountMidea + "涓�";
+        } else
+            return count + "";
+    }
+
+    public static List<TaoBaoProvince> getTaoBaoProvinceList() {
+        if (taoBaoProvinceList == null) {
+            taoBaoProvinceList = new ArrayList<>();
+            // 瑙f瀽
+            try {
+                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+                DocumentBuilder builder = factory.newDocumentBuilder();
+                org.w3c.dom.Document doc = builder
+                        .parse(TaoBaoUtil.class.getClassLoader().getResourceAsStream("taobao_address.xml"));
+                NodeList nodeList = doc.getElementsByTagName("province");
+                nodeList = nodeList.item(0).getChildNodes();
+                for (int i = 0; i < nodeList.getLength(); i++) {
+                    TaoBaoProvince province = new TaoBaoProvince();
+                    org.w3c.dom.Node node = nodeList.item(i);
+                    if (node.getNodeName().equalsIgnoreCase("topName")) {
+                        NamedNodeMap map = node.getAttributes();
+                        for (int n = 0; n < map.getLength(); n++) {
+                            if (map.item(n).getNodeName().equalsIgnoreCase("id")) {
+                                province.setId(map.item(n).getNodeValue());
+                            } else if (map.item(n).getNodeName().equalsIgnoreCase("name")) {
+                                province.setName(map.item(n).getNodeValue());
+                            }
+                        }
+                        taoBaoProvinceList.add(province);
+                    }
+                }
+
+            } catch (Exception e) {
+
+            }
+        }
+        return taoBaoProvinceList;
+    }
+
+    public static List<ImageInfo> getTBDetailImageWithSize(String auctionId) {
+
+        List<ImageInfo> imgList = new ArrayList<>();
+
+        long startTime = System.currentTimeMillis();
+        JSONObject data = new JSONObject();
+        data.put("id", auctionId + "");
+        String url = "";
+        try {
+            url = String.format(
+                    "https://h5api.m.taobao.com/h5/mtop.taobao.detail.getdesc/6.0/?data=%s&callback=GoodsLogic.showTuwen&_=%s",
+                    URLEncoder.encode(data.toString(), "UTF-8"), System.currentTimeMillis() + "");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        String result = HttpUtil.get(url);
+        result = result.replace("GoodsLogic.showTuwen(", "").replace(")", "");
+        data = JSONObject.fromObject(result);
+        String pcDescContent = data.optJSONObject("data").optString("pcDescContent");
+        System.out.println(pcDescContent);
+        if (!StringUtil.isNullOrEmpty(pcDescContent)) {
+            try {
+                Document doc = Jsoup.parse(pcDescContent);
+                Elements eles = doc.getElementsByTag("img");
+                for (int i = 0; i < eles.size(); i++) {
+                    String imgSrc = eles.get(i).attr("src");
+                    if (imgSrc.endsWith(".jpg")) {
+                        if (!imgSrc.startsWith("http"))
+                            imgSrc = "https:" + imgSrc;
+                        imgList.add(new ImageInfo(imgSrc, 0, 0));
+                    }
+                }
+            } catch (Exception e) {
+            }
+        }
+        System.out.println("璇锋眰璇︽儏鑰楁椂:" + (System.currentTimeMillis() - startTime));
+        return imgList;
+    }
+
+    /**
+     * @param auctionId
+     * @return
+     */
+
+    public static List<ImageInfo> getTBDetailImageWithSizev2(String auctionId, ProxyIP ip) {
+        List<ImageInfo> imgList = new ArrayList<>();
+        try {
+            Map<String, String> headers = new HashMap<>();
+            headers.put("User-Agent",
+                    "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
+            headers.put("Referer", "https://detail.tmall.com/item.htm?id=" + auctionId);
+            String url = String.format("https://hws.m.taobao.com/cache/desc/5.0?id=" + auctionId);
+            String result = HttpUtil.get(url, headers, ip);
+            if (!StringUtil.isNullOrEmpty(result)) {
+                JSONObject data = JSONObject.fromObject(result);
+
+                JSONArray array = data.optJSONObject("wdescContent").optJSONArray("pages");
+                if (array != null) {
+                    String html = "";
+                    for (int i = 0; i < array.size(); i++) {
+                        String itemStr = array.optString(i).replace("<img", "<a").replace("</img>", "<a>");
+                        html += itemStr;
+                    }
+                    Document doc = Jsoup.parse(html);
+                    Elements items = doc.getElementsByTag("a");
+                    for (int i = 0; i < items.size(); i++) {
+                        ImageInfo img = new ImageInfo();
+                        Element item = items.get(i);
+                        if (StringUtil.isNullOrEmpty(item.ownText()))
+                            continue;
+                        if (!StringUtil.isNullOrEmpty(item.attr("size"))) {
+                            img.setWidth(Integer.parseInt(item.attr("size").split("x")[0]));
+                            img.setHeight(Integer.parseInt(item.attr("size").split("x")[1]));
+                        }
+                        if (item.ownText().startsWith("http"))
+                            img.setPicture(item.ownText().trim());
+                        else
+                            img.setPicture("http:" + item.ownText().trim());
+                        if (img != null && img.getPicture() != null && img.getPicture().endsWith(".jpg"))
+                            imgList.add(img);
+                    }
+
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            try {
+                LogHelper.errorDetailInfo(e);
+            } catch (Exception e1) {
+                e1.printStackTrace();
+            }
+        }
+        return imgList;
+    }
+
+    /**
+     * 闃块噷鐧惧窛杞摼鎺ュ彛锛堟殏鏃舵棤娉曚娇鐢級
+     *
+     * @param auctionId
+     * @param appKey
+     * @param adzoneId
+     * @return
+     */
+    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");
+        params.put("appVersion", "1.3.4");
+        params.put("os", "android8.0.0");
+        params.put("taokeAppkey", appKey);
+        params.put("jtype", "tb");
+        params.put("aliapp", "tb");
+        params.put("adzoneid", adzoneId);
+        params.put("url", "https://h5.m.taobao.com/awp/core/detail.htm?id=" + auctionId);
+        params.put("deviceModel", "LND-AL30");
+        params.put("sdkVersion", "0.3.2");
+        params.put("packageName", "com.yeshi.ec.rebate");
+        params.put("cid", "tunion4android@862977040115210_1536222395791");
+
+        try {
+            url += "?data=" + URLEncoder.encode(params.toString(), "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        String result = HttpUtil.get(url);
+        System.out.println(result);
+        return null;
+    }
+
+    /**
+     * 甯歌鍟嗗搧杞负娣樺疂鍟嗗搧瀵硅薄
+     *
+     * @param commonGoods
+     * @return
+     */
+    public static TaoBaoGoodsBrief convert(CommonGoods commonGoods) {
+        TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
+        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());
+        taoBaoGoods.setCouponLeftCount(commonGoods.getCouponLeftCount());
+        taoBaoGoods.setCouponStartFee(commonGoods.getCouponStartPrice());
+        taoBaoGoods.setCouponTotalCount(commonGoods.getCouponTotalCount());
+        taoBaoGoods.setPictUrl(commonGoods.getPicture());
+        taoBaoGoods.setPictUrlWhite(commonGoods.getPictureWhite());
+        taoBaoGoods.setSellerId(commonGoods.getSellerId());
+        taoBaoGoods.setShopTitle(commonGoods.getSellerName());
+        taoBaoGoods.setTitle(commonGoods.getTitle());
+        taoBaoGoods.setUserType(commonGoods.getShopType() - 1);
+        taoBaoGoods.setZkPrice(commonGoods.getPrice());
+        taoBaoGoods.setTkRate(commonGoods.getRate());
+        taoBaoGoods.setTkCommFee(new BigDecimal("0"));
+        taoBaoGoods.setState(commonGoods.getState());
+        taoBaoGoods.setCreatetime(commonGoods.getCreateTime());
+        return taoBaoGoods;
+    }
+
+    public static TaoBaoGoodsBrief convert(DaTaoKeDetailV2 detail) {
+        TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
+        taoBaoGoods.setAuctionId(detail.getGoodsId());
+        taoBaoGoods.setBiz30day(detail.getMonthSales());
+        // 鍒哥浉鍏宠浆鎹�
+        taoBaoGoods.setCouponAmount(detail.getCouponPrice());
+        taoBaoGoods.setCouponInfo(String.format("婊�%s鍏冨噺%s鍏�", detail.getOriginalPrice(),
+                MoneyBigDecimalUtil.getWithNoZera(detail.getCouponPrice())));
+        if (detail.getCouponTotalNum() != null && detail.getCouponReceiveNum() != null)
+            taoBaoGoods.setCouponLeftCount(detail.getCouponTotalNum() - detail.getCouponReceiveNum());
+        else
+            taoBaoGoods.setCouponLeftCount(0);
+        taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
+        try {
+            taoBaoGoods.setCouponStartFee(detail.getOriginalPrice());
+        } catch (Exception e) {
+        }
+
+        taoBaoGoods.setCouponTotalCount(detail.getCouponTotalNum());
+        taoBaoGoods.setCouponLink(detail.getCouponLink());
+        taoBaoGoods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(
+                TimeUtil.convertToTimeTemp(detail.getCouponStartTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
+        taoBaoGoods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(
+                TimeUtil.convertToTimeTemp(detail.getCouponEndTime(), "yyyy-MM-dd HH:mm:ss"), "yyyy-MM-dd"));
+
+        taoBaoGoods.setPictUrl(detail.getMainPic());
+        taoBaoGoods.setPictUrlWhite(detail.getMainPic());
+        if (taoBaoGoods.getPictUrl() != null && !taoBaoGoods.getPictUrl().startsWith("http"))
+            taoBaoGoods.setPictUrl("https:" + taoBaoGoods.getPictUrl());
+
+        if (taoBaoGoods.getPictUrlWhite() != null && !taoBaoGoods.getPictUrlWhite().startsWith("http"))
+            taoBaoGoods.setPictUrlWhite("https:" + taoBaoGoods.getPictUrlWhite());
+
+
+        String imgs = detail.getImgs();
+        if (!StringUtil.isNullOrEmpty(imgs)) {
+            String[] array = imgs.split(",");
+            if (array != null && array.length > 0) {
+                List<String> imgList = new ArrayList<>();
+                for (int i = 0; i < array.length; i++) {
+                    imgList.add(array[i]);
+                }
+                taoBaoGoods.setImgList(imgList);
+            }
+        }
+
+
+        taoBaoGoods.setSellerId(detail.getSellerId());
+        taoBaoGoods.setShopTitle(detail.getShopName());
+        taoBaoGoods.setTitle(detail.getDtitle());
+        taoBaoGoods.setUserType(detail.getShopType());
+        taoBaoGoods.setZkPrice(detail.getOriginalPrice());
+        taoBaoGoods.setTkRate(detail.getCommissionRate());
+        taoBaoGoods.setTkCommFee(new BigDecimal("0"));
+        taoBaoGoods.setState(0);
+        return taoBaoGoods;
+    }
+
+    /**
+     * 鑾峰彇娣樺疂鑱旂洘鐨勬巿鏉冮摼鎺�
+     *
+     * @param appKey      -搴旂敤Key
+     * @param callBackUrl -鍥炶皟閾炬帴
+     * @param uid-鐢ㄦ埛ID
+     * @return
+     */
+    public static String getTaoBaoUnionAuthUrl(String appKey, String callBackUrl, Long uid, String source) {
+        if (uid == null)
+            return null;
+        long timestamp = System.currentTimeMillis();
+        JSONObject json = new JSONObject();
+        json.put("u", uid);
+        json.put("t", timestamp);
+        json.put("s", source);
+        String url = null;
+        try {
+            url = String.format(
+                    "https://oauth.taobao.com/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s&view=wap",
+                    appKey, callBackUrl,
+                    URLEncoder.encode(AESUtil.encrypt(json.toString(), Constant.UIDAESKEY), "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return url;
+    }
+
+    /**
+     * 鑾峰彇娣樺疂鐨勫晢鍝佽鎯�
+     *
+     * @param actionId
+     * @return
+     */
+    public static TaoBaoGoodsBrief getSimpleGoodsBrief(String actionId) {
+        JSONObject data = new JSONObject();
+        data.put("itemNumId", actionId + "");
+
+        String url = "";
+        try {
+            url = String.format(
+                    "http://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s&qq-pf-to=pcqq.group",
+                    URLEncoder.encode(data.toString(), "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        String result = null;
+        try {
+            Connection.Response doc = Jsoup.connect(url).ignoreContentType(true).timeout(1000 * 10)
+                    .userAgent(
+                            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362")
+                    .header("Accept", "text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8")
+                    .header("Accept-Language", "zh-CN").header("Host", "acs.m.taobao.com")
+                    .header("Upgrade-Insecure-Requests", "1")
+                    .header("Cookie",
+                            "_cc_=VFC%2FuZ9ajQ%3D%3D; isg=BLu7TvdFYk89dV4DMXO7XNRGU58lEM8SDjV-ja14l7rRDNvuNeBfYtlOJmznNycK; thw=cn; miid=1490566681358073134; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; cna=ZW8rFCpNP1gCAWpXAiKqMzqi; tracknick=tb23001560; l=cBxbffilq1UJdAFCBOCanurza77OSdAYYuPzaNbMi_5NE6T1BR7Ok6G1vF96VsWdOW8B4NSiTkp9-etkZ3Znq9SpXUJ1.; tg=0; _w_app_lg=19; WAPFDFDTGFG=%2B4cMKKP%2B8PI%2BtNYpkiAuTPLkiJB1kcwi")
+                    .execute();
+            result = doc.body();
+        } catch (Exception e1) {
+            e1.printStackTrace();
+        }
+
+        JSONObject resultOBJ = JSONObject.fromObject(result);
+        if (resultOBJ.optJSONObject("data") != null) {
+            data = resultOBJ.optJSONObject("data");
+            if (data != null) {
+                JSONObject item = data.optJSONObject("item");
+                if (item != null) {
+                    JSONObject seller = data.optJSONObject("seller");
+                    TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
+                    goods.setTitle(item.optString("title"));
+                    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);
+                        goods.setPictUrl(picture.startsWith("http") ? picture : "https:" + picture);
+                    }
+                    if (seller != null) {
+                        goods.setSellerId(seller.optLong("shopId"));
+                        String shopType = seller.optString("shopType");
+                        if ("B".equalsIgnoreCase(shopType)) {
+                            goods.setUserType(1);
+                        } else
+                            goods.setUserType(0);
+                        goods.setShopTitle(seller.optString("shopName"));
+                    }
+                    return goods;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鏍规嵁鍟嗗搧ID鑾峰彇搴楅摵璇︽儏
+     *
+     * @param auctionId
+     * @return
+     */
+    public static TaoBaoShop getTaoBaoShopDetailByAuctionId(String auctionId) {
+        JSONObject data = new JSONObject();
+        data.put("itemNumId", auctionId + "");
+
+        String url = "";
+        try {
+            url = String.format("https://acs.m.taobao.com/h5/mtop.taobao.detail.getdetail/6.0/?data=%s",
+                    URLEncoder.encode(data.toString(), "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        String result = HttpUtil.get(url);
+
+        TaoBaoShop shop = new TaoBaoShop();
+
+        try {
+            JSONObject resultJson = JSONObject.fromObject(result);
+            JSONObject dataJson = resultJson.optJSONObject("data");
+            JSONObject sellerJson = dataJson.optJSONObject("seller");
+
+            shop.setGoodRatePercentage(new BigDecimal(sellerJson.optString("goodRatePercentage").replace("%", "")));
+
+            LogHelper.test("鍗栧淇℃伅:" + result);
+            shop.setId(sellerJson.optLong("userId"));
+            JSONArray array = sellerJson.optJSONArray("evaluates");
+            for (int i = 0; i < array.size(); i++) {
+                JSONObject item = array.optJSONObject(i);
+                if ("瀹濊礉鎻忚堪".equalsIgnoreCase(item.optString("title").trim())) {
+                    shop.setScoreGoods(new BigDecimal(item.optString("score").trim()));
+                    shop.setScoreGoodsD(new BigDecimal(item.optString("level").trim()));
+                } else if ("鍗栧鏈嶅姟".equalsIgnoreCase(item.optString("title").trim())) {
+                    shop.setScoreSeller(new BigDecimal(item.optString("score").trim()));
+                    shop.setScoreSellerD(new BigDecimal(item.optString("level").trim()));
+                } else if ("鐗╂祦鏈嶅姟".equalsIgnoreCase(item.optString("title").trim())) {
+                    shop.setScoreLogistics(new BigDecimal(item.optString("score").trim()));
+                    shop.setScoreLogisticsD(new BigDecimal(item.optString("level").trim()));
+                }
+            }
+
+            shop.setSellerNick(sellerJson.optString("sellerNick"));
+            shop.setShopIcon("https:" + sellerJson.optString("shopIcon"));
+            shop.setShopId(sellerJson.optLong("shopId"));
+            shop.setShopName(sellerJson.optString("shopName"));
+            if ("B".equalsIgnoreCase(sellerJson.optString("sellerType")))
+                shop.setUserType(1);
+            else
+                shop.setUserType(0);
+
+            shop.setShopLink(TaoBaoUtil.getShopLink(shop.getId()));
+        } catch (Exception e) {
+            // if (1 > 0)
+            // return null;
+            try {
+                TaoBaoGoodsBrief goods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
+                shop.setId(goods.getSellerId());
+                shop.setShopName(goods.getShopTitle());
+                shop.setUserType(goods.getUserType());
+            } catch (Exception e1) {
+                shop.setId(1L);
+                shop.setShopName("");
+                shop.setUserType(0);
+            }
+
+            shop.setGoodRatePercentage(new BigDecimal(100));
+            shop.setScoreGoods(new BigDecimal("4.9"));
+            shop.setScoreGoodsD(new BigDecimal("0"));
+            shop.setScoreSeller(new BigDecimal("4.9"));
+            shop.setScoreSellerD(new BigDecimal("0"));
+            shop.setScoreLogistics(new BigDecimal("4.9"));
+            shop.setScoreLogisticsD(new BigDecimal("0"));
+            shop.setSellerNick("");
+            shop.setShopIcon("https:");
+            shop.setShopLink(TaoBaoUtil.getShopLink(shop.getId()));
+        }
+
+        return shop;
+    }
+
+    /**
+     * 鏍规嵁鍗栧id鑾峰彇搴楅摵閾炬帴
+     *
+     * @param sellerId
+     * @return
+     */
+    public static String getShopLink(Long sellerId) {
+        return "http://store.taobao.com/shop/view_shop.htm?user_number_id=" + sellerId;
+    }
+
+    /**
+     * 鏄惁鍙互鍔犲叆娣樼ぜ閲戠殑棰勯�夊晢鍝佸簱
+     *
+     * @param goods
+     * @return
+     */
+    public static boolean canAddToTLJBuyGoods(TaoBaoGoodsBrief goods) {
+        BigDecimal tljMoney = getShareGoodsHongBaoInfo(goods, TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
+        // 涓嶈兘灏忎簬1鍧�
+        if (tljMoney.compareTo(new BigDecimal(1)) < 0 || tljMoney.compareTo(new BigDecimal(10)) > 0)
+            return false;
+
+        // 鍒稿悗浠蜂笉鑳藉ぇ浜�150
+        if (getCouponPrice(goods).compareTo(new BigDecimal(150)) > 0)
+            return false;
+
+        return true;
+    }
+
+    /**
+     * 鏌ヨ澶╃尗鍟嗗搧鍥剧墖銆佹爣棰�
+     *
+     * @param auctionId
+     * @return
+     */
+    public static TaoBaoGoodsBrief getTmallGoodsInfo(String auctionId) {
+        TaoBaoGoodsBrief taoBaoGoodsBrief = null;
+        try {
+            Connection connect = Jsoup.connect(String.format(TM_PHONE_URL, auctionId));
+            Document document = connect.get();
+            Elements elements = document.getElementsByTag("script");
+            if (elements.size() >= 0) {
+                for (int i = 0; i < elements.size(); i++) {
+                    String content = elements.get(i).toString();
+                    if (content.contains("var _DATA_Detail")) {
+                        content = content.replace("<script>", "");
+                        content = content.replace("</script>", "");
+
+                        if (content.contains("videoDetail")) {
+                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
+                        } else {
+                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
+                        }
+
+                        ScriptEngineManager manager = new ScriptEngineManager();
+                        ScriptEngine engine = manager.getEngineByName("javascript");
+                        engine.eval(content);
+
+                        if (engine instanceof Invocable) {
+                            Invocable in = (Invocable) engine;
+                            JSONObject json = JSONObject.fromObject(in.invokeFunction("getData"));
+                            Object title = json.get("title");
+                            Object pictUrl = json.get("pictUrl");
+                            taoBaoGoodsBrief = new TaoBaoGoodsBrief();
+                            taoBaoGoodsBrief.setTitle(title.toString());
+                            taoBaoGoodsBrief.setPictUrl(pictUrl.toString());
+                            if (!pictUrl.toString().startsWith("http")) {
+                                taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize220Img("http:" + pictUrl.toString()));
+                            }
+                        }
+
+                        break;
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return taoBaoGoodsBrief;
+    }
+
+    /**
+     * 鎶栭煶杩斿埄local 鑾峰彇鐪熷疄娣樺疂閾炬帴
+     *
+     * @param url https://s.click.taobao.com/t?e=m%3D2%26s%
+     *            3DT9DFpHQCT7Rw4vFB6t2Z2ueEDrYVVa64XoO8tOebS+dRAdhuF14FMR8
+     * @return
+     */
+    public static String getRealUrl(String url) {
+        if (StringUtil.isNullOrEmpty(url))
+            return null;
+
+        try {
+            HttpClient client = new HttpClient(new MultiThreadedHttpConnectionManager());
+            client.getHttpConnectionManager().getParams().setConnectionTimeout(10000);
+            client.getParams().setParameter(HttpMethodParams.USER_AGENT,
+                    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"); // 璁╂湇鍔″櫒璁や负鏄疘E
+            GetMethod get = new GetMethod(url);
+            get.setFollowRedirects(false); // 绂佹鑷姩閲嶅畾鍚�
+            int iGetResultCode = client.executeMethod(get);
+            String location = get.getResponseHeader("location").getValue(); // 鎵撳嵃鍦板潃
+            GetMethod get2 = new GetMethod(URLDecoder.decode(location.split("tu=")[1]));
+            get2.addRequestHeader("Referer", location);
+            get2.setFollowRedirects(false); // 绂佹鑷姩閲嶅畾鍚�
+            int iGetResultCode2 = client.executeMethod(get2);
+            return get2.getResponseHeader("location").getValue(); // 鐪熷疄鍦板潃
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 娣樺彛浠よ繃婊�
+     *
+     * @param token
+     * @return
+     */
+    public static String filterTaoToken(String token) {
+        if (StringUtil.isNullOrEmpty(token))
+            return token;
+        if (token.contains("锟�") || token.contains("鈧�")) {
+            String newToken = "";
+            for (int i = 0; i < token.length(); i++) {
+                if (token.charAt(i) == '锟�' || token.charAt(i) == '鈧�') {
+                    if (!newToken.contains("("))
+                        newToken += "(";
+                    else
+                        newToken += ")";
+                } else
+                    newToken += token.charAt(i) + "";
+            }
+            return newToken;
+        }
+        return token;
+    }
+
+    /**
+     * 鎻愬彇鑷湁鏍煎紡鐨勬窐鍙d护
+     *
+     * @param str
+     * @return
+     */
+    public static String parseSystemTaoToken(String str) {
+        String pattern = "(\\({1}[A-Za-z0-9]+\\){1})";
+        Pattern r = Pattern.compile(pattern);
+        Matcher m = r.matcher(str);
+        while (m.find()) {
+            String group = m.group(0);
+            if (!StringUtil.isNullOrEmpty(group) && group.length() >= 10)
+                return group;
+        }
+        return null;
+    }
+
+    public static boolean isSpecialGoods(Integer materialLibType) {
+        if (materialLibType != null && materialLibType == 1)
+            return true;
+        else
+            return false;
+    }
+
+    private final static String[] taoTokenSymbols = new String[]{"鈧�-鈧�", "楼-楼", "锟�-锟�", "鈧�-鈧�", "\\$-\\$", "鈧�-鈧�", "垄-垄",
+            "鈧�-鈧�"};
+
+    /**
+     * 浠庢枃鏈腑鎻愬彇娣樺彛浠� @Title: getTokenListFromText @Description: @param str @return
+     * List<String> 杩斿洖绫诲瀷 @throws
+     */
+    public static List<String> getTokenListFromText(String str) {
+        String[] marks = taoTokenSymbols;
+        List<String> list = new ArrayList<>();
+        for (String m : marks) {
+            for (String m1 : marks) {
+                list.add(m.split("-")[0] + "-" + m1.split("-")[1]);
+            }
+        }
+
+        return getTokenListFromText(str, list);
+    }
+
+    /**
+     * 浠庢枃鏈腑鎻愬彇娣樺彛浠�(鎷彿鐨勫彛浠や篃绠�)
+     *
+     * @param str
+     * @return
+     */
+    public static List<String> getTokenListFromTextWithKuoHao(String str) {
+        String[] marks = taoTokenSymbols;
+        List<String> list = new ArrayList<>();
+        for (String m : marks) {
+            for (String m1 : marks) {
+                list.add(m.split("-")[0] + "-" + m1.split("-")[1]);
+            }
+        }
+
+        list.add("\\(-\\)");
+        list.add("锛�-锛�");
+        return getTokenListFromText(str, list);
+    }
+
+    public static List<String> getTokenListFromText(String str, List<String> markList) {
+        List<String> expressList = new ArrayList<>();
+        for (String st : markList) {
+            expressList.add(String.format("(%s{1}[A-Za-z0-9]{11,13}+%s{1})", st.split("-")[0], st.split("-")[1]));
+        }
+        String pattern = StringUtil.concat(expressList, "|");
+        Pattern r = Pattern.compile(pattern);
+        Matcher m = r.matcher(str);
+        List<String> urlList = new ArrayList<>();
+        while (m.find()) {
+            urlList.add(m.group());
+        }
+        return urlList;
+    }
+
+    /**
+     * 鑾峰彇鑳藉鍒嗙殑閽�
+     *
+     * @param estimate
+     * @return BigDecimal 杩斿洖绫诲瀷
+     * @throws
+     * @Title: getCanShareMoney
+     * @Description:
+     */
+    public static BigDecimal getCanShareMoney(Date createTime, BigDecimal estimate) {
+        if (estimate == null)
+            return null;
+        if (createTime.getTime() < TimeUtil.convertToTimeTemp("2020-06-01 12:30:00", "yyyy-MM-dd HH:mm:ss")) {
+            return estimate;
+        }
+        BigDecimal rate = new BigDecimal("0.9101");
+        return MoneyBigDecimalUtil.mul(estimate, rate);
+    }
+
+    /**
+     * 鎷兼帴娓犻亾ID
+     *
+     * @param url
+     * @param relationId
+     * @return
+     */
+    public static String concatRelationId(String url, String relationId) {
+        if (StringUtil.isNullOrEmpty(url)) {
+            return url;
+        }
+        if (StringUtil.isNullOrEmpty(relationId))
+            return url;
+        if (!url.contains("&relationId="))
+            if(url.contains("?")) {
+                return url + "&relationId=" + relationId;
+            }else{
+                return url + "?relationId=" + relationId;
+            }
+        else
+            return url;
+    }
+
+
+    //浠庡埜閾炬帴鑾峰彇鍒窱D
+
+    /**
+     * 浠庡埜閾炬帴涓幏鍙栧埜ID
+     *
+     * @param couponLink
+     * @return
+     */
+    public static String getActivityIdFromCouponLink(String couponLink) {
+        Map<String, String> params = HttpUtil.getPramsFromUrl(couponLink);
+        if (params != null && params.containsKey("activityId"))
+            return params.get("activityId");
+        return null;
+    }
+
+
+    /**
+     * 鑾峰彇娣樺疂鎺堟潈閾炬帴
+     *
+     * @param uid
+     * @param source
+     * @return
+     */
+    public static String getTaoBaoAuthLink(Long uid, String source) {
+        return TaoBaoUtil.getTaoBaoUnionAuthUrl(TaoBaoConstant.TAOBAO_AUTH_APPKEY,
+                "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")) { // 鎵嬫満绔ぉ鐚獳PP鍒嗕韩
+            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;
+
+    }
+
+
+    /**
+     * 鏄惁鏈夋柊鐗堟窐鍙d护
+     *
+     * @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 鏄惁涓烘柊鐨勫晢鍝両D
+     * @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("銆愭窐瀹濄�慼ttps://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);
+        }
+    }
+
+}

--
Gitblit v1.8.0