| | |
| | | } |
| | | |
| | | 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; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 商品物料搜索 |
| | | * |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取淘口令 |
| | |
| | | // 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"); |
| | |
| | | // 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()); |
| | | } |
| | | |
| | | } |