admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -21,10 +21,12 @@
import com.yeshi.goods.facade.dto.taobao.TaoBaoShopInfoDTO;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.goods.facade.entity.taobao.TaoBaoHead;
import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.MoneyBigDecimalUtil;
import org.yeshi.utils.NumberUtil;
import org.yeshi.utils.TimeUtil;
import org.yeshi.utils.taobao.TbImgUtil;
@@ -34,88 +36,17 @@
//淘宝客API接口
public class TaoKeApiUtil {
    // 解析券的内容
    private static TaoBaoSearchResult parseCoupleContent(String content) {
        TaoBaoSearchResult result = new TaoBaoSearchResult();
        JSONObject root = JSONObject.fromObject(content);
        root = root.optJSONObject("tbk_dg_item_coupon_get_response");
        if (root.optJSONObject("results") == null)
            return null;
        JSONArray array = root.optJSONObject("results").optJSONArray("tbk_coupon");
        if (array != null) {
            List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
            for (int i = 0; i < array.size(); i++) {
                JSONObject item = array.optJSONObject(i);
                TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
                goods.setPictUrl(item.optString("pict_url"));
                goods.setAuctionId(item.optLong("num_iid"));
                goods.setAuctionUrl(item.optString("item_url"));
                goods.setBiz30day(item.optInt("volume"));
                goods.setCouponInfo(item.optString("coupon_info"));
                List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
                goods.setCouponAmount(quanInfo.get(1));
                goods.setCouponEffectiveEndTime(item.optString("coupon_end_time"));
                goods.setCouponEffectiveStartTime(item.optString("coupon_start_time"));
                goods.setCouponStartFee(quanInfo.get(0));
                goods.setCouponLeftCount(item.optInt("coupon_remain_count"));
                goods.setCouponLink(item.optString("coupon_click_url"));
                goods.setCouponTotalCount(item.optInt("coupon_total_count"));
                goods.setDayLeft(-1);
                if (item.optJSONObject("small_images") != null) {
                    JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
                    if (imgArray != null) {
                        List<String> imgList = new ArrayList<>();
                        for (int n = 0; n < imgArray.size(); n++) {
                            imgList.add(imgArray.optString(n));
                        }
                        goods.setImgList(imgList);
                    }
                }
                goods.setSellerId(item.optLong("seller_id"));
                goods.setShopTitle(item.optString("shop_title"));
                goods.setTitle(item.optString("title"));
                goods.setTkRate(new BigDecimal(item.optString("commission_rate")));
                goods.setTotalNum(1000);
                goods.setUserType(item.optInt("user_type"));
                goods.setUserTypeName("");
                goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
                if (goods.getZkPrice().compareTo(goods.getCouponStartFee()) >= 0
                        && goods.getZkPrice().compareTo(goods.getCouponAmount()) > 0) {
                    BigDecimal finalPrice = goods.getZkPrice().subtract(goods.getCouponAmount());
                    goods.setTkCommFee(finalPrice.multiply(goods.getTkRate()).divide(new BigDecimal(100)));
                } else
                    goods.setTkCommFee(new BigDecimal(0));
                goodsList.add(goods);
            }
            result.setTaoBaoGoodsBriefs(goodsList);
            int totalCount = 1000;// root.optInt("total_results");
            PageEntity pe = new PageEntity(0, 0, totalCount);
            result.setPageEntity(pe);
        }
        result.setNavList(new ArrayList<>());
        TaoBaoHead taoBaoHead = new TaoBaoHead();
        taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
        result.setTaoBaoHead(taoBaoHead);
        return result;
    }
    /**
     * 获取商品详情,简版
     *
     * @param id -商品AuctionId
     * @return
     */
    public static TaoBaoGoodsBrief getSimpleGoodsInfo(Long id) throws TaobaoGoodsDownException {
    public static TaoBaoGoodsBrief getSimpleGoodsInfo(String id) throws TaobaoGoodsDownException {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.item.info.get");
        map.put("num_iids", id + "");
        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
        System.out.println(resultStr);
@@ -126,22 +57,69 @@
            throw new TaobaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "商品下架");
        }
        //TODO 修改临时接口 tbk_item_info_get_response
        if (data.optJSONObject("tbk_item_info_get_response") == null)
            return null;
        JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
                .optJSONArray("n_tbk_item");
        if (array != null && array.size() > 0) {
            JSONObject item = array.optJSONObject(0);
            return parseSimpleGoodsInfo(item);
            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
            if (goods != null && !NumberUtil.isNumeric(id)) {
                goods.setAuctionId(id);
            }
            return goods;
        }
        return null;
    }
    // 获取商品详情自购
    public static TaoBaoGoodsBrief getSimpleGoodsInfoForOwnBuy(String id) throws TaobaoGoodsDownException {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.item.info.get");
        map.put("num_iids", id + "");
        String resultStr = null;
        if (!NumberUtil.isNumeric(id)) {
            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
        } else {
            map.put("biz_scene_id", "2");
            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, TaoBaoConstant.getSpecialAuthAppInfo(TaoBaoConstant.TAOBAO_PID_DEFAULT));
        }
        System.out.println(resultStr);
        JSONObject data = JSONObject.fromObject(resultStr);
        // 商品下架
        if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 15
                && data.optJSONObject("error_response").optInt("sub_code") == 50001) {
            throw new TaobaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "商品下架");
        }
        //TODO 修改临时接口 tbk_item_info_get_response
        if (data.optJSONObject("tbk_item_info_get_response") == null)
            return null;
        JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
                .optJSONArray("n_tbk_item");
        if (array != null && array.size() > 0) {
            JSONObject item = array.optJSONObject(0);
            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
            if (goods != null && !NumberUtil.isNumeric(id)) {
                goods.setAuctionId(id);
            }
            return goods;
        }
        return null;
    }
    private static TaoBaoGoodsBrief parseSimpleGoodsInfo(JSONObject item) {
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
        goods.setAuctionId(item.optLong("num_iid"));
        goods.setAuctionId(item.optString("num_iid"));
        goods.setAuctionUrl(item.optString("item_url"));
        goods.setBiz30day(item.optInt("volume"));
        if (item.containsKey("annual_vol")) {
            goods.setBiz30day(item.optInt("annual_vol") / 12);
        } else {
            goods.setBiz30day(item.optInt("volume"));
        }
        if (item.optJSONObject("small_images") != null) {
            JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
            if (imgArray != null) {
@@ -210,29 +188,32 @@
    }
    private static TaoBaoGoodsBrief loadYuShouInfo(TaoBaoGoodsBrief goods, JSONObject item) {
        if (goods != null && item != null) {
            // 预售相关解析
            goods.setYsylClickUrl(item.optString("ysyl_click_url"));
            if (!StringUtil.isNullOrEmpty(item.optString("ysyl_commission_rate")))
                goods.setYsylCommissionRate(new BigDecimal(item.optString("ysyl_commission_rate")));
            goods.setYsylTljFace(item.optString("ysyl_tlj_face"));
            goods.setYsylTljSendTime(item.optString("ysyl_tlj_send_time"));
            goods.setYsylTljUseEndTime(item.optString("ysyl_tlj_use_end_time"));
            goods.setYsylTljUseStartTime(item.optString("ysyl_tlj_use_start_time"));
            JSONObject preSaleInfo = item.optJSONObject("presale_info");
            if (preSaleInfo != null) {
                // 预售相关解析
                goods.setYsylClickUrl(item.optString("ysyl_click_url"));
                if (!StringUtil.isNullOrEmpty(item.optString("ysyl_commission_rate")))
                    goods.setYsylCommissionRate(new BigDecimal(item.optString("ysyl_commission_rate")));
                goods.setYsylTljFace(item.optString("ysyl_tlj_face"));
                goods.setYsylTljSendTime(item.optString("ysyl_tlj_send_time"));
                goods.setYsylTljUseEndTime(item.optString("ysyl_tlj_use_end_time"));
                goods.setYsylTljUseStartTime(item.optString("ysyl_tlj_use_start_time"));
            goods.setPresaleDeposit(item.optString("presale_deposit"));
            goods.setPresaleDiscountFeeText(item.optString("presale_discount_fee_text"));
            goods.setPresaleEndTime(item.optString("presale_end_time"));
            goods.setPresaleStartTime(item.optString("presale_start_time"));
            goods.setPresaleTailEndTime(item.optString("presale_tail_end_time"));
            goods.setPresaleTailStartTime(item.optString("presale_tail_start_time"));
            return goods;
                goods.setPresaleDeposit(preSaleInfo.optString("presale_deposit"));
                goods.setPresaleDiscountFeeText(preSaleInfo.optString("presale_discount_fee_text"));
                goods.setPresaleEndTime(preSaleInfo.optString("presale_end_time"));
                goods.setPresaleStartTime(preSaleInfo.optString("presale_start_time"));
                goods.setPresaleTailEndTime(preSaleInfo.optString("presale_tail_end_time"));
                goods.setPresaleTailStartTime(preSaleInfo.optString("presale_tail_start_time"));
                return goods;
            }
        }
        return goods;
    }
    public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId)
    public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<String> listId)
            throws TaoKeApiException, TaobaoGoodsDownException {
        if (listId == null || listId.size() == 0) {
            throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空");
@@ -243,7 +224,7 @@
        }
        StringBuffer ids = new StringBuffer();
        for (Long id : listId) {
        for (String id : listId) {
            ids.append(id + ",");
        }
@@ -352,7 +333,7 @@
     * @return
     * @throws TaobaoGoodsDownException
     */
    public static TaoBaoGoodsBrief searchGoodsDetail(Long id, String specialId, String relationId) throws TaobaoGoodsDownException {
    public static TaoBaoGoodsBrief searchGoodsDetail(String id, String specialId, String relationId) throws TaobaoGoodsDownException {
        TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
        if (goods == null)
            return null;
@@ -365,8 +346,8 @@
        if (result != null && result.getTaoBaoGoodsBriefs() != null)
            for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
                System.out.println(goods.getAuctionId() + ":" + g.getAuctionId());
                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
                    g.setId(goods.getAuctionId());
                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                    g.setAuctionId(goods.getAuctionId());
                    g.setCreatetime(new Date());
                    g.setMaterialLibType(goods.getMaterialLibType());
                    g.setProvcity(goods.getProvcity());
@@ -375,7 +356,7 @@
            }
        // 从转链搜索
        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                        TaoBaoConstant.TAOBAO_PID_DEFAULT), specialId, relationId);
@@ -407,7 +388,7 @@
    }
    public static TaoBaoGoodsBrief searchGoodsDetail(Long id) throws TaobaoGoodsDownException {
    public static TaoBaoGoodsBrief searchGoodsDetail(String id) throws TaobaoGoodsDownException {
        return searchGoodsDetail(id, null, null);
    }
@@ -418,7 +399,7 @@
     * @return
     * @throws TaobaoGoodsDownException
     */
    public static TaoBaoGoodsBrief searchGoodsDetail(Long id, TaoKeAppInfo app) throws TaobaoGoodsDownException {
    public static TaoBaoGoodsBrief searchGoodsDetail(String id, TaoKeAppInfo app) throws TaobaoGoodsDownException {
        TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
        if (goods == null)
            return null;
@@ -430,8 +411,8 @@
                goods.getUserType(), app, null, null);
        if (result != null && result.getTaoBaoGoodsBriefs() != null)
            for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
                    g.setId(goods.getAuctionId());
                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                    g.setAuctionId(goods.getAuctionId());
                    // 判断是否有优惠券
                    if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) {
                        // 获取优惠券详情
@@ -456,7 +437,7 @@
            }
        // 从转链搜索
        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                        TaoBaoConstant.TAOBAO_PID_DEFAULT), null, null);
@@ -497,7 +478,7 @@
     * @return
     * @throws TaobaoGoodsDownException
     */
    public static TaoBaoGoodsBrief searchGoodsDetailForConvert(Long id, TaoKeAppInfo app, String specialId, String relationId)
    public static TaoBaoGoodsBrief searchGoodsDetailForConvert(String id, TaoKeAppInfo app, String specialId, String relationId)
            throws TaobaoGoodsDownException {
        TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
        if (goods == null)
@@ -510,8 +491,8 @@
                goods.getUserType(), app, specialId, relationId);
        if (result != null && result.getTaoBaoGoodsBriefs() != null)
            for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
                    g.setId(goods.getAuctionId());
                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                    g.setAuctionId(goods.getAuctionId());
                    g.setCreatetime(new Date());
                    return g;
                }
@@ -551,8 +532,8 @@
                    goods.getUserType(), null, null);
            if (result != null && result.getTaoBaoGoodsBriefs() != null)
                for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
                    if (goods.getAuctionId().longValue() == g.getAuctionId()) {
                        g.setId(goods.getAuctionId());
                    if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                        g.setAuctionId(goods.getAuctionId());
                        g.setAuctionUrl(goods.getAuctionUrl());
                        g.setShopTitle(goods.getShopTitle());
@@ -588,9 +569,9 @@
            if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
                    && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
                for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
                    if (g.getAuctionId().longValue() == goods.getAuctionId()) {
                    if (TaoBaoUtil.isEqual(g.getAuctionId(), goods.getAuctionId())) {
                        g.setImgList(goods.getImgList());
                        g.setId(goods.getAuctionId());
                        g.setAuctionId(goods.getAuctionId());
                        g.setAuctionUrl(goods.getAuctionUrl());
                        g.setShopTitle(goods.getShopTitle());
@@ -633,8 +614,8 @@
        if (filter.getKey() != null && filter.getKey().trim().equalsIgnoreCase(""))
            return null;
        if (filter.getKey() != null && filter.getKey().length() > 100)
            return null;
//        if (filter.getKey() != null && filter.getKey().length() > 100)
//            return null;
        PageEntity pageEntity = new PageEntity();
        TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
@@ -642,6 +623,10 @@
        map.put("method", "taobao.tbk.dg.material.optional");
        map.put("page_size", filter.getPageSize() == 0 ? "20" : filter.getPageSize() + "");
        map.put("page_no", (filter.getPage() <= 0 ? 1 : filter.getPage()) + "");
        //1-动态ID转链场景,2-消费者比价场景(不填默认为1)
//        map.put("biz_scene_id","2");
//        map.put("promotion_type","1");
        if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(specialId)) {
@@ -753,8 +738,9 @@
        }
        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
        // System.out.println("resultStr"+ resultStr);
        System.out.println("resultStr" + resultStr);
        JSONObject data = JSONObject.fromObject(resultStr);
        //TODO 临时接口tbk_dg_material_optional_response
        if (data.optJSONObject("tbk_dg_material_optional_response") != null
                && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) {
            JSONArray array = data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list")
@@ -771,6 +757,195 @@
            JSONObject optJSONObject = data.optJSONObject("tbk_dg_material_optional_response");
            int totalResults = optJSONObject.getInt("total_results");
            int totalPage = totalResults % pageEntity.getPageSize() == 0 ? totalResults / pageEntity.getPageSize()
                    : totalResults / pageEntity.getPageSize() + 1;
            pageEntity.setTotalCount(totalResults);
            pageEntity.setTotalPage(totalPage);
        }
        List<TaoBaoSearchNav> navList = new ArrayList<>();
        TaoBaoHead taoBaoHead = new TaoBaoHead();
        taoBaoHead.setDocsfound((int) pageEntity.getTotalCount());
        taoBaoSearchResult.setTaoBaoHead(taoBaoHead);
        taoBaoSearchResult.setPageEntity(pageEntity);
        // filter.get
        // 设置发货地址
        TaoBaoSearchNav nav = new TaoBaoSearchNav();
        nav.setName("发货地选择");
        nav.setFlag("address");
        nav.setId(11110);
        nav.setType("fahuodi");
        List<TaoBaoSearchNav> childNavList = new ArrayList<>();
        List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
        for (TaoBaoProvince province : provinceList) {
            TaoBaoSearchNav childNav = new TaoBaoSearchNav();
            childNav.setName(province.getName());
            childNav.setId(Integer.parseInt(province.getId()));
            childNav.setType("fahuodi-child");
            if (Integer.parseInt(province.getId()) == filter.getProvinceId())
                childNav.setSelector(1);
            childNavList.add(childNav);
        }
        nav.setSubIds(childNavList);
        navList.add(nav);
        // 测试
        taoBaoSearchResult.setNavList(navList);
        return taoBaoSearchResult;
    }
    public static TaoBaoSearchResult searchWuLiaoNew(SearchFilter filter, String specialId, String relationId) {
        if (filter.getKey() != null && filter.getKey().trim().equalsIgnoreCase(""))
            return null;
        PageEntity pageEntity = new PageEntity();
        TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.material.optional.upgrade");
        map.put("page_size", filter.getPageSize() == 0 ? "20" : filter.getPageSize() + "");
        map.put("page_no", (filter.getPage() <= 0 ? 1 : filter.getPage()) + "");
        //1-动态ID转链场景,2-消费者比价场景(不填默认为1)
//        map.put("biz_scene_id","2");
//        map.put("promotion_type","1");
        if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(specialId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(relationId)) {
            map.put("relation_id", relationId);
        }
        // map.put("material_id", "3756");
        pageEntity.setPageIndex(filter.getPage());
        pageEntity.setPageSize(filter.getPageSize() == 0 ? 20 : filter.getPageSize());
        // 包含了地区筛选
        if (filter.getProvinceId() > 0) {
            List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
            for (TaoBaoProvince province : provinceList) {
                if (Integer.parseInt(province.getId()) == filter.getProvinceId()) {
                    map.put("itemloc", province.getName());
                    break;
                }
            }
        }
        if (filter.getMaterialId() != null)
            map.put("material_id", filter.getMaterialId());
        if (filter.getStartPrice() != null)
            map.put("start_price", filter.getStartPrice() + "");
        if (filter.getEndPrice() != null)
            map.put("end_price", filter.getEndPrice() + "");
        if (filter.getStartTkRate() > 0)
            map.put("start_tk_rate", filter.getStartTkRate() + "");
        if (filter.getEndTkRate() > 0)
            map.put("end_tk_rate", filter.getEndTkRate() + "");
        if (filter.getStartKaTkRate() > 0)
            map.put("start_ka_tk_rate", filter.getStartKaTkRate() + "");
        if (filter.getEndKaTkRate() > 0)
            map.put("end_ka_tk_rate", filter.getEndKaTkRate() + "");
        if (filter.isTmall())
            map.put("is_tmall", filter.isTmall() + "");
        if (filter.isOverseas())
            map.put("is_overseas", filter.isOverseas() + "");
        if (filter.isBaoYou())
            map.put("need_free_shipment", filter.isBaoYou() + "");
        if (filter.isNeedPrepay())
            map.put("need_prepay", filter.isNeedPrepay() + "");
        if (filter.isIncludePayRate30())
            map.put("include_pay_rate_30", filter.isIncludePayRate30() + "");
        if (filter.isIncludeGoodRate())
            map.put("include_good_rate", filter.isIncludeGoodRate() + "");
        if (filter.isIncludeRfdRate())
            map.put("include_rfd_rate", filter.isIncludeRfdRate() + "");
        if (filter.getStartDsr() > 0)
            map.put("start_dsr", filter.getStartDsr() + "");
        if (filter.getNpxLevel() > 0)
            map.put("npx_level", filter.getNpxLevel() + "");
        if (!StringUtil.isNullOrEmpty(filter.getCateIds()))
            map.put("cat", filter.getCateIds());
        if (!StringUtil.isNullOrEmpty(filter.getKey()))
            map.put("q", filter.getKey());
        if (filter.getQuan() > 0)
            map.put("has_coupon", true + "");
        if (!StringUtil.isNullOrEmpty(filter.getIp()))
            map.put("ip", filter.getIp());
        if (filter.getSort() > 0) {
            if (filter.getSort() == TaoBaoUtil.SORT_SALE_HIGH_TO_LOW) {
                map.put("sort", "total_sales_des"); // 销量从高到低
            } else if (filter.getSort() == TaoBaoUtil.SORT_SALE_LOW_TO_HIGH) {
                map.put("sort", "total_sales_asc"); // 销量从低到高
            } else if (filter.getSort() == TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW) {
                map.put("sort", "price_des"); // 价格从高到低
            } else if (filter.getSort() == TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH) {
                map.put("sort", "price_asc"); // 价格从低到高
            } else if (filter.getSort() == TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW) {
                map.put("sort", "tk_rate_des"); // 淘客佣金比率高到低
            } else if (filter.getSort() == TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH) {
                map.put("sort", "tk_rate_asc"); // 淘客佣金比率低到高
            } else if (filter.getSort() == TaoBaoUtil.SORT_TOTAL_COMMI_HIGH_TO_LOW) {
                map.put("sort", "tk_total_commi_des"); // 总支出佣金高到低
            } else if (filter.getSort() == TaoBaoUtil.SORT_TOTAL_COMMI_LOW_TO_HIGH) {
                map.put("sort", "tk_total_commi_asc"); // 总支出佣金低到高
            } else if (filter.getSort() == TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW) {
                map.put("sort", "tk_total_sales_des"); // 累计推广量高到低
            } else if (filter.getSort() == TaoBaoUtil.SORT_TOTAL_SALES_LOW_TO_HIGH) {
                map.put("sort", "tk_total_sales_asc"); // 累计推广量低到高
            }
        }
        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
        System.out.println("resultStr" + resultStr);
        JSONObject data = JSONObject.fromObject(resultStr);
        JSONObject rootData = data.optJSONObject("tbk_dg_material_optional_upgrade_response");
        if (rootData != null
                && rootData.optJSONObject("result_list") != null) {
            JSONArray array = rootData.optJSONObject("result_list")
                    .optJSONArray("map_data");
            List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
            if (array != null) {
                for (int i = 0; i < array.size(); i++) {
                    TaoBaoGoodsBrief goods = parseWuLiaoItemNew(array.optJSONObject(i));
                    if (goods != null)
                        goodsList.add(goods);
                }
            }
            taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList);
            int totalResults = rootData.getInt("total_results");
            int totalPage = totalResults % pageEntity.getPageSize() == 0 ? totalResults / pageEntity.getPageSize()
                    : totalResults / pageEntity.getPageSize() + 1;
            pageEntity.setTotalCount(totalResults);
@@ -833,6 +1008,7 @@
            provcity = provcity.split(" ")[provcity.split(" ").length - 1];
        TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
        Map<String, String> map = new HashMap<>();
        //TODO 临时接口 taobao.tbk.dg.material.optional
        map.put("method", "taobao.tbk.dg.material.optional");
        map.put("page_size", 50 + "");
        map.put("page_no", 1 + "");
@@ -853,6 +1029,7 @@
        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
        System.out.println(resultStr);
        JSONObject data = JSONObject.fromObject(resultStr);
        //TODO 临时接口 tbk_dg_material_optional_response
        if (data.optJSONObject("tbk_dg_material_optional_response") != null
                && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) {
            JSONArray array = data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list")
@@ -950,7 +1127,7 @@
    }
    // 解析物料
    private static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
    public static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
        goods.setPictUrl(item.optString("pict_url"));
@@ -958,9 +1135,13 @@
            goods.setPictUrlWhite(item.optString("white_image"));
        }
        goods.setAuctionId(item.optLong("num_iid"));
        goods.setAuctionId(item.optString("num_iid"));
        goods.setAuctionUrl("https:" + item.optString("url"));
        goods.setBiz30day(item.optInt("volume"));
        if (item.containsKey("annual_vol")) {
            goods.setBiz30day(item.optInt("annual_vol") / 100);
        } else {
            goods.setBiz30day(item.optInt("volume"));
        }
        goods.setCouponInfo(item.optString("coupon_info"));
        if (goods.getCouponInfo() != null)
@@ -1044,6 +1225,113 @@
        return goods;
    }
    public static TaoBaoGoodsBrief parseWuLiaoItemNew(JSONObject item) {
        JSONObject basicInfo = item.optJSONObject("item_basic_info");
        JSONObject pricePromotionInfo = item.optJSONObject("price_promotion_info");
        JSONObject publishInfo = item.optJSONObject("publish_info");
        // 线报内容
        JSONObject mgcInfo = item.optJSONObject("mgc_info");
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
        goods.setPictUrl(basicInfo.optString("pict_url"));
        if (!StringUtil.isNullOrEmpty(basicInfo.optString("white_image"))) {
            goods.setPictUrlWhite(basicInfo.optString("white_image"));
        }
        goods.setAuctionId(item.optString("item_id"));
        goods.setAuctionUrl("https:" + item.optString("url"));
        if (basicInfo.containsKey("annual_vol")) {
            goods.setBiz30day(basicInfo.optInt("annual_vol") / 12);
        } else {
            goods.setBiz30day(basicInfo.optInt("volume"));
        }
        if (pricePromotionInfo.optJSONObject("final_promotion_path_list") != null && pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data").size() > 0) {
            JSONArray array = pricePromotionInfo.optJSONObject("final_promotion_path_list").optJSONArray("final_promotion_path_map_data");
            JSONObject couponInfo = array.optJSONObject(0);
            goods.setCouponInfo(couponInfo.optString("promotion_desc").replace(".00", ""));
            List<BigDecimal> quanInfo = TaoBaoCouponUtil.getCouponInfo(goods.getCouponInfo());
            goods.setCouponAmount(new BigDecimal(couponInfo.optString("promotion_fee")));
            goods.setCouponEffectiveEndTime(couponInfo.optString("promotion_end_time"));
            goods.setCouponEffectiveStartTime(couponInfo.optString("promotion_start_time"));
            goods.setCouponStartFee(quanInfo.get(0));
            goods.setCouponLeftCount(100);
            goods.setCouponLink(publishInfo.optString("coupon_share_url"));
            goods.setCouponTotalCount(100);
            goods.setCouponActivityId(couponInfo.optString("promotion_id"));
        } else {
            goods.setCouponAmount(new BigDecimal(0));
        }
        goods.setDayLeft(-1);
        if (basicInfo.optJSONObject("small_images") != null) {
            JSONArray imgArray = basicInfo.optJSONObject("small_images").optJSONArray("string");
            if (imgArray != null) {
                List<String> imgList = new ArrayList<>();
                for (int n = 0; n < imgArray.size(); n++) {
                    imgList.add(imgArray.optString(n));
                }
                goods.setImgList(imgList);
            }
        }
        if (publishInfo.optString("commission_type").contains("MKT"))
            goods.setTkMktStatus("1");
        else
            goods.setTkMktStatus("0");
        if (publishInfo.optString("commission_type").contains("SP"))
            goods.setIncludeDxjh(1);
        goods.setSellerId(basicInfo.optLong("seller_id"));
        goods.setShopTitle(basicInfo.optString("shop_title"));
        goods.setTitle(basicInfo.optString("title"));
        goods.setProvcity(basicInfo.optString("provcity"));
        if (!StringUtil.isNullOrEmpty(basicInfo.optString("level_one_category_id"))) {
            goods.setRootCatId(basicInfo.optInt("level_one_category_id"));
        }
        goods.setRootCategoryName(basicInfo.optString("level_one_category_name"));
        if (!StringUtil.isNullOrEmpty(basicInfo.optString("category_id"))) {
            goods.setLeafCatId(basicInfo.optInt("category_id"));
        }
        goods.setLeafName(basicInfo.optString("category_name"));
        goods.setTkRate(new BigDecimal(publishInfo.optString("income_rate")));
        goods.setTotalNum(1000);
        goods.setUserType(basicInfo.optInt("user_type"));
        goods.setUserTypeName("");
        goods.setZkPrice(new BigDecimal(pricePromotionInfo.optString("zk_final_price")));
        if (publishInfo.optJSONArray("sp_campaign_list") != null && publishInfo.optJSONArray("sp_campaign_list").size() > 0) {
            goods.setDxjhInfo(publishInfo.optJSONArray("sp_campaign_list").optJSONObject(0).optString("sp_name"));
        }
        if (StringUtil.isNullOrEmpty(goods.getCouponInfo())) {// 无券
            goods.setTkCommFee(goods.getZkPrice().multiply(goods.getTkRate()).divide(new BigDecimal(100)));
        } else if (goods.getZkPrice().compareTo(goods.getCouponStartFee()) >= 0// 有券
                && goods.getZkPrice().compareTo(goods.getCouponAmount()) >= 0) {
            BigDecimal finalPrice = goods.getZkPrice().subtract(goods.getCouponAmount());
            goods.setTkCommFee(finalPrice.multiply(goods.getTkRate()).divide(new BigDecimal(100)));
        } else {
            goods.setTkCommFee(new BigDecimal(0));
        }
        if (!StringUtil.isNullOrEmpty(pricePromotionInfo.optString("reserve_price")))
            goods.setReservePrice(new BigDecimal(pricePromotionInfo.optString("reserve_price")));
        goods.setTotalFee(new BigDecimal("0"));
        // 推荐语
        if (mgcInfo != null) {
            goods.setDescription(mgcInfo.optString("item_description"));
        }
        goods = loadYuShouInfo(goods, item);
        return goods;
    }
    /**
     * 获取淘口令
     *
@@ -1106,7 +1394,7 @@
     * @param activityId
     * @return
     */
    public static QuanInfo getQuanInfo(Long auctionId, String activityId) {
    public static QuanInfo getQuanInfo(String auctionId, String activityId) {
        QuanInfo info = new TaoKeApiUtil.QuanInfo();
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.coupon.get");
@@ -1169,7 +1457,7 @@
                    if (url.contains("s.click.taobao.com/t?e=m")) {
                        TaoBaoGoodsBrief goods;
                        try {
                            goods = searchGoodsDetail(item.optLong("num_iid"));
                            goods = searchGoodsDetail(item.optString("num_iid"));
                            if (goods != null)
                                goodsList.add(goods);
                        } catch (TaobaoGoodsDownException e) {
@@ -1371,7 +1659,7 @@
        System.out.println(resultStr);
    }
    public static void getTAEGoodsDetail(Long auctionId) {
    public static void getTAEGoodsDetail(String auctionId) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tae.items.list");
        map.put("fields", "title,nick,pic_url,location,cid,price,post_fee,promoted_service,ju,shop_name");
@@ -1704,7 +1992,7 @@
        return null;
    }
    public static void specialConvertItem(Long auctionId, TaoKeAppInfo app) {
    public static void specialConvertItem(String auctionId, TaoKeAppInfo app) {
        String pid = app.getPid();
        String[] sts = pid.split("_");
        Map<String, String> map = new HashMap<>();
@@ -1721,7 +2009,7 @@
        }
    }
    public static TaoBaoGoodsBrief specialConvertCoupon(Long auctionId, TaoKeAppInfo app, String specialId, String relationId) {
    public static TaoBaoGoodsBrief specialConvertCoupon(String auctionId, TaoKeAppInfo app, String specialId, String relationId) {
        String pid = app.getPid();
        String[] sts = pid.split("_");
        Map<String, String> map = new HashMap<>();
@@ -1780,15 +2068,75 @@
    }
    public static TaoBaoGoodsBrief specialConvertCouponV2(String auctionId, TaoKeAppInfo app, String specialId, String relationId) {
        String pid = app.getPid();
        String[] sts = pid.split("_");
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.general.link.convert");
        map.put("item_id_list", auctionId + "");
        map.put("adzone_id", sts[3]);
        if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(specialId)) {
            map.put("special_id", specialId);
        } else if (!StringUtil.isNullOrEmpty(relationId)) {
            map.put("relation_id", relationId);
        }
        try {
            String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
            System.out.println(result);
            JSONObject json = JSONObject.fromObject(result);
            JSONObject resultJSON = json.optJSONObject("tbk_dg_general_link_convert_response").optJSONObject("data")
                    .optJSONObject("item_url_list").optJSONArray("item_url_list").optJSONObject(0);
            JSONObject goodsInfo=resultJSON.optJSONObject("link_info_dto");
            String couponLink = goodsInfo.optString("coupon_short_url");
            String itemLink = goodsInfo.optString("cps_short_url");
            TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
            goods.setAuctionUrl(itemLink);
            goods.setCouponLink(couponLink);
            if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_info"))) {
                goods.setCouponLink(couponLink);
                goods.setCouponInfo(resultJSON.optString("coupon_info"));
                if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_total_count"))) {
                    goods.setCouponTotalCount(Integer.parseInt(resultJSON.optString("coupon_total_count")));
                }
                if (!StringUtil.isNullOrEmpty(resultJSON.optString("coupon_remain_count"))) {
                    goods.setCouponLeftCount(Integer.parseInt(resultJSON.optString("coupon_remain_count")));
                }
                goods.setCouponEffectiveStartTime(resultJSON.optString("coupon_start_time"));
                goods.setCouponEffectiveEndTime(resultJSON.optString("coupon_end_time"));
            }
            JSONObject rateInfo=resultJSON.optJSONObject("promotion_info_dto");
            String tkRate = rateInfo.optString("commission_rate");
            if (!StringUtil.isNullOrEmpty(tkRate)) {
                goods.setTkRate(new BigDecimal(tkRate));
            }
            goods = loadYuShouInfo(goods, resultJSON);
            return goods;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    // AA5ISJ
    private static TaoBaoGoodsBrief parseWuLiaoItemFromMaterialId(JSONObject item) {
        TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
        // 设置成320*320的图片尺寸
        goods.setPictUrl(TbImgUtil.getTBSize320Img("https:" + item.optString("pict_url")));
        goods.setAuctionId(item.optLong("item_id"));
        goods.setAuctionId(item.optString("item_id"));
        goods.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId());
        goods.setBiz30day(item.optInt("volume"));
        if (item.containsKey("annual_vol")) {
            goods.setBiz30day(item.optInt("annual_vol") / 12);
        } else {
            goods.setBiz30day(item.optInt("volume"));
        }
        if (!StringUtil.isNullOrEmpty(item.optString("coupon_amount"))) {
            goods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(item.optLong("coupon_end_time"), "yyyy-MM-dd"));
            goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(item.optLong("coupon_start_time"), "yyyy-MM-dd"));
@@ -1934,10 +2282,11 @@
        return null;
    }
    // 淘礼金创建
    //{"result":{"msg_code":"FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR","msg_info":"今日该商品淘礼金创建数已超上限,请您明日再试","success":false},"request_id":"10p30v02qadkq"}
    //{"result":{"msg_code":"ASSET_ACCOUNT_BALANCE_NOT_ENOUGH","msg_info":"账户预算不足","success":false},"request_id":"5caz9izr7jqp"}
    public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum,
    public static TaoLiJinDTO createTaoLiJin(String auctionId, String name, BigDecimal perface, int totalNum,
                                             Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app)
            throws TaoLiJinCreateException, TaoKeApiException {
        Map<String, String> map = new HashMap<>();
@@ -2000,11 +2349,18 @@
        return null;
    }
    // 淘礼金报告
    public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId) {
    /**
     * @return com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport
     * @author hxh
     * @description 淘礼金报告 接口文档:https://open.taobao.com/api.htm?source=search&docId=58736&docType=2
     * @date 10:57 2022/1/11
     * @param: rightsId
     **/
    public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId, String pid) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.vegas.tlj.instance.report");
        map.put("method", "taobao.tbk.dg.vegas.tlj.report");
        map.put("rights_id", rightsId);
        map.put("adzone_id", pid.split("_")[3]);
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
@@ -2015,27 +2371,24 @@
            JSONObject json = JSONObject.fromObject(result);
            System.out.println(json);
            JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_instance_report_response");
            JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_report_response");
            if (root != null && root.optJSONObject("result") != null) {
                if (root.optJSONObject("result").optBoolean("success")) {
                    JSONObject modelJson = root.optJSONObject("result").optJSONObject("model");
                    if (modelJson != null && modelJson.size() > 0) {
                        UserTaoLiJinReport report = new UserTaoLiJinReport();
                        report.setId(rightsId);
                        report.setUnfreezeAmount(new BigDecimal(modelJson.optString("unfreeze_amount")));
                        report.setUnfreezeNum(modelJson.optInt("unfreeze_num"));
                        report.setRefundAmount(new BigDecimal(modelJson.optString("refund_amount")));
                        report.setRefundNum(modelJson.optInt("refund_num"));
                        report.setAlipayAmount(new BigDecimal(modelJson.optString("alipay_amount")));
                        report.setUseAmount(new BigDecimal(modelJson.optString("use_amount")));
                        report.setUseNum(modelJson.optInt("use_num"));
                        report.setWinAmount(new BigDecimal(modelJson.optString("win_amount")));
                        report.setWinNum(modelJson.optInt("win_num"));
                        report.setPreCommissionAmount(new BigDecimal(modelJson.optString("pre_commission_amount")));
                        return report;
                    }
            if (root != null && root.optBoolean("result_success")) {
                JSONObject modelJson = root.optJSONObject("model").optJSONObject("extra");
                if (modelJson != null && modelJson.size() > 0) {
                    UserTaoLiJinReport report = new UserTaoLiJinReport();
                    report.setId(rightsId);
                    report.setWinAmount(new BigDecimal(modelJson.optString("win_sum_amt")));
                    report.setWinNum(modelJson.optInt("win_pv"));
                    report.setRefundAmount(new BigDecimal(modelJson.optString("refund_sum_amt")));
                    report.setRefundNum(modelJson.optInt("refund_num"));
                    report.setAlipayAmount(new BigDecimal(modelJson.optString("alipay_amt")));
                    report.setUseAmount(new BigDecimal(modelJson.optString("use_sum_amt")));
                    report.setUseNum(modelJson.optInt("use_num"));
                    report.setUnfreezeAmount(new BigDecimal(modelJson.optString("remaining_amt")));
                    report.setUnfreezeNum(modelJson.optInt("remaining_num"));
                    report.setPreCommissionAmount(new BigDecimal(modelJson.optString("pre_pub_share_fee_for_disp")));
                    return report;
                }
            }
        } catch (Exception e) {
@@ -2044,7 +2397,7 @@
        return null;
    }
    public static void getCouponByAuctionId(Long auctionId) {
    public static void getCouponByAuctionId(String auctionId) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.itemid.coupon.get");
        map.put("platform", 2 + "");
@@ -2116,7 +2469,7 @@
        return null;
    }
    public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(Long auctionId, int count) {
    public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(String auctionId, int count) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.optimus.material");
        map.put("item_id", auctionId + "");
@@ -2149,7 +2502,7 @@
        return goodsList;
    }
    public static List<TaoBaoGoodsBrief> getCouponListByItemId(Long auctionId) {
    public static List<TaoBaoGoodsBrief> getCouponListByItemId(String auctionId) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.itemid.coupon.get");
        map.put("platform", auctionId + "");
@@ -2225,17 +2578,17 @@
    }
    public static class TokenConvertResult {
        private Long num_iid;//   商品Id
        private String num_iid;//   商品Id
        private String click_url;//商品淘客转链
        private String seller_id;//店铺卖家ID
        private String origin_url;//入参淘口令对应原始链接
        private String origin_pid;//入参淘口令推广链接中的pid,如果不属于当前调用的推广者则展示“0”
        public Long getNum_iid() {
        public String getNum_iid() {
            return num_iid;
        }
        public void setNum_iid(Long num_iid) {
        public void setNum_iid(String num_iid) {
            this.num_iid = num_iid;
        }
@@ -2272,6 +2625,40 @@
        }
    }
    public static void main(String[] args) throws TaoBaoTokenParseException, TaobaoGoodsDownException {
//        SearchFilter sf =new SearchFilter();
//        sf.setKey("https://s.click.taobao.com/HCsB7Du");
//        sf.setPageSize(10);
//        sf.setPage(1);
//        searchWuLiao(sf,null,null);
//        tokenConvert("【淘宝】https://m.tb.cn/h.5YFsc7F?tk=A8wSdGRxsjm CZ0001 「俄罗斯风味迷你提拉米苏蜂蜜奶油千层甜品蛋糕早餐整箱3000克零食」\n" +
//                "点击链接直接打开 或者 淘宝搜索直接打开");
//
//     TaoBaoGoodsBrief goods =  getSimpleGoodsInfo("kNWkWZuYt28BaNcG9ycPtJ-aRG5QXwIdOXvv5bNcNq");
//     System.out.println(goods);
//     System.out.println(goods.getAuctionId());
//        Map<String, String> map = new HashMap<>();
//        map.put("method", "taobao.tbk.item.info.get");
//        map.put("biz_scene_id", "2");
//        map.put("num_iids",  "708395859317");
//        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
//        System.out.println(resultStr);
//        SearchFilter sf=new SearchFilter();
//        sf.setKey("鞋");
//        sf.setPage(1);
//        sf.setPageSize(20);
//        TaoBaoSearchResult result =  searchWuLiaoNew(sf,null,null);
//        System.out.printf(result.toString());
//        public static final String TAOBAO_AUTH_APPKEY = "24980167";
//        public static final String TAOBAO_AUTH_APPSECRET = "e0a2e05deabf5ce039b52e5b492d5382";
//        public static final String TAOBAO_PID_DEFAULT="mm_124933865_56750082_89555600043";
        TaoKeAppInfo app = new TaoKeAppInfo("24980167", "e0a2e05deabf5ce039b52e5b492d5382", "mm_124933865_56750082_89555600043");
        specialConvertCouponV2("ZMxBywvT6tPr0wabjaFBQPiVt6-g4DYZPC2OoJaaRXIoq", app, "511379263", null);
    }
}