admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -225,24 +225,27 @@
    }
    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;
    }
@@ -836,6 +839,195 @@
        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);
            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;
    }
    /**
     * 商品物料搜索
     *
@@ -1065,6 +1257,109 @@
        goods = loadYuShouInfo(goods, item);
        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"));
        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;
    }
    /**
     * 获取淘口令
@@ -2307,9 +2602,9 @@
//        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);
//
//     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");
@@ -2317,6 +2612,12 @@
//        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());
    }
}