| | |
| | | package com.yeshi.fanli.util.taobao;
|
| | |
|
| | | import com.yeshi.common.entity.PageEntity;
|
| | | import com.yeshi.common.entity.taobao.TaoBaoShopInfo;
|
| | | import com.yeshi.common.entity.taobao.TaoKeAppInfo;
|
| | | import com.yeshi.fanli.dto.taobao.TaoLiJinDTO;
|
| | | import com.yeshi.fanli.dto.taobao.api.TaoKeOfficialActivityConvertResultDTO;
|
| | | import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport;
|
| | | import com.yeshi.fanli.entity.taobao.*;
|
| | | import com.yeshi.fanli.exception.taobao.TaoBaoAuthException;
|
| | | import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
|
| | | import com.yeshi.fanli.exception.taobao.TaoKeApiException;
|
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
| | | import com.yeshi.fanli.exception.tlj.TaoLiJinCreateException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.log.TLJLogHelper;
|
| | | import com.yeshi.fanli.log.TaoKeLogHelper;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TaoBaoConstant;
|
| | | 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 net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | | import org.yeshi.utils.MoneyBigDecimalUtil;
|
| | | import org.yeshi.utils.TimeUtil;
|
| | | import org.yeshi.utils.taobao.TbImgUtil;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.*;
|
| | |
|
| | | //淘宝客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 {
|
| | | 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);
|
| | | 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"), "商品下架");
|
| | | }
|
| | |
|
| | | 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);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | private static TaoBaoGoodsBrief parseSimpleGoodsInfo(JSONObject item) {
|
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
|
| | | goods.setAuctionId(item.optLong("num_iid"));
|
| | | goods.setAuctionUrl(item.optString("item_url"));
|
| | | goods.setBiz30day(item.optInt("volume"));
|
| | | 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.setTitle(item.optString("title"));
|
| | | goods.setUserType(item.optInt("user_type"));
|
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
|
| | | goods.setReservePrice(new BigDecimal(item.optString("zk_final_price")));
|
| | | goods.setAuctionUrl(item.optString("item_url"));
|
| | | goods.setProvcity(item.optString("provcity"));
|
| | | goods.setPictUrl(item.optString("pict_url"));
|
| | | goods.setShopTitle(item.optString("nick"));
|
| | | goods.setSellerId(item.optLong("seller_id"));
|
| | | goods.setRootCategoryName(item.optString("cat_name"));
|
| | | goods.setLeafName(item.optString("cat_leaf_name"));
|
| | |
|
| | | String optString = item.optString("shop_dsr");
|
| | | if (!StringUtil.isNullOrEmpty(optString)) {
|
| | | goods.setShopDsr(new Integer(optString));
|
| | | }
|
| | |
|
| | | String ratesum = item.optString("ratesum");
|
| | | if (!StringUtil.isNullOrEmpty(ratesum)) {
|
| | | goods.setRatesum(new Integer(ratesum));
|
| | | }
|
| | |
|
| | | if (item.optBoolean("is_prepay"))
|
| | | goods.setIsPrepay(1);
|
| | |
|
| | | if (item.optBoolean("i_rfd_rate"))
|
| | | goods.setRfdRate(1);
|
| | |
|
| | | if (item.optBoolean("h_good_rate"))
|
| | | goods.setGoodRate(1);
|
| | |
|
| | | if (item.optBoolean("h_pay_rate30"))
|
| | | goods.setPayRate30(1);
|
| | |
|
| | | if (item.optBoolean("free_shipment"))
|
| | | goods.setFreeShipment(1);
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("material_lib_type"))) {
|
| | | try {
|
| | | String materialLibType = item.optString("material_lib_type");
|
| | | goods.setMaterialLibType(Integer.parseInt(materialLibType.split(",")[0]));
|
| | | } catch (Exception e) {
|
| | | goods.setMaterialLibType(0);
|
| | | }
|
| | |
|
| | | } else
|
| | | goods.setMaterialLibType(0);
|
| | |
|
| | | goods.setRootCategoryName(item.optString("cat_name"));
|
| | | goods.setLeafName(item.optString("cat_leaf_name"));
|
| | |
|
| | | goods = loadYuShouInfo(goods, item);
|
| | | return goods;
|
| | | }
|
| | |
|
| | | 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"));
|
| | |
|
| | | 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;
|
| | | }
|
| | | return goods;
|
| | | }
|
| | |
|
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId)
|
| | | throws TaoKeApiException, TaobaoGoodsDownException {
|
| | | if (listId == null || listId.size() == 0) {
|
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空");
|
| | | }
|
| | |
|
| | | if (listId.size() > 40) {
|
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能超过40个");
|
| | | }
|
| | |
|
| | | StringBuffer ids = new StringBuffer();
|
| | | for (Long id : listId) {
|
| | | ids.append(id + ",");
|
| | | }
|
| | |
|
| | | return getBatchGoodsInfos(ids.substring(0, ids.length() - 1));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取商品详情,简版
|
| | | *
|
| | | * @param ids
|
| | | * @return
|
| | | * @throws TaobaoGoodsDownException
|
| | | */
|
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfos(String ids) throws TaobaoGoodsDownException {
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.item.info.get");
|
| | | map.put("num_iids", ids + "");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | 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"), "商品下架");
|
| | | }
|
| | |
|
| | | 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) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | goodsList.add(parseSimpleGoodsInfo(item));
|
| | | }
|
| | | }
|
| | | return goodsList;
|
| | | }
|
| | |
|
| | |
|
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId, String ip)
|
| | | throws TaoKeApiException, TaobaoGoodsDownException {
|
| | | if (listId == null || listId.size() == 0) {
|
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空");
|
| | | }
|
| | |
|
| | | if (listId.size() > 40) {
|
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能超过40个");
|
| | | }
|
| | |
|
| | | StringBuffer ids = new StringBuffer();
|
| | | for (Long id : listId) {
|
| | | ids.append(id + ",");
|
| | | }
|
| | |
|
| | | return getBatchGoodsInfos(ids.substring(0, ids.length() - 1), ip);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取商品详情,简版
|
| | | *
|
| | | * @param ids
|
| | | * @param ip
|
| | | * @return
|
| | | * @throws TaobaoGoodsDownException
|
| | | */
|
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfos(String ids, String ip) throws TaobaoGoodsDownException {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.item.info.get");
|
| | | map.put("num_iids", ids + "");
|
| | | if (!StringUtil.isNullOrEmpty(ip)) {
|
| | | map.put("ip", ip);
|
| | | }
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | 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"), "商品下架");
|
| | | }
|
| | |
|
| | | if (data.optJSONObject("tbk_item_info_get_response") == null)
|
| | | return null;
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | |
|
| | | JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
|
| | | .optJSONArray("n_tbk_item");
|
| | | if (array != null && array.size() > 0) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | goodsList.add(parseSimpleGoodsInfo(item));
|
| | | }
|
| | | }
|
| | | return goodsList;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索商品详情-详细
|
| | | *
|
| | | * @param id
|
| | | * @return
|
| | | * @throws TaobaoGoodsDownException
|
| | | */
|
| | | public static TaoBaoGoodsBrief searchGoodsDetail(Long id, String specialId,String relationId) throws TaobaoGoodsDownException {
|
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
|
| | | if (goods == null)
|
| | | return null;
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(goods.getTitle());
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(50);
|
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(),
|
| | | goods.getUserType(), specialId, relationId);
|
| | | 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());
|
| | | g.setCreatetime(new Date());
|
| | | g.setMaterialLibType(goods.getMaterialLibType());
|
| | | g.setProvcity(goods.getProvcity());
|
| | | return g;
|
| | | }
|
| | | }
|
| | |
|
| | | // 从转链搜索
|
| | | TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
|
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
|
| | | TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT), specialId, relationId);
|
| | |
|
| | | if (newGoods != null) {
|
| | | goods.setTkRate(newGoods.getTkRate());
|
| | | if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) {
|
| | | List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo());
|
| | | if (couponInfo != null && couponInfo.size() > 1) {
|
| | | goods.setCouponStartFee(couponInfo.get(0));
|
| | | goods.setCouponAmount(couponInfo.get(1));
|
| | | goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
|
| | | goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
|
| | | goods.setCouponLeftCount(newGoods.getCouponLeftCount());
|
| | | goods.setCouponTotalCount(newGoods.getCouponTotalCount());
|
| | | goods.setCouponInfo(newGoods.getCouponInfo());
|
| | | }
|
| | | }
|
| | |
|
| | | return goods;
|
| | |
|
| | | } else {
|
| | | goods.setCouponAmount(new BigDecimal("0"));
|
| | | goods.setTkMktStatus("1");
|
| | | goods.setTkRate(new BigDecimal("0"));
|
| | | goods.setReservePrice(new BigDecimal(0));
|
| | | goods.setTkCommFee(new BigDecimal(0));
|
| | | return goods;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public static TaoBaoGoodsBrief searchGoodsDetail(Long id) throws TaobaoGoodsDownException {
|
| | | return searchGoodsDetail(id, null,null);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 搜索商品详情-详细
|
| | | *
|
| | | * @param id
|
| | | * @return
|
| | | * @throws TaobaoGoodsDownException
|
| | | */
|
| | | public static TaoBaoGoodsBrief searchGoodsDetail(Long id, TaoKeAppInfo app) throws TaobaoGoodsDownException {
|
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
|
| | | if (goods == null)
|
| | | return null;
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(goods.getTitle());
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(50);
|
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(),
|
| | | 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 (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) {
|
| | | // 获取优惠券详情
|
| | | QuanInfo quanInfo = getQuanInfo(g.getAuctionId(), g.getCouponActivityId());
|
| | | if (quanInfo != null) {
|
| | | g.setCouponAmount(quanInfo.coupon_amount);
|
| | | g.setCouponEffectiveEndTime(quanInfo.coupon_end_time);
|
| | | g.setCouponEffectiveStartTime(quanInfo.coupon_start_time);
|
| | | g.setCouponLeftCount(quanInfo.coupon_remain_count);
|
| | | g.setCouponStartFee(quanInfo.coupon_start_fee);
|
| | | g.setCouponTotalCount(quanInfo.coupon_total_count);
|
| | | }
|
| | | } else {
|
| | | g.setCouponAmount(new BigDecimal(0));
|
| | | g.setCouponStartFee(new BigDecimal(0));
|
| | | }
|
| | | g.setCreatetime(new Date());
|
| | | g.setMaterialLibType(goods.getMaterialLibType());
|
| | | g.setProvcity(goods.getProvcity());
|
| | | return g;
|
| | | }
|
| | | }
|
| | |
|
| | | // 从转链搜索
|
| | | TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
|
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
|
| | | TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT), null, null);
|
| | |
|
| | | if (newGoods != null) {
|
| | | goods.setTkRate(newGoods.getTkRate());
|
| | | if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) {
|
| | | List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo());
|
| | | if (couponInfo != null && couponInfo.size() > 1) {
|
| | | goods.setCouponStartFee(couponInfo.get(0));
|
| | | goods.setCouponAmount(couponInfo.get(1));
|
| | | goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime());
|
| | | goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime());
|
| | | goods.setCouponLeftCount(newGoods.getCouponLeftCount());
|
| | | goods.setCouponTotalCount(newGoods.getCouponTotalCount());
|
| | | goods.setCouponInfo(newGoods.getCouponInfo());
|
| | | }
|
| | | }
|
| | |
|
| | | return goods;
|
| | |
|
| | | } else {
|
| | | goods.setCouponAmount(new BigDecimal("0"));
|
| | | goods.setTkMktStatus("1");
|
| | | goods.setTkRate(new BigDecimal("0"));
|
| | | goods.setReservePrice(new BigDecimal(0));
|
| | | goods.setTkCommFee(new BigDecimal(0));
|
| | | return goods;
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 物料转链
|
| | | *
|
| | | * @param id
|
| | | * @param app
|
| | | * @return
|
| | | * @throws TaobaoGoodsDownException
|
| | | */
|
| | | public static TaoBaoGoodsBrief searchGoodsDetailForConvert(Long id, TaoKeAppInfo app, String specialId, String relationId)
|
| | | throws TaobaoGoodsDownException {
|
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
|
| | | if (goods == null)
|
| | | return null;
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(goods.getTitle());
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(50);
|
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(),
|
| | | 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());
|
| | | g.setCreatetime(new Date());
|
| | | return g;
|
| | | }
|
| | | }
|
| | |
|
| | | TaoKeLogHelper.error(null, "没有搜索到详情:" + id);
|
| | | goods.setCouponAmount(new BigDecimal("0"));
|
| | | goods.setTkMktStatus("1");
|
| | | goods.setTkRate(new BigDecimal("0"));
|
| | | goods.setReservePrice(new BigDecimal(0));
|
| | | goods.setTkCommFee(new BigDecimal(0));
|
| | | return goods;
|
| | | }
|
| | |
|
| | | public static List<TaoBaoGoodsBrief> searchBatchGoodsDetail(String ids) throws TaobaoGoodsDownException {
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsBriefList = getBatchGoodsInfos(ids);
|
| | |
|
| | | if (goodsBriefList == null || goodsBriefList.size() == 0) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | // System.out.println("---------goodsBriefList--------------:"+
|
| | | // goodsBriefList.size());
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | |
|
| | | for (TaoBaoGoodsBrief goods : goodsBriefList) {
|
| | |
|
| | | boolean pross = false;
|
| | |
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(goods.getTitle());
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(50);
|
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(),
|
| | | 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());
|
| | | g.setAuctionUrl(goods.getAuctionUrl());
|
| | | g.setShopTitle(goods.getShopTitle());
|
| | |
|
| | | // 判断是否有优惠券
|
| | | if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) {
|
| | | // 获取优惠券详情
|
| | | QuanInfo quanInfo = getQuanInfo(g.getAuctionId(), g.getCouponActivityId());
|
| | | if (quanInfo != null) {
|
| | | g.setCouponAmount(quanInfo.coupon_amount);
|
| | | g.setCouponEffectiveEndTime(quanInfo.coupon_end_time);
|
| | | g.setCouponEffectiveStartTime(quanInfo.coupon_start_time);
|
| | | g.setCouponLeftCount(quanInfo.coupon_remain_count);
|
| | | g.setCouponStartFee(quanInfo.coupon_start_fee);
|
| | | g.setCouponTotalCount(quanInfo.coupon_total_count);
|
| | | }
|
| | | } else {
|
| | | g.setCouponAmount(new BigDecimal(0));
|
| | | g.setCouponStartFee(new BigDecimal(0));
|
| | | }
|
| | | g.setCreatetime(new Date());
|
| | | goodsList.add(g);
|
| | | pross = true;
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | if (pross)
|
| | | continue;
|
| | |
|
| | | // 再从淘宝联盟网页搜索
|
| | | filter.setKey(goods.getAuctionUrl());
|
| | | TaoBaoSearchResult searchResult = TaoBaoUtil.searchFromAlimamaWeb(filter, null);
|
| | | if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
|
| | | && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
|
| | | for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
|
| | | if (g.getAuctionId().longValue() == goods.getAuctionId()) {
|
| | | g.setImgList(goods.getImgList());
|
| | | g.setId(goods.getAuctionId());
|
| | | g.setAuctionUrl(goods.getAuctionUrl());
|
| | | g.setShopTitle(goods.getShopTitle());
|
| | |
|
| | | goods = g;
|
| | | if ("无".equalsIgnoreCase(goods.getCouponInfo()))
|
| | | goods.setCouponInfo(null);
|
| | |
|
| | | goodsList.add(goods);
|
| | | pross = true;
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (pross)
|
| | | continue;
|
| | |
|
| | | goods.setCouponAmount(new BigDecimal("0"));
|
| | | goods.setTkMktStatus("1");
|
| | | goods.setTkRate(new BigDecimal("0"));
|
| | | goods.setReservePrice(new BigDecimal(0));
|
| | | goods.setTkCommFee(new BigDecimal(0));
|
| | |
|
| | | goodsList.add(goods);
|
| | | }
|
| | |
|
| | | return goodsList;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 商品物料搜索
|
| | | *
|
| | | * @param filter
|
| | | * @param specialId
|
| | | * @param relationId
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoSearchResult searchWuLiao(SearchFilter filter, String specialId, String relationId) {
|
| | |
|
| | | if (filter.getKey() != null && filter.getKey().trim().equalsIgnoreCase(""))
|
| | | return null;
|
| | |
|
| | | if (filter.getKey() != null && filter.getKey().length() > 100)
|
| | | return null;
|
| | |
|
| | | PageEntity pageEntity = new PageEntity();
|
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | 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()) + "");
|
| | | 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);
|
| | | 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")
|
| | | .optJSONArray("map_data");
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | if (array != null) {
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i));
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | }
|
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList);
|
| | |
|
| | | 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;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 商品物料搜索
|
| | | *
|
| | | * @param title
|
| | | * @param zkPrice
|
| | | * @param provcity
|
| | | * @param userType
|
| | | * @param specialId
|
| | | * @param relationId
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoSearchResult searchWuLiaoForDetail(String title, BigDecimal zkPrice, String provcity,
|
| | | int userType, String specialId, String relationId) {
|
| | | if (provcity.trim().contains(" "))
|
| | | provcity = provcity.split(" ")[provcity.split(" ").length - 1];
|
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.material.optional");
|
| | | map.put("page_size", 50 + "");
|
| | | map.put("page_no", 1 + "");
|
| | | map.put("start_price", (int) zkPrice.subtract(new BigDecimal(1)).doubleValue() + "");
|
| | | map.put("end_price", (int) zkPrice.add(new BigDecimal(1)).doubleValue() + "");
|
| | | map.put("is_tmall", (userType == 1) + "");
|
| | | map.put("q", title);
|
| | | map.put("itemloc", provcity);
|
| | |
|
| | | 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);
|
| | | }
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | JSONObject data = JSONObject.fromObject(resultStr);
|
| | | 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")
|
| | | .optJSONArray("map_data");
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | if (array != null) {
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i));
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | }
|
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList);
|
| | | }
|
| | |
|
| | | List<TaoBaoSearchNav> navList = new ArrayList<>();
|
| | |
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound(1000);
|
| | | taoBaoSearchResult.setTaoBaoHead(taoBaoHead);
|
| | | taoBaoSearchResult.setPageEntity(new PageEntity());
|
| | |
|
| | | taoBaoSearchResult.setNavList(navList);
|
| | |
|
| | | return taoBaoSearchResult;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 商品物料搜索
|
| | | *
|
| | | * @param title
|
| | | * @param zkPrice
|
| | | * @param provcity
|
| | | * @param userType
|
| | | * @param app
|
| | | * @param specialId
|
| | | * @param relationId
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoSearchResult searchWuLiaoForDetail(String title, BigDecimal zkPrice, String provcity,
|
| | | int userType, TaoKeAppInfo app, String specialId, String relationId) {
|
| | | if (provcity.trim().contains(" "))
|
| | | provcity = provcity.split(" ")[provcity.split(" ").length - 1];
|
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.material.optional");
|
| | | map.put("page_size", 50 + "");
|
| | | map.put("page_no", 1 + "");
|
| | | map.put("start_price", (int) zkPrice.subtract(new BigDecimal(1)).doubleValue() + "");
|
| | | map.put("end_price", (int) zkPrice.add(new BigDecimal(1)).doubleValue() + "");
|
| | | map.put("is_tmall", (userType == 1) + "");
|
| | | map.put("q", title);
|
| | | map.put("itemloc", provcity);
|
| | | 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);
|
| | | }
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
|
| | | JSONObject data = JSONObject.fromObject(resultStr);
|
| | | 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")
|
| | | .optJSONArray("map_data");
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | if (array != null) {
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i));
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | }
|
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList);
|
| | | }
|
| | |
|
| | | List<TaoBaoSearchNav> navList = new ArrayList<>();
|
| | |
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound(1000);
|
| | | taoBaoSearchResult.setTaoBaoHead(taoBaoHead);
|
| | | taoBaoSearchResult.setPageEntity(new PageEntity());
|
| | |
|
| | | taoBaoSearchResult.setNavList(navList);
|
| | |
|
| | | return taoBaoSearchResult;
|
| | | }
|
| | |
|
| | | // 解析物料
|
| | | private static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
|
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
|
| | | goods.setPictUrl(item.optString("pict_url"));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("white_image"))) {
|
| | | goods.setPictUrlWhite(item.optString("white_image"));
|
| | | }
|
| | |
|
| | | goods.setAuctionId(item.optLong("num_iid"));
|
| | | goods.setAuctionUrl("https:" + item.optString("url"));
|
| | | goods.setBiz30day(item.optInt("volume"));
|
| | | goods.setCouponInfo(item.optString("coupon_info"));
|
| | |
|
| | | if (goods.getCouponInfo() != null)
|
| | | goods.setCouponInfo(goods.getCouponInfo().replace(".00", ""));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) {
|
| | | 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(new BigDecimal(item.optString("coupon_start_fee")));
|
| | | goods.setCouponLeftCount(item.optInt("coupon_remain_count"));
|
| | | goods.setCouponLink("https:" + item.optString("coupon_share_url"));
|
| | | goods.setCouponTotalCount(item.optInt("coupon_total_count"));
|
| | | goods.setCouponActivityId(item.optString("coupon_id"));
|
| | | } else {
|
| | | goods.setCouponAmount(new BigDecimal(0));
|
| | | }
|
| | |
|
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | | if (item.optBoolean("include_mkt"))
|
| | | goods.setTkMktStatus("1");
|
| | | else
|
| | | goods.setTkMktStatus("0");
|
| | |
|
| | | if (item.optBoolean("include_dxjh"))
|
| | | goods.setIncludeDxjh(1);
|
| | |
|
| | | goods.setSellerId(item.optLong("seller_id"));
|
| | | goods.setShopTitle(item.optString("shop_title"));
|
| | | goods.setTitle(item.optString("title"));
|
| | | goods.setProvcity(item.optString("provcity"));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("level_one_category_id"))) {
|
| | | goods.setRootCatId(item.optInt("level_one_category_id"));
|
| | | }
|
| | | goods.setRootCategoryName(item.optString("level_one_category_name"));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("category_id"))) {
|
| | | goods.setLeafCatId(item.optInt("category_id"));
|
| | | }
|
| | | goods.setLeafName(item.optString("category_name"));
|
| | |
|
| | | goods.setTkRate(new BigDecimal(item.optString("commission_rate")).divide(new BigDecimal(100)));
|
| | | goods.setTotalNum(1000);
|
| | | goods.setUserType(item.optInt("user_type"));
|
| | | goods.setUserTypeName("");
|
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
|
| | |
|
| | | if (item.optBoolean("include_dxjh")) {
|
| | | goods.setDxjhInfo(item.optString("info_dxjh"));
|
| | | }
|
| | |
|
| | | 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(item.optString("reserve_price")))
|
| | | goods.setReservePrice(new BigDecimal(item.optString("reserve_price")));
|
| | | goods.setTotalFee(new BigDecimal("0"));
|
| | | // 推荐语
|
| | | goods.setDescription(item.optString("item_description"));
|
| | |
|
| | | goods = loadYuShouInfo(goods, item);
|
| | | return goods;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取淘口令
|
| | | *
|
| | | * @param logo -图标
|
| | | * @param text -文字
|
| | | * @param url -简介
|
| | | * @return
|
| | | */
|
| | | public static String getTKToken(String logo, String text, String url) {
|
| | | if (text == null)
|
| | | return null;
|
| | | if (text.length() < 5)
|
| | | text = "好货:" + text;
|
| | |
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.tpwd.create");
|
| | | map.put("url", url);
|
| | | map.put("text", text);
|
| | | map.put("logo", logo);
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | |
|
| | | JSONObject data = JSONObject.fromObject(resultStr);
|
| | | if (data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data") != null)
|
| | | return data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data").optString("model");
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取券详细信息
|
| | | *
|
| | | * @param auctionId
|
| | | * @param activityId
|
| | | * @return
|
| | | */
|
| | | public static QuanInfo getQuanInfo(Long auctionId, String activityId) {
|
| | | QuanInfo info = new TaoKeApiUtil.QuanInfo();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.coupon.get");
|
| | | map.put("item_id", auctionId + "");
|
| | | map.put("activity_id", activityId);
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | JSONObject data = JSONObject.fromObject(resultStr);
|
| | | if (data.optJSONObject("tbk_coupon_get_response") != null) {
|
| | | data = data.optJSONObject("tbk_coupon_get_response").optJSONObject("data");
|
| | | info.coupon_start_time = data.optString("coupon_start_time");
|
| | | info.coupon_end_time = data.optString("coupon_end_time");
|
| | | info.coupon_amount = new BigDecimal(data.optString("coupon_amount"));
|
| | | info.coupon_total_count = data.optInt("coupon_total_count");
|
| | | info.coupon_remain_count = data.optInt("coupon_remain_count");
|
| | | info.coupon_start_fee = new BigDecimal(data.optString("coupon_start_fee"));
|
| | | } else
|
| | | return null;
|
| | | return info;
|
| | | }
|
| | |
|
| | | public static void taoQiangGou() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.ju.tqg.get");
|
| | | map.put("fields",
|
| | | "click_url,pic_url,reserve_price,zk_final_price,total_amount,sold_num,title,category_name,start_time,end_time");
|
| | | map.put("start_time", "2018-06-11 08:00:00");
|
| | | map.put("end_time", "2018-06-12 12:00:00");
|
| | | map.put("page_no", "1");
|
| | | map.put("page_size", "96");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | public static TaoBaoSearchResult taoQiangGou(int page, int pageSize, String startTime, String endTime) {
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | |
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.ju.tqg.get");
|
| | | map.put("fields",
|
| | | "click_url,pic_url,reserve_price,zk_final_price,total_amount,sold_num,title,category_name,start_time,end_time");
|
| | | map.put("start_time", startTime);
|
| | | map.put("end_time", endTime);
|
| | | map.put("page_no", page + "");
|
| | | map.put("page_size", pageSize + "");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | |
|
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr);
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_ju_tqg_get_response");
|
| | | if (response != null && response.optJSONObject("results") != null) {
|
| | | JSONArray array = response.optJSONObject("results").optJSONArray("results");
|
| | | if (array != null) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | String url = item.optString("click_url");
|
| | |
|
| | | // 排除 非淘客商品
|
| | | if (url.contains("s.click.taobao.com/t?e=m")) {
|
| | | TaoBaoGoodsBrief goods;
|
| | | try {
|
| | | goods = searchGoodsDetail(item.optLong("num_iid"));
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | } catch (TaobaoGoodsDownException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | |
|
| | | pageSize = array.size();
|
| | | }
|
| | | }
|
| | |
|
| | | TaoBaoSearchResult result = new TaoBaoSearchResult();
|
| | | result.setTaoBaoGoodsBriefs(goodsList);
|
| | |
|
| | | int totalResults = response.getInt("total_results");
|
| | |
|
| | | PageEntity pe = new PageEntity(page, pageSize, totalResults);
|
| | | result.setPageEntity(pe);
|
| | | result.setNavList(new ArrayList<>());
|
| | |
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
|
| | |
|
| | | result.setTaoBaoHead(taoBaoHead);
|
| | |
|
| | | return result;
|
| | | }
|
| | |
|
| | | /*
|
| | | * TODO 获取分类列表
|
| | | */
|
| | | public static void getTaoBaoCategoryList() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.itemcats.get");
|
| | | map.put("parent_cid", "0");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 店铺搜索
|
| | | *
|
| | | * @param key -店铺名称
|
| | | * @param page -页码
|
| | | * @return
|
| | | */
|
| | | public static List<TaoBaoShopInfo> searchShop(String key, int page) {
|
| | | if (StringUtil.isNullOrEmpty(key))
|
| | | return new ArrayList<>();
|
| | | List<TaoBaoShopInfo> list = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.shop.get");
|
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url");
|
| | | map.put("q", key);
|
| | | map.put("page_size", "95");
|
| | | map.put("page_no", page + "");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | JSONObject resultDate = JSONObject.fromObject(resultStr);
|
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null
|
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) {
|
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results")
|
| | | .optJSONArray("n_tbk_shop");
|
| | | if (array != null)
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoShopInfo info = new TaoBaoShopInfo();
|
| | | info.setPictureUrl(item.optString("pict_url"));
|
| | | info.setSellerNick(item.optString("seller_nick"));
|
| | | info.setShopTitle(item.optString("shop_title"));
|
| | | info.setShopType(item.optString("shop_type"));
|
| | | info.setShopUrl(item.optString("shop_url"));
|
| | | info.setUserId(item.optLong("user_id"));
|
| | | list.add(info);
|
| | | }
|
| | | }
|
| | | return list;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 店铺搜索
|
| | | *
|
| | | * @param key -店铺名称
|
| | | * @param page -页码
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoShopInfoDTO searchShop(String key, int page, int pageSize) {
|
| | | TaoBaoShopInfoDTO dto = new TaoBaoShopInfoDTO();
|
| | | if (StringUtil.isNullOrEmpty(key))
|
| | | return dto;
|
| | |
|
| | | PageEntity pageEntity = new PageEntity();
|
| | | List<TaoBaoShopInfo> list = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.shop.get");
|
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url");
|
| | | map.put("q", key);
|
| | | map.put("page_size", pageSize + "");
|
| | | map.put("page_no", page + "");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | JSONObject resultDate = JSONObject.fromObject(resultStr);
|
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null
|
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) {
|
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results")
|
| | | .optJSONArray("n_tbk_shop");
|
| | | if (array != null) {
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoShopInfo info = new TaoBaoShopInfo();
|
| | | info.setPictureUrl(item.optString("pict_url"));
|
| | | info.setSellerNick(item.optString("seller_nick"));
|
| | | info.setShopTitle(item.optString("shop_title"));
|
| | | info.setShopType(item.optString("shop_type"));
|
| | | info.setShopUrl(item.optString("shop_url"));
|
| | | info.setUserId(item.optLong("user_id"));
|
| | | list.add(info);
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject optJSONObject = resultDate.optJSONObject("tbk_shop_get_response");
|
| | | int totalResults = optJSONObject.getInt("total_results");
|
| | | int totalPage = totalResults % pageSize == 0 ? totalResults / pageSize : totalResults / pageSize + 1;
|
| | | pageEntity.setTotalCount(totalResults);
|
| | | pageEntity.setTotalPage(totalPage);
|
| | | }
|
| | | pageEntity.setPageIndex(page);
|
| | | pageEntity.setPageSize(pageSize);
|
| | |
|
| | | dto.setListInfo(list);
|
| | | dto.setPage(pageEntity);
|
| | | return dto;
|
| | | }
|
| | |
|
| | | /**
|
| | | * @param filter
|
| | | * @return
|
| | | */
|
| | | public static List<TaoBaoShopInfo> searchShop(SearchShopFilter filter) {
|
| | | if (StringUtil.isNullOrEmpty(filter.getKey()))
|
| | | return new ArrayList<>();
|
| | | List<TaoBaoShopInfo> list = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.shop.get");
|
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url");
|
| | | map.put("q", filter.getKey());
|
| | | map.put("page_size", filter.getPageSize() + "");
|
| | | map.put("page_no", filter.getPage() + "");
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter.getSort()))
|
| | | map.put("sort", filter.getSort());
|
| | |
|
| | | if (filter.getTmall() != null)
|
| | | map.put("is_tmall", filter.getTmall() + "");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | JSONObject resultDate = JSONObject.fromObject(resultStr);
|
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null
|
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) {
|
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results")
|
| | | .optJSONArray("n_tbk_shop");
|
| | | if (array != null)
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoShopInfo info = new TaoBaoShopInfo();
|
| | | info.setPictureUrl(item.optString("pict_url"));
|
| | | info.setSellerNick(item.optString("seller_nick"));
|
| | | info.setShopTitle(item.optString("shop_title"));
|
| | | info.setShopType(item.optString("shop_type"));
|
| | | info.setShopUrl(item.optString("shop_url"));
|
| | | info.setUserId(item.optLong("user_id"));
|
| | | list.add(info);
|
| | | }
|
| | | }
|
| | | return list;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 品牌券获取
|
| | | *
|
| | | * @param pageNo
|
| | | * @param pageSize
|
| | | */
|
| | | public static void pingPaiCoupon(int pageNo, int pageSize) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.coupon.brand.recommend");
|
| | | map.put("page_no", pageNo + "");
|
| | | map.put("page_size", pageSize + "");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | public static void getOrder(String order) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "alibaba.mos.order.get");
|
| | | map.put("order_number", order);
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | public static void getTAEGoodsDetail(Long 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");
|
| | | map.put("num_iids", auctionId + "");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | // taobao.ju.items.search
|
| | | public static void searchJuHuaSuan() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.ju.items.search");
|
| | | map.put("current_page", "1");
|
| | | map.put("page_size", 20 + "");
|
| | | map.put("pid", "mm_124933865_43788020_381938426");
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, false);
|
| | | System.out.println(resultStr);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 通过物料ID获取商品信息
|
| | | *
|
| | | * @param materialId -物料ID
|
| | | * @param page -页码
|
| | | * @param pageSize -每页数量
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoSearchResult getMaterialByMaterialId(int materialId, int page, int pageSize) {
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.optimus.material");
|
| | | map.put("page_no", page + "");
|
| | | map.put("page_size", pageSize + "");
|
| | | map.put("material_id", materialId + "");
|
| | | // map.put("content_id", "561388751621");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | System.out.println(resultStr);
|
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr);
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
|
| | | if (response != null && response.optJSONObject("result_list") != null) {
|
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
|
| | | if (array != null) {
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | pageSize = array.size();
|
| | | }
|
| | | }
|
| | | TaoBaoSearchResult result = new TaoBaoSearchResult();
|
| | | result.setTaoBaoGoodsBriefs(goodsList);
|
| | | int totalCount = 1000;// root.optInt("total_results");
|
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount);
|
| | | result.setPageEntity(pe);
|
| | | result.setNavList(new ArrayList<>());
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
|
| | | result.setTaoBaoHead(taoBaoHead);
|
| | | return result;
|
| | | }
|
| | |
|
| | | public static TaoBaoSearchResult getQTZMaterialByMaterialId(int materialId, int page, int pageSize) {
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.optimus.material");
|
| | | map.put("page_no", page + "");
|
| | | map.put("page_size", pageSize + "");
|
| | | map.put("material_id", materialId + "");
|
| | |
|
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
|
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr);
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
|
| | | if (response != null && response.optJSONObject("result_list") != null) {
|
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
|
| | | if (array != null) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | |
|
| | | pageSize = array.size();
|
| | | }
|
| | | }
|
| | | TaoBaoSearchResult result = new TaoBaoSearchResult();
|
| | | result.setTaoBaoGoodsBriefs(goodsList);
|
| | | int totalCount = 1000;// root.optInt("total_results");
|
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount);
|
| | | result.setPageEntity(pe);
|
| | | result.setNavList(new ArrayList<>());
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
|
| | | result.setTaoBaoHead(taoBaoHead);
|
| | | return result;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 根据设备猜你喜欢
|
| | | *
|
| | | * @param page
|
| | | * @param pageSize
|
| | | * @param imei
|
| | | * @param idfa
|
| | | * @return
|
| | | */
|
| | | public static TaoBaoSearchResult guessDeviceLike(int page, int pageSize, String imei, String idfa, String utdid) {
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.optimus.material");
|
| | | map.put("page_no", page + "");
|
| | | map.put("page_size", pageSize + "");
|
| | | map.put("material_id", "6708");
|
| | | if (StringUtil.isNullOrEmpty(imei) && StringUtil.isNullOrEmpty(idfa) && StringUtil.isNullOrEmpty(utdid))
|
| | | return null;
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(imei)) {
|
| | | map.put("device_encrypt", "MD5");
|
| | | map.put("device_value", StringUtil.Md5(imei));
|
| | | map.put("device_type", "IMEI");
|
| | | } else if (!StringUtil.isNullOrEmpty(idfa)) {
|
| | | map.put("device_encrypt", "MD5");
|
| | | map.put("device_value", StringUtil.Md5(idfa));
|
| | | map.put("device_type", "IDFA");
|
| | | } else if (!StringUtil.isNullOrEmpty(utdid)) {
|
| | | map.put("device_value", utdid);
|
| | | map.put("device_type", "UTDID");
|
| | | }
|
| | |
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, true);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (resultJSON == null)
|
| | | return null;
|
| | |
|
| | | // JSONObject resultJSON = JSONObject.fromObject(resultStr);
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
|
| | | if (response != null && response.optJSONObject("result_list") != null) {
|
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
|
| | | if (array != null) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | |
|
| | | pageSize = array.size();
|
| | | }
|
| | | }
|
| | | TaoBaoSearchResult result = new TaoBaoSearchResult();
|
| | | result.setTaoBaoGoodsBriefs(goodsList);
|
| | | int totalCount = 1000;// root.optInt("total_results");
|
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount);
|
| | | result.setPageEntity(pe);
|
| | | result.setNavList(new ArrayList<>());
|
| | | TaoBaoHead taoBaoHead = new TaoBaoHead();
|
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount());
|
| | | result.setTaoBaoHead(taoBaoHead);
|
| | | return result;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 从淘宝链接中解析商品ID(高级接口)
|
| | | *
|
| | | * @param link
|
| | | * @return
|
| | | */
|
| | | public static String parseAuctionIdFromLink(String link) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.item.click.extract");
|
| | | map.put("click_url", link + "");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
|
| | | TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(resultJSON);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (resultJSON == null)
|
| | | return null;
|
| | |
|
| | | return null;
|
| | |
|
| | | }
|
| | |
|
| | | public static String getAccessToken(String code, String appKey, String appSecret) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.top.auth.token.create");
|
| | | map.put("code", code);
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | if (json != null)
|
| | | return json.toString();
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 渠道邀请码
|
| | | *
|
| | | * @param relationId
|
| | | * @return
|
| | | */
|
| | | public static String getInviteCode(Long relationId, String accessToken, String appKey, String appSecret) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.invitecode.get");
|
| | | map.put("session", accessToken);
|
| | | map.put("code_type", "1");
|
| | | map.put("relation_app", "common");
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (resultJSON == null)
|
| | | return null;
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取渠道邀请码
|
| | | *
|
| | | * @param accessToken
|
| | | * @param appKey
|
| | | * @param appSecret
|
| | | * @return
|
| | | */
|
| | | public static String getRootRelationInviteCode(String accessToken, String appKey, String appSecret) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.invitecode.get");
|
| | | map.put("session", accessToken);
|
| | | map.put("code_type", "1");
|
| | | map.put("relation_app", "common");
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (resultJSON == null)
|
| | | return null;
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static String getRootSpecialInviteCode(String accessToken, String appKey, String appSecret) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.invitecode.get");
|
| | | map.put("session", accessToken);
|
| | | map.put("code_type", "3");
|
| | | map.put("relation_app", "common");
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | return resultJSON.optJSONObject("tbk_sc_invitecode_get_response").optJSONObject("data")
|
| | | .optString("inviter_code");
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (resultJSON == null)
|
| | | return null;
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static String getRelationId(String accessToken, String appKey, String appSecret) throws TaoBaoAuthException {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.publisher.info.save");
|
| | | map.put("session", accessToken);
|
| | | map.put("inviter_code", "A2QnGL");
|
| | | map.put("info_type", "1");
|
| | | map.put("online_scene", "1");
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(resultJSON.toString());
|
| | | return resultJSON.optJSONObject("tbk_sc_publisher_info_save_response").optJSONObject("data")
|
| | | .optString("relation_id");
|
| | | } catch (TaoKeApiException e) {
|
| | | JSONObject errorJSON = JSONObject.fromObject(e.getMsg()).optJSONObject("error_response");
|
| | | if (errorJSON.optInt("code") == 15 && errorJSON.optInt("sub_code") == 1)// 未实名
|
| | | {
|
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_NOT_REAL_NAME, errorJSON.optString("sub_msg"));
|
| | | } else {
|
| | | e.printStackTrace();
|
| | | LogHelper.error("渠道ID申请出错:" + e.getMsg());
|
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_OTHER, errorJSON.optString("sub_msg"));
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.error("渠道ID申请出错:" + (resultJSON != null ? resultJSON.toString() : "未知错误"));
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static String getSpecialId(String accessToken, String appKey, String appSecret) throws TaoBaoAuthException {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.sc.publisher.info.save");
|
| | | map.put("session", accessToken);
|
| | | map.put("inviter_code", "AA5ISJ");
|
| | | map.put("info_type", "1");
|
| | | map.put("online_scene", "1");
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(appKey);
|
| | | app.setAppSecret(appSecret);
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app);
|
| | | return resultJSON.optJSONObject("tbk_sc_publisher_info_save_response").optJSONObject("data")
|
| | | .optString("special_id");
|
| | | } catch (TaoKeApiException e) {
|
| | | JSONObject errorJSON = JSONObject.fromObject(e.getMsg()).optJSONObject("error_response");
|
| | | if (errorJSON.optInt("code") == 15 && errorJSON.optInt("sub_code") == 1)// 未实名
|
| | | {
|
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_NOT_REAL_NAME, errorJSON.optString("sub_msg"));
|
| | | } else {
|
| | | e.printStackTrace();
|
| | | LogHelper.error("会员运营ID申请出错:" + e.getMsg());
|
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_OTHER, errorJSON.optString("sub_msg"));
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.error("会员运营ID申请出错:" + (resultJSON != null ? resultJSON.toString() : "未知错误"));
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static void specialConvertItem(Long auctionId, TaoKeAppInfo app) {
|
| | | String pid = app.getPid();
|
| | | String[] sts = pid.split("_");
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.item.convert");
|
| | | map.put("num_iids", auctionId + "");
|
| | | map.put("fields", "num_iid,click_url");
|
| | | map.put("adzone_id", sts[3]);
|
| | | map.put("platform", "2");
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json.toString());
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | public static TaoBaoGoodsBrief specialConvertCoupon(Long 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.coupon.convert");
|
| | | map.put("item_id", auctionId + "");
|
| | | map.put("adzone_id", sts[3]);
|
| | |
|
| | | if (System.currentTimeMillis() > TimeUtil.convertToTimeTemp("2020-07-22", "yyyy-MM-dd")) {
|
| | | 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);
|
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | JSONObject resultJSON = json.optJSONObject("tbk_coupon_convert_response").optJSONObject("result")
|
| | | .optJSONObject("results");
|
| | | String couponLink = resultJSON.optString("coupon_click_url");
|
| | | String itemLink = resultJSON.optString("item_url");
|
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
|
| | | goods.setAuctionUrl(itemLink);
|
| | | 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"));
|
| | |
|
| | | }
|
| | | String tkRate = resultJSON.optString("max_commission_rate");
|
| | | if (StringUtil.isNullOrEmpty(tkRate)) {
|
| | | tkRate = resultJSON.optString("min_commission_rate");
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(tkRate)) {
|
| | | goods.setTkRate(new BigDecimal(tkRate));
|
| | | }
|
| | | goods = loadYuShouInfo(goods, resultJSON);
|
| | | return goods;
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static void juHuaSuan() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.ju.items.search");
|
| | | map.put("current_page", 1 + "");
|
| | | map.put("page_size", 100 + "");
|
| | | map.put("pid", "mm_124933865_43788020_381938426");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey("24838852");
|
| | | app.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8");
|
| | |
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public static void taoKeContent() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.content.get");
|
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT.split("_")[3]);
|
| | | map.put("type", "1");
|
| | | map.put("count", "100");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | public static void taoKeContentSource(String contentId, String source) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.optimus.material");
|
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]);
|
| | | map.put("page_size", "10");
|
| | | map.put("page_no", "1");
|
| | | map.put("content_id", contentId);
|
| | | map.put("content_source", source);
|
| | | map.put("material_id", "1");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | // 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.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId());
|
| | | 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"));
|
| | | goods.setCouponStartFee(new BigDecimal(item.optString("coupon_start_fee")));
|
| | | goods.setCouponLeftCount(item.optInt("coupon_remain_count"));
|
| | | goods.setCouponLink(null);
|
| | | goods.setCouponAmount(new BigDecimal(item.optString("coupon_amount")));
|
| | | goods.setCouponTotalCount(item.optInt("coupon_total_count"));
|
| | | goods.setCouponActivityId(item.optString("coupon_id"));
|
| | | if (goods.getCouponStartFee().compareTo(new BigDecimal(0)) > 0)
|
| | | goods.setCouponInfo(String.format("满%s元减%s元",
|
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponStartFee()).toString(),
|
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString()));
|
| | | else
|
| | | goods.setCouponInfo(String.format("%s元无条件券",
|
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString()));
|
| | |
|
| | | if (goods.getCouponStartFee().compareTo(new BigDecimal(0)) <= 0) {
|
| | | goods.setCouponStartFee(goods.getCouponAmount());
|
| | | }
|
| | |
|
| | | } else {
|
| | | goods.setCouponAmount(new BigDecimal(0));
|
| | | }
|
| | |
|
| | | 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.setTkMktStatus("0");
|
| | | goods.setIncludeDxjh(0);
|
| | |
|
| | | goods.setSellerId(item.optLong("seller_id"));
|
| | | goods.setShopTitle(item.optString("nick"));
|
| | | goods.setTitle(item.optString("title"));
|
| | | goods.setProvcity(item.optString("provcity"));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("level_one_category_id"))) {
|
| | | goods.setRootCatId(item.optInt("level_one_category_id"));
|
| | | }
|
| | | goods.setRootCategoryName(item.optString("level_one_category_name"));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("category_id"))) {
|
| | | goods.setLeafCatId(item.optInt("category_id"));
|
| | | }
|
| | | goods.setLeafName(item.optString("category_name"));
|
| | |
|
| | | goods.setTotalNum(1000);
|
| | | goods.setUserType(item.optInt("user_type"));
|
| | | goods.setUserTypeName("");
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("commission_rate"))) {
|
| | | goods.setTkRate(new BigDecimal(item.optString("commission_rate")));
|
| | | } else {
|
| | | goods.setTkRate(new BigDecimal(0));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(item.optString("zk_final_price"))) {
|
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price")));
|
| | | } else {
|
| | | goods.setZkPrice(new BigDecimal(0));
|
| | | }
|
| | |
|
| | | 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));
|
| | | }
|
| | | goods.setReservePrice(new BigDecimal(0));
|
| | | goods.setTotalFee(new BigDecimal("0"));
|
| | | goods.setPictUrlWhite(item.optString("white_image"));
|
| | | goods = loadYuShouInfo(goods, item);
|
| | | return goods;
|
| | | }
|
| | |
|
| | | public static void getShopGoodsList(Long shopId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "tmall.omni.pc.iteminfo.getbyshopid");
|
| | | map.put("shop_id", shopId + "");
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey("24838852");
|
| | | app.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8");
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | public static void getTaoKeContentEffective() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.optimus.material");
|
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID.split("_")[3]);
|
| | | map.put("page_no", "1");
|
| | | map.put("page_size", "20");
|
| | | map.put("content_id", "8872035");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public static void getTaoKeContent() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.content.get");
|
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID.split("_")[3]);
|
| | | map.put("type", "1");
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.println(json);
|
| | | } catch (TaoKeApiException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | /**
|
| | | * 淘口令转商品ID
|
| | | *
|
| | | * @param token
|
| | | * @return
|
| | | */
|
| | | public static Long tokenConvertAuctionId(String token) throws TaoBaoTokenParseException {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.tpwd.convert");
|
| | | map.put("password_content", token);
|
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT.split("_")[3]);
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | |
|
| | | try {
|
| | | return json.optJSONObject("tbk_tpwd_convert_response").optJSONObject("data").optLong("num_iid");
|
| | | } catch (Exception e) {
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | } catch (TaoKeApiException e) {
|
| | | JSONObject msg = null;
|
| | | try {
|
| | | msg = JSONObject.fromObject(e.getMsg());
|
| | | } catch (Exception e2) {
|
| | | }
|
| | | if (msg != null && msg.optJSONObject("error_response") != null) {
|
| | | throw new TaoBaoTokenParseException(msg.optJSONObject("error_response").optInt("sub_code"),
|
| | | msg.optJSONObject("error_response").optString("sub_msg"));
|
| | | }
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | // 淘礼金创建
|
| | | public static TaoLiJinDTO createTaoLiJin(Long 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<>();
|
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.create");
|
| | | map.put("adzone_id", app.getPid().split("_")[3]);
|
| | | map.put("item_id", auctionId + "");
|
| | | map.put("total_num", totalNum + "");
|
| | | map.put("name", name);
|
| | | map.put("user_total_win_num_limit", "1");
|
| | | map.put("security_switch", "false");
|
| | | map.put("per_face", perface.toString());
|
| | | map.put("send_start_time", TimeUtil.getGernalTime(sendStartTime.getTime(), "yyyy-MM-dd HH:mm:ss"));
|
| | |
|
| | | if (sendEndTime != null)
|
| | | map.put("send_end_time", TimeUtil.getGernalTime(sendEndTime.getTime(), "yyyy-MM-dd HH:mm:ss"));
|
| | |
|
| | | if (useEndTime != null) {
|
| | | map.put("use_end_time", TimeUtil.getGernalTime(useEndTime.getTime(), "yyyy-MM-dd"));
|
| | | map.put("use_end_time_mode", "2");
|
| | | }
|
| | |
|
| | | if (useStartTime != null)
|
| | | map.put("use_start_time", TimeUtil.getGernalTime(useStartTime.getTime(), "yyyy-MM-dd"));
|
| | | try {
|
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
|
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | System.out.println(json);
|
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_create_response");
|
| | | if (root != null && root.optJSONObject("result") != null) {
|
| | |
|
| | | if (root.optJSONObject("result").optBoolean("success")) {
|
| | | JSONObject modelJson = root.optJSONObject("result").optJSONObject("model");
|
| | | TaoLiJinDTO dto = new TaoLiJinDTO();
|
| | | dto.setRightsId(modelJson.optString("rights_id"));
|
| | | dto.setSendUrl(modelJson.optString("send_url"));
|
| | | return dto;
|
| | | } else {
|
| | | LogHelper.error(json);
|
| | | }
|
| | |
|
| | | // 接口返回异常
|
| | | String msgCode = root.optJSONObject("result").optString("msg_code");
|
| | | if (!StringUtil.isNullOrEmpty(msgCode)) {
|
| | | TLJLogHelper.info(auctionId, root.toString());// 淘礼金异常信息记录
|
| | | switch (msgCode) {
|
| | | case "FAIL_BIZ_ITEM_FORBIDDEN":
|
| | | throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_FORBIDDEN, "该商品不支持创建淘礼金红包");
|
| | | case "FAIL_BIZ_ACCOUNT_UN_PAID":
|
| | | case "PRE_FREEZE_ASSET_ACCOUNT_ERROR":
|
| | | throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足");
|
| | | default:
|
| | | throw new TaoKeApiException(Integer.parseInt(msgCode), root.toString());
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (TaoKeApiException e) {
|
| | | throw e;
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | // 淘礼金报告
|
| | | public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.instance.report");
|
| | | map.put("rights_id", rightsId);
|
| | |
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | |
|
| | | try {
|
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
|
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | System.out.println(json);
|
| | |
|
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_instance_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;
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static void getCouponByAuctionId(Long auctionId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.itemid.coupon.get");
|
| | | map.put("platform", 2 + "");
|
| | | map.put("pid", TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
|
| | | map.put("num_iids", auctionId + "");
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
|
| | | System.out.print(json);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取淘宝系统时间
|
| | | *
|
| | | * @return
|
| | | */
|
| | | public static Date getTaoBaoSystemTime() {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.time.get");
|
| | | try {
|
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, false);
|
| | | String time = json.optJSONObject("time_get_response").optString("time");
|
| | | return new Date(TimeUtil.convertToTimeTemp(time, "yyyy-MM-dd HH:mm:ss"));
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 官方活动推广
|
| | | *
|
| | | * @param adZoneId -广告位
|
| | | * @param promotionSceneId-活动ID
|
| | | * @param relationId -渠道ID
|
| | | * @return
|
| | | */
|
| | | public static TaoKeOfficialActivityConvertResultDTO officialActivityConvert(String adZoneId,
|
| | | String promotionSceneId, String relationId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.activity.info.get");
|
| | | map.put("adzone_id", adZoneId);
|
| | | map.put("activity_material_id", promotionSceneId);
|
| | | if (relationId != null)
|
| | | map.put("relation_id", relationId);
|
| | | TaoKeAppInfo app = new TaoKeAppInfo();
|
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
|
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
|
| | | try {
|
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
|
| | | System.out.println(result);
|
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | if (json != null) {
|
| | | json = json.optJSONObject("tbk_activity_info_get_response");
|
| | | if (json.optJSONObject("data") != null) {
|
| | | return JsonUtil.getSimpleGson().fromJson(json.optJSONObject("data").toString(),
|
| | | TaoKeOfficialActivityConvertResultDTO.class);
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(Long auctionId, int count) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.dg.optimus.material");
|
| | | map.put("item_id", auctionId + "");
|
| | | map.put("page_size", count + "");
|
| | | map.put("page_no", 1 + "");
|
| | | map.put("material_id", 13256 + "");
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, true);
|
| | |
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
|
| | | if (response != null && response.optJSONObject("result_list") != null) {
|
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
|
| | | if (array != null) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return goodsList;
|
| | | }
|
| | |
|
| | | public static List<TaoBaoGoodsBrief> getCouponListByItemId(Long auctionId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.itemid.coupon.get");
|
| | | map.put("platform", auctionId + "");
|
| | | map.put("num_iids", auctionId + "");
|
| | | map.put("pid", TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY,
|
| | | TaoBaoConstant.TAOBAO_AUTH_APPSECRET, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT));
|
| | |
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response");
|
| | | if (response != null && response.optJSONObject("result_list") != null) {
|
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data");
|
| | | if (array != null) {
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | JSONObject item = array.optJSONObject(i);
|
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item);
|
| | | if (goods != null)
|
| | | goodsList.add(goods);
|
| | | }
|
| | | }
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return goodsList;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 淘宝客-推广者-官方活动信息获取
|
| | | *
|
| | | * @param activityMaterialId
|
| | | * @param pid
|
| | | * @param relationId
|
| | | * @return String 返回类型
|
| | | * @throws
|
| | | * @Title: getActivityInfo
|
| | | * @Description:
|
| | | */
|
| | | public static String getActivityInfo(String activityMaterialId, String pid, String relationId) {
|
| | | Map<String, String> map = new HashMap<>();
|
| | | map.put("method", "taobao.tbk.activity.info.get");
|
| | | map.put("activity_material_id", activityMaterialId);
|
| | | map.put("adzone_id", pid.split("_")[3] + "");
|
| | | map.put("relation_id", relationId);
|
| | |
|
| | | JSONObject resultJSON = null;
|
| | | try {
|
| | | resultJSON = TaoKeBaseUtil.baseRequest(map,
|
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid));
|
| | | JSONObject response = resultJSON.optJSONObject("tbk_activity_info_get_response");
|
| | | if (response != null && response.optJSONObject("data") != null) {
|
| | | return response.optJSONObject("data").optString("click_url");
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static class QuanInfo {
|
| | | public String coupon_start_time;// 开始时间
|
| | | public String coupon_end_time; // 券结束时间
|
| | | public BigDecimal coupon_amount;// 券金额
|
| | | public int coupon_total_count;// 券总数量
|
| | | public int coupon_remain_count;// 券剩余数量
|
| | | public BigDecimal coupon_start_fee;// 券起始金额
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | | package com.yeshi.fanli.util.taobao; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | import com.yeshi.common.entity.taobao.TaoBaoShopInfo; |
| | | import com.yeshi.common.entity.taobao.TaoKeAppInfo; |
| | | import com.yeshi.fanli.dto.taobao.TaoLiJinDTO; |
| | | import com.yeshi.fanli.dto.taobao.api.TaoKeOfficialActivityConvertResultDTO; |
| | | import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport; |
| | | import com.yeshi.fanli.entity.taobao.*; |
| | | import com.yeshi.fanli.exception.taobao.TaoBaoAuthException; |
| | | import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException; |
| | | import com.yeshi.fanli.exception.taobao.TaoKeApiException; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | import com.yeshi.fanli.exception.tlj.TaoLiJinCreateException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.log.TLJLogHelper; |
| | | import com.yeshi.fanli.log.TaoKeLogHelper; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.TaoBaoConstant; |
| | | 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; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | //淘宝客API接口 |
| | | public class TaoKeApiUtil { |
| | | |
| | | /** |
| | | * 获取商品详情,简版 |
| | | * |
| | | * @param id -商品AuctionId |
| | | * @return |
| | | */ |
| | | 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); |
| | | 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; |
| | | } |
| | | |
| | | // 获取商品详情自购 |
| | | 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.optString("num_iid")); |
| | | goods.setAuctionUrl(item.optString("item_url")); |
| | | 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) { |
| | | List<String> imgList = new ArrayList<>(); |
| | | for (int n = 0; n < imgArray.size(); n++) { |
| | | imgList.add(imgArray.optString(n)); |
| | | } |
| | | goods.setImgList(imgList); |
| | | } |
| | | } |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setUserType(item.optInt("user_type")); |
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | goods.setReservePrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | goods.setAuctionUrl(item.optString("item_url")); |
| | | goods.setProvcity(item.optString("provcity")); |
| | | goods.setPictUrl(item.optString("pict_url")); |
| | | goods.setShopTitle(item.optString("nick")); |
| | | goods.setSellerId(item.optLong("seller_id")); |
| | | goods.setRootCategoryName(item.optString("cat_name")); |
| | | goods.setLeafName(item.optString("cat_leaf_name")); |
| | | |
| | | String optString = item.optString("shop_dsr"); |
| | | if (!StringUtil.isNullOrEmpty(optString)) { |
| | | goods.setShopDsr(new Integer(optString)); |
| | | } |
| | | |
| | | String ratesum = item.optString("ratesum"); |
| | | if (!StringUtil.isNullOrEmpty(ratesum)) { |
| | | goods.setRatesum(new Integer(ratesum)); |
| | | } |
| | | |
| | | if (item.optBoolean("is_prepay")) |
| | | goods.setIsPrepay(1); |
| | | |
| | | if (item.optBoolean("i_rfd_rate")) |
| | | goods.setRfdRate(1); |
| | | |
| | | if (item.optBoolean("h_good_rate")) |
| | | goods.setGoodRate(1); |
| | | |
| | | if (item.optBoolean("h_pay_rate30")) |
| | | goods.setPayRate30(1); |
| | | |
| | | if (item.optBoolean("free_shipment")) |
| | | goods.setFreeShipment(1); |
| | | |
| | | goods.setMaterialLibTypes(item.optString("material_lib_type")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("material_lib_type"))) { |
| | | try { |
| | | String materialLibType = item.optString("material_lib_type"); |
| | | goods.setMaterialLibType(Integer.parseInt(materialLibType.split(",")[0])); |
| | | } catch (Exception e) { |
| | | goods.setMaterialLibType(0); |
| | | } |
| | | |
| | | } else |
| | | goods.setMaterialLibType(0); |
| | | |
| | | goods.setRootCategoryName(item.optString("cat_name")); |
| | | goods.setLeafName(item.optString("cat_leaf_name")); |
| | | |
| | | goods = loadYuShouInfo(goods, item); |
| | | return goods; |
| | | } |
| | | |
| | | private static TaoBaoGoodsBrief loadYuShouInfo(TaoBaoGoodsBrief goods, JSONObject item) { |
| | | |
| | | if (goods != null && item != null) { |
| | | 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(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<String> listId) |
| | | throws TaoKeApiException, TaobaoGoodsDownException { |
| | | if (listId == null || listId.size() == 0) { |
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空"); |
| | | } |
| | | |
| | | if (listId.size() > 40) { |
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能超过40个"); |
| | | } |
| | | |
| | | StringBuffer ids = new StringBuffer(); |
| | | for (String id : listId) { |
| | | ids.append(id + ","); |
| | | } |
| | | |
| | | return getBatchGoodsInfos(ids.substring(0, ids.length() - 1)); |
| | | } |
| | | |
| | | /** |
| | | * 获取商品详情,简版 |
| | | * |
| | | * @param ids |
| | | * @return |
| | | * @throws TaobaoGoodsDownException |
| | | */ |
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfos(String ids) throws TaobaoGoodsDownException { |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.item.info.get"); |
| | | map.put("num_iids", ids + ""); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | 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"), "商品下架"); |
| | | } |
| | | |
| | | 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) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | goodsList.add(parseSimpleGoodsInfo(item)); |
| | | } |
| | | } |
| | | return goodsList; |
| | | } |
| | | |
| | | |
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId, String ip) |
| | | throws TaoKeApiException, TaobaoGoodsDownException { |
| | | if (listId == null || listId.size() == 0) { |
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空"); |
| | | } |
| | | |
| | | if (listId.size() > 40) { |
| | | throw new TaobaoGoodsDownException(1, "淘宝商品ID不能超过40个"); |
| | | } |
| | | |
| | | StringBuffer ids = new StringBuffer(); |
| | | for (Long id : listId) { |
| | | ids.append(id + ","); |
| | | } |
| | | |
| | | return getBatchGoodsInfos(ids.substring(0, ids.length() - 1), ip); |
| | | } |
| | | |
| | | /** |
| | | * 获取商品详情,简版 |
| | | * |
| | | * @param ids |
| | | * @param ip |
| | | * @return |
| | | * @throws TaobaoGoodsDownException |
| | | */ |
| | | public static List<TaoBaoGoodsBrief> getBatchGoodsInfos(String ids, String ip) throws TaobaoGoodsDownException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.item.info.get"); |
| | | map.put("num_iids", ids + ""); |
| | | if (!StringUtil.isNullOrEmpty(ip)) { |
| | | map.put("ip", ip); |
| | | } |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | 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"), "商品下架"); |
| | | } |
| | | |
| | | if (data.optJSONObject("tbk_item_info_get_response") == null) |
| | | return null; |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | |
| | | JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results") |
| | | .optJSONArray("n_tbk_item"); |
| | | if (array != null && array.size() > 0) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | goodsList.add(parseSimpleGoodsInfo(item)); |
| | | } |
| | | } |
| | | return goodsList; |
| | | } |
| | | |
| | | /** |
| | | * 搜索商品详情-详细 |
| | | * |
| | | * @param id |
| | | * @return |
| | | * @throws TaobaoGoodsDownException |
| | | */ |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id, String specialId, String relationId) throws TaobaoGoodsDownException { |
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id); |
| | | if (goods == null) |
| | | return null; |
| | | SearchFilter filter = new SearchFilter(); |
| | | filter.setKey(goods.getTitle()); |
| | | filter.setPage(1); |
| | | filter.setPageSize(50); |
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(), |
| | | goods.getUserType(), specialId, relationId); |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | System.out.println(goods.getAuctionId() + ":" + g.getAuctionId()); |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | g.setAuctionId(goods.getAuctionId()); |
| | | g.setCreatetime(new Date()); |
| | | g.setMaterialLibType(goods.getMaterialLibType()); |
| | | g.setProvcity(goods.getProvcity()); |
| | | return g; |
| | | } |
| | | } |
| | | |
| | | // 从转链搜索 |
| | | TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(), |
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, |
| | | TaoBaoConstant.TAOBAO_PID_DEFAULT), specialId, relationId); |
| | | |
| | | if (newGoods != null) { |
| | | goods.setTkRate(newGoods.getTkRate()); |
| | | if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) { |
| | | List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo()); |
| | | if (couponInfo != null && couponInfo.size() > 1) { |
| | | goods.setCouponStartFee(couponInfo.get(0)); |
| | | goods.setCouponAmount(couponInfo.get(1)); |
| | | goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime()); |
| | | goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime()); |
| | | goods.setCouponLeftCount(newGoods.getCouponLeftCount()); |
| | | goods.setCouponTotalCount(newGoods.getCouponTotalCount()); |
| | | goods.setCouponInfo(newGoods.getCouponInfo()); |
| | | } |
| | | } |
| | | |
| | | return goods; |
| | | |
| | | } else { |
| | | goods.setCouponAmount(new BigDecimal("0")); |
| | | goods.setTkMktStatus("1"); |
| | | goods.setTkRate(new BigDecimal("0")); |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | return goods; |
| | | } |
| | | |
| | | } |
| | | |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id) throws TaobaoGoodsDownException { |
| | | return searchGoodsDetail(id, null, null); |
| | | } |
| | | |
| | | /** |
| | | * 搜索商品详情-详细 |
| | | * |
| | | * @param id |
| | | * @return |
| | | * @throws TaobaoGoodsDownException |
| | | */ |
| | | public static TaoBaoGoodsBrief searchGoodsDetail(String id, TaoKeAppInfo app) throws TaobaoGoodsDownException { |
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id); |
| | | if (goods == null) |
| | | return null; |
| | | SearchFilter filter = new SearchFilter(); |
| | | filter.setKey(goods.getTitle()); |
| | | filter.setPage(1); |
| | | filter.setPageSize(50); |
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(), |
| | | goods.getUserType(), app, null, null); |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | g.setAuctionId(goods.getAuctionId()); |
| | | // 判断是否有优惠券 |
| | | if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) { |
| | | // 获取优惠券详情 |
| | | QuanInfo quanInfo = getQuanInfo(g.getAuctionId(), g.getCouponActivityId()); |
| | | if (quanInfo != null) { |
| | | g.setCouponAmount(quanInfo.coupon_amount); |
| | | g.setCouponEffectiveEndTime(quanInfo.coupon_end_time); |
| | | g.setCouponEffectiveStartTime(quanInfo.coupon_start_time); |
| | | g.setCouponLeftCount(quanInfo.coupon_remain_count); |
| | | g.setCouponStartFee(quanInfo.coupon_start_fee); |
| | | g.setCouponTotalCount(quanInfo.coupon_total_count); |
| | | } |
| | | } else { |
| | | g.setCouponAmount(new BigDecimal(0)); |
| | | g.setCouponStartFee(new BigDecimal(0)); |
| | | } |
| | | g.setCreatetime(new Date()); |
| | | g.setMaterialLibType(goods.getMaterialLibType()); |
| | | g.setProvcity(goods.getProvcity()); |
| | | return g; |
| | | } |
| | | } |
| | | |
| | | // 从转链搜索 |
| | | TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(), |
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, |
| | | TaoBaoConstant.TAOBAO_PID_DEFAULT), null, null); |
| | | |
| | | if (newGoods != null) { |
| | | goods.setTkRate(newGoods.getTkRate()); |
| | | goods.setAuctionUrl(newGoods.getAuctionUrl()); |
| | | goods.setCouponLink(newGoods.getCouponLink()); |
| | | if (!StringUtil.isNullOrEmpty(newGoods.getCouponInfo())) { |
| | | List<BigDecimal> couponInfo = TaoBaoCouponUtil.getCouponInfo(newGoods.getCouponInfo()); |
| | | if (couponInfo != null && couponInfo.size() > 1) { |
| | | goods.setCouponStartFee(couponInfo.get(0)); |
| | | goods.setCouponAmount(couponInfo.get(1)); |
| | | goods.setCouponEffectiveStartTime(newGoods.getCouponEffectiveStartTime()); |
| | | goods.setCouponEffectiveEndTime(newGoods.getCouponEffectiveEndTime()); |
| | | goods.setCouponLeftCount(newGoods.getCouponLeftCount()); |
| | | goods.setCouponTotalCount(newGoods.getCouponTotalCount()); |
| | | goods.setCouponInfo(newGoods.getCouponInfo()); |
| | | } |
| | | } |
| | | |
| | | return goods; |
| | | |
| | | } else { |
| | | goods.setCouponAmount(new BigDecimal("0")); |
| | | goods.setTkMktStatus("1"); |
| | | goods.setTkRate(new BigDecimal("0")); |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | return goods; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 物料转链 |
| | | * |
| | | * @param id |
| | | * @param app |
| | | * @return |
| | | * @throws TaobaoGoodsDownException |
| | | */ |
| | | public static TaoBaoGoodsBrief searchGoodsDetailForConvert(String id, TaoKeAppInfo app, String specialId, String relationId) |
| | | throws TaobaoGoodsDownException { |
| | | TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id); |
| | | if (goods == null) |
| | | return null; |
| | | SearchFilter filter = new SearchFilter(); |
| | | filter.setKey(goods.getTitle()); |
| | | filter.setPage(1); |
| | | filter.setPageSize(50); |
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(), |
| | | goods.getUserType(), app, specialId, relationId); |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | g.setAuctionId(goods.getAuctionId()); |
| | | g.setCreatetime(new Date()); |
| | | return g; |
| | | } |
| | | } |
| | | |
| | | TaoKeLogHelper.error(null, "没有搜索到详情:" + id); |
| | | goods.setCouponAmount(new BigDecimal("0")); |
| | | goods.setTkMktStatus("1"); |
| | | goods.setTkRate(new BigDecimal("0")); |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | return goods; |
| | | } |
| | | |
| | | public static List<TaoBaoGoodsBrief> searchBatchGoodsDetail(String ids) throws TaobaoGoodsDownException { |
| | | |
| | | List<TaoBaoGoodsBrief> goodsBriefList = getBatchGoodsInfos(ids); |
| | | |
| | | if (goodsBriefList == null || goodsBriefList.size() == 0) { |
| | | return null; |
| | | } |
| | | |
| | | // System.out.println("---------goodsBriefList--------------:"+ |
| | | // goodsBriefList.size()); |
| | | |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | |
| | | for (TaoBaoGoodsBrief goods : goodsBriefList) { |
| | | |
| | | boolean pross = false; |
| | | |
| | | SearchFilter filter = new SearchFilter(); |
| | | filter.setKey(goods.getTitle()); |
| | | filter.setPage(1); |
| | | filter.setPageSize(50); |
| | | TaoBaoSearchResult result = searchWuLiaoForDetail(goods.getTitle(), goods.getZkPrice(), goods.getProvcity(), |
| | | goods.getUserType(), null, null); |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) { |
| | | if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) { |
| | | g.setAuctionId(goods.getAuctionId()); |
| | | g.setAuctionUrl(goods.getAuctionUrl()); |
| | | g.setShopTitle(goods.getShopTitle()); |
| | | |
| | | // 判断是否有优惠券 |
| | | if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) { |
| | | // 获取优惠券详情 |
| | | QuanInfo quanInfo = getQuanInfo(g.getAuctionId(), g.getCouponActivityId()); |
| | | if (quanInfo != null) { |
| | | g.setCouponAmount(quanInfo.coupon_amount); |
| | | g.setCouponEffectiveEndTime(quanInfo.coupon_end_time); |
| | | g.setCouponEffectiveStartTime(quanInfo.coupon_start_time); |
| | | g.setCouponLeftCount(quanInfo.coupon_remain_count); |
| | | g.setCouponStartFee(quanInfo.coupon_start_fee); |
| | | g.setCouponTotalCount(quanInfo.coupon_total_count); |
| | | } |
| | | } else { |
| | | g.setCouponAmount(new BigDecimal(0)); |
| | | g.setCouponStartFee(new BigDecimal(0)); |
| | | } |
| | | g.setCreatetime(new Date()); |
| | | goodsList.add(g); |
| | | pross = true; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (pross) |
| | | continue; |
| | | |
| | | // 再从淘宝联盟网页搜索 |
| | | filter.setKey(goods.getAuctionUrl()); |
| | | TaoBaoSearchResult searchResult = TaoBaoUtil.searchFromAlimamaWeb(filter, null); |
| | | if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null |
| | | && searchResult.getTaoBaoGoodsBriefs().size() > 0) { |
| | | for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) { |
| | | if (TaoBaoUtil.isEqual(g.getAuctionId(), goods.getAuctionId())) { |
| | | g.setImgList(goods.getImgList()); |
| | | g.setAuctionId(goods.getAuctionId()); |
| | | g.setAuctionUrl(goods.getAuctionUrl()); |
| | | g.setShopTitle(goods.getShopTitle()); |
| | | |
| | | goods = g; |
| | | if ("无".equalsIgnoreCase(goods.getCouponInfo())) |
| | | goods.setCouponInfo(null); |
| | | |
| | | goodsList.add(goods); |
| | | pross = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (pross) |
| | | continue; |
| | | |
| | | goods.setCouponAmount(new BigDecimal("0")); |
| | | goods.setTkMktStatus("1"); |
| | | goods.setTkRate(new BigDecimal("0")); |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTkCommFee(new BigDecimal(0)); |
| | | |
| | | goodsList.add(goods); |
| | | } |
| | | |
| | | return goodsList; |
| | | } |
| | | |
| | | /** |
| | | * 商品物料搜索 |
| | | * |
| | | * @param filter |
| | | * @param specialId |
| | | * @param relationId |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult searchWuLiao(SearchFilter filter, String specialId, String relationId) { |
| | | |
| | | if (filter.getKey() != null && filter.getKey().trim().equalsIgnoreCase("")) |
| | | return null; |
| | | |
| | | // if (filter.getKey() != null && filter.getKey().length() > 100) |
| | | // return null; |
| | | |
| | | PageEntity pageEntity = new PageEntity(); |
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | 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)) { |
| | | 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); |
| | | //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") |
| | | .optJSONArray("map_data"); |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i)); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList); |
| | | |
| | | 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); |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 商品物料搜索 |
| | | * |
| | | * @param title |
| | | * @param zkPrice |
| | | * @param provcity |
| | | * @param userType |
| | | * @param specialId |
| | | * @param relationId |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult searchWuLiaoForDetail(String title, BigDecimal zkPrice, String provcity, |
| | | int userType, String specialId, String relationId) { |
| | | if (provcity.trim().contains(" ")) |
| | | 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 + ""); |
| | | map.put("start_price", (int) zkPrice.subtract(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("end_price", (int) zkPrice.add(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("is_tmall", (userType == 1) + ""); |
| | | map.put("q", title); |
| | | map.put("itemloc", provcity); |
| | | |
| | | 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); |
| | | } |
| | | |
| | | 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") |
| | | .optJSONArray("map_data"); |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i)); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList); |
| | | } |
| | | |
| | | List<TaoBaoSearchNav> navList = new ArrayList<>(); |
| | | |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound(1000); |
| | | taoBaoSearchResult.setTaoBaoHead(taoBaoHead); |
| | | taoBaoSearchResult.setPageEntity(new PageEntity()); |
| | | |
| | | taoBaoSearchResult.setNavList(navList); |
| | | |
| | | return taoBaoSearchResult; |
| | | } |
| | | |
| | | /** |
| | | * 商品物料搜索 |
| | | * |
| | | * @param title |
| | | * @param zkPrice |
| | | * @param provcity |
| | | * @param userType |
| | | * @param app |
| | | * @param specialId |
| | | * @param relationId |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult searchWuLiaoForDetail(String title, BigDecimal zkPrice, String provcity, |
| | | int userType, TaoKeAppInfo app, String specialId, String relationId) { |
| | | if (provcity.trim().contains(" ")) |
| | | provcity = provcity.split(" ")[provcity.split(" ").length - 1]; |
| | | TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.material.optional"); |
| | | map.put("page_size", 50 + ""); |
| | | map.put("page_no", 1 + ""); |
| | | map.put("start_price", (int) zkPrice.subtract(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("end_price", (int) zkPrice.add(new BigDecimal(1)).doubleValue() + ""); |
| | | map.put("is_tmall", (userType == 1) + ""); |
| | | map.put("q", title); |
| | | map.put("itemloc", provcity); |
| | | 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); |
| | | } |
| | | |
| | | if (app != null && app.getPid() != null) { |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | | |
| | | } |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, app); |
| | | System.out.println(resultStr); |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | 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") |
| | | .optJSONArray("map_data"); |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItem(array.optJSONObject(i)); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList); |
| | | } |
| | | |
| | | List<TaoBaoSearchNav> navList = new ArrayList<>(); |
| | | |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound(1000); |
| | | taoBaoSearchResult.setTaoBaoHead(taoBaoHead); |
| | | taoBaoSearchResult.setPageEntity(new PageEntity()); |
| | | |
| | | taoBaoSearchResult.setNavList(navList); |
| | | |
| | | return taoBaoSearchResult; |
| | | } |
| | | |
| | | // 解析物料 |
| | | public static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) { |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setPictUrl(item.optString("pict_url")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("white_image"))) { |
| | | goods.setPictUrlWhite(item.optString("white_image")); |
| | | } |
| | | |
| | | goods.setAuctionId(item.optString("num_iid")); |
| | | goods.setAuctionUrl("https:" + item.optString("url")); |
| | | 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) |
| | | goods.setCouponInfo(goods.getCouponInfo().replace(".00", "")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) { |
| | | 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(new BigDecimal(item.optString("coupon_start_fee"))); |
| | | goods.setCouponLeftCount(item.optInt("coupon_remain_count")); |
| | | goods.setCouponLink("https:" + item.optString("coupon_share_url")); |
| | | goods.setCouponTotalCount(item.optInt("coupon_total_count")); |
| | | goods.setCouponActivityId(item.optString("coupon_id")); |
| | | } else { |
| | | goods.setCouponAmount(new BigDecimal(0)); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | if (item.optBoolean("include_mkt")) |
| | | goods.setTkMktStatus("1"); |
| | | else |
| | | goods.setTkMktStatus("0"); |
| | | |
| | | if (item.optBoolean("include_dxjh")) |
| | | goods.setIncludeDxjh(1); |
| | | |
| | | goods.setSellerId(item.optLong("seller_id")); |
| | | goods.setShopTitle(item.optString("shop_title")); |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setProvcity(item.optString("provcity")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("level_one_category_id"))) { |
| | | goods.setRootCatId(item.optInt("level_one_category_id")); |
| | | } |
| | | goods.setRootCategoryName(item.optString("level_one_category_name")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("category_id"))) { |
| | | goods.setLeafCatId(item.optInt("category_id")); |
| | | } |
| | | goods.setLeafName(item.optString("category_name")); |
| | | |
| | | goods.setTkRate(new BigDecimal(item.optString("commission_rate")).divide(new BigDecimal(100))); |
| | | goods.setTotalNum(1000); |
| | | goods.setUserType(item.optInt("user_type")); |
| | | goods.setUserTypeName(""); |
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | |
| | | if (item.optBoolean("include_dxjh")) { |
| | | goods.setDxjhInfo(item.optString("info_dxjh")); |
| | | } |
| | | |
| | | 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(item.optString("reserve_price"))) |
| | | goods.setReservePrice(new BigDecimal(item.optString("reserve_price"))); |
| | | goods.setTotalFee(new BigDecimal("0")); |
| | | // 推荐语 |
| | | goods.setDescription(item.optString("item_description")); |
| | | |
| | | 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")); |
| | | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取淘口令 |
| | | * |
| | | * @param logo -图标 |
| | | * @param text -文字 |
| | | * @param url -简介 |
| | | * @return |
| | | */ |
| | | public static String getTKToken(String logo, String text, String url) { |
| | | if (text == null) |
| | | return null; |
| | | if (text.length() < 5) |
| | | text = "好货:" + text; |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.tpwd.create"); |
| | | map.put("url", url); |
| | | map.put("text", text); |
| | | map.put("logo", logo); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | if (data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data") != null) |
| | | return data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data").optString("model"); |
| | | return null; |
| | | } |
| | | |
| | | public static String getTKToken(String logo, String text, String url, boolean simpleToken) { |
| | | if (simpleToken) { |
| | | return getSimpleTKToken(logo, text, url); |
| | | } else { |
| | | return getTKToken(logo, text, url); |
| | | } |
| | | } |
| | | |
| | | |
| | | public static String getSimpleTKToken(String logo, String text, String url) { |
| | | if (text == null) |
| | | return null; |
| | | if (text.length() < 5) |
| | | text = "好货:" + text; |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.tpwd.create"); |
| | | map.put("url", url); |
| | | map.put("text", text); |
| | | map.put("logo", logo); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | if (data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data") != null) |
| | | return data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data").optString("password_simple"); |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 获取券详细信息 |
| | | * |
| | | * @param auctionId |
| | | * @param activityId |
| | | * @return |
| | | */ |
| | | 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"); |
| | | map.put("item_id", auctionId + ""); |
| | | map.put("activity_id", activityId); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | JSONObject data = JSONObject.fromObject(resultStr); |
| | | if (data.optJSONObject("tbk_coupon_get_response") != null) { |
| | | data = data.optJSONObject("tbk_coupon_get_response").optJSONObject("data"); |
| | | info.coupon_start_time = data.optString("coupon_start_time"); |
| | | info.coupon_end_time = data.optString("coupon_end_time"); |
| | | info.coupon_amount = new BigDecimal(data.optString("coupon_amount")); |
| | | info.coupon_total_count = data.optInt("coupon_total_count"); |
| | | info.coupon_remain_count = data.optInt("coupon_remain_count"); |
| | | info.coupon_start_fee = new BigDecimal(data.optString("coupon_start_fee")); |
| | | } else |
| | | return null; |
| | | return info; |
| | | } |
| | | |
| | | public static void taoQiangGou() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.ju.tqg.get"); |
| | | map.put("fields", |
| | | "click_url,pic_url,reserve_price,zk_final_price,total_amount,sold_num,title,category_name,start_time,end_time"); |
| | | map.put("start_time", "2018-06-11 08:00:00"); |
| | | map.put("end_time", "2018-06-12 12:00:00"); |
| | | map.put("page_no", "1"); |
| | | map.put("page_size", "96"); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | public static TaoBaoSearchResult taoQiangGou(int page, int pageSize, String startTime, String endTime) { |
| | | |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.ju.tqg.get"); |
| | | map.put("fields", |
| | | "click_url,pic_url,reserve_price,zk_final_price,total_amount,sold_num,title,category_name,start_time,end_time"); |
| | | map.put("start_time", startTime); |
| | | map.put("end_time", endTime); |
| | | map.put("page_no", page + ""); |
| | | map.put("page_size", pageSize + ""); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | |
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr); |
| | | JSONObject response = resultJSON.optJSONObject("tbk_ju_tqg_get_response"); |
| | | if (response != null && response.optJSONObject("results") != null) { |
| | | JSONArray array = response.optJSONObject("results").optJSONArray("results"); |
| | | if (array != null) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | String url = item.optString("click_url"); |
| | | |
| | | // 排除 非淘客商品 |
| | | if (url.contains("s.click.taobao.com/t?e=m")) { |
| | | TaoBaoGoodsBrief goods; |
| | | try { |
| | | goods = searchGoodsDetail(item.optString("num_iid")); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | pageSize = array.size(); |
| | | } |
| | | } |
| | | |
| | | TaoBaoSearchResult result = new TaoBaoSearchResult(); |
| | | result.setTaoBaoGoodsBriefs(goodsList); |
| | | |
| | | int totalResults = response.getInt("total_results"); |
| | | |
| | | PageEntity pe = new PageEntity(page, pageSize, totalResults); |
| | | result.setPageEntity(pe); |
| | | result.setNavList(new ArrayList<>()); |
| | | |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount()); |
| | | |
| | | result.setTaoBaoHead(taoBaoHead); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /* |
| | | * TODO 获取分类列表 |
| | | */ |
| | | public static void getTaoBaoCategoryList() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.itemcats.get"); |
| | | map.put("parent_cid", "0"); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | /** |
| | | * 店铺搜索 |
| | | * |
| | | * @param key -店铺名称 |
| | | * @param page -页码 |
| | | * @return |
| | | */ |
| | | public static List<TaoBaoShopInfo> searchShop(String key, int page) { |
| | | if (StringUtil.isNullOrEmpty(key)) |
| | | return new ArrayList<>(); |
| | | List<TaoBaoShopInfo> list = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.shop.get"); |
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url"); |
| | | map.put("q", key); |
| | | map.put("page_size", "95"); |
| | | map.put("page_no", page + ""); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | JSONObject resultDate = JSONObject.fromObject(resultStr); |
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null |
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) { |
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") |
| | | .optJSONArray("n_tbk_shop"); |
| | | if (array != null) |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoShopInfo info = new TaoBaoShopInfo(); |
| | | info.setPictureUrl(item.optString("pict_url")); |
| | | info.setSellerNick(item.optString("seller_nick")); |
| | | info.setShopTitle(item.optString("shop_title")); |
| | | info.setShopType(item.optString("shop_type")); |
| | | info.setShopUrl(item.optString("shop_url")); |
| | | info.setUserId(item.optLong("user_id")); |
| | | list.add(info); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 店铺搜索 |
| | | * |
| | | * @param key -店铺名称 |
| | | * @param page -页码 |
| | | * @return |
| | | */ |
| | | public static TaoBaoShopInfoDTO searchShop(String key, int page, int pageSize) { |
| | | TaoBaoShopInfoDTO dto = new TaoBaoShopInfoDTO(); |
| | | if (StringUtil.isNullOrEmpty(key)) |
| | | return dto; |
| | | |
| | | PageEntity pageEntity = new PageEntity(); |
| | | List<TaoBaoShopInfo> list = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.shop.get"); |
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url"); |
| | | map.put("q", key); |
| | | map.put("page_size", pageSize + ""); |
| | | map.put("page_no", page + ""); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | JSONObject resultDate = JSONObject.fromObject(resultStr); |
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null |
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) { |
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") |
| | | .optJSONArray("n_tbk_shop"); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoShopInfo info = new TaoBaoShopInfo(); |
| | | info.setPictureUrl(item.optString("pict_url")); |
| | | info.setSellerNick(item.optString("seller_nick")); |
| | | info.setShopTitle(item.optString("shop_title")); |
| | | info.setShopType(item.optString("shop_type")); |
| | | info.setShopUrl(item.optString("shop_url")); |
| | | info.setUserId(item.optLong("user_id")); |
| | | list.add(info); |
| | | } |
| | | } |
| | | |
| | | JSONObject optJSONObject = resultDate.optJSONObject("tbk_shop_get_response"); |
| | | int totalResults = optJSONObject.getInt("total_results"); |
| | | int totalPage = totalResults % pageSize == 0 ? totalResults / pageSize : totalResults / pageSize + 1; |
| | | pageEntity.setTotalCount(totalResults); |
| | | pageEntity.setTotalPage(totalPage); |
| | | } |
| | | pageEntity.setPageIndex(page); |
| | | pageEntity.setPageSize(pageSize); |
| | | |
| | | dto.setListInfo(list); |
| | | dto.setPage(pageEntity); |
| | | return dto; |
| | | } |
| | | |
| | | /** |
| | | * @param filter |
| | | * @return |
| | | */ |
| | | public static List<TaoBaoShopInfo> searchShop(SearchShopFilter filter) { |
| | | if (StringUtil.isNullOrEmpty(filter.getKey())) |
| | | return new ArrayList<>(); |
| | | List<TaoBaoShopInfo> list = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.shop.get"); |
| | | map.put("fields", "user_id,shop_title,shop_type,seller_nick,pict_url,shop_url"); |
| | | map.put("q", filter.getKey()); |
| | | map.put("page_size", filter.getPageSize() + ""); |
| | | map.put("page_no", filter.getPage() + ""); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(filter.getSort())) |
| | | map.put("sort", filter.getSort()); |
| | | |
| | | if (filter.getTmall() != null) |
| | | map.put("is_tmall", filter.getTmall() + ""); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | JSONObject resultDate = JSONObject.fromObject(resultStr); |
| | | if (resultDate.optJSONObject("tbk_shop_get_response") != null |
| | | && resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") != null) { |
| | | JSONArray array = resultDate.optJSONObject("tbk_shop_get_response").optJSONObject("results") |
| | | .optJSONArray("n_tbk_shop"); |
| | | if (array != null) |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoShopInfo info = new TaoBaoShopInfo(); |
| | | info.setPictureUrl(item.optString("pict_url")); |
| | | info.setSellerNick(item.optString("seller_nick")); |
| | | info.setShopTitle(item.optString("shop_title")); |
| | | info.setShopType(item.optString("shop_type")); |
| | | info.setShopUrl(item.optString("shop_url")); |
| | | info.setUserId(item.optLong("user_id")); |
| | | list.add(info); |
| | | } |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 品牌券获取 |
| | | * |
| | | * @param pageNo |
| | | * @param pageSize |
| | | */ |
| | | public static void pingPaiCoupon(int pageNo, int pageSize) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.coupon.brand.recommend"); |
| | | map.put("page_no", pageNo + ""); |
| | | map.put("page_size", pageSize + ""); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | public static void getOrder(String order) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "alibaba.mos.order.get"); |
| | | map.put("order_number", order); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | 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"); |
| | | map.put("num_iids", auctionId + ""); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | // taobao.ju.items.search |
| | | public static void searchJuHuaSuan() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.ju.items.search"); |
| | | map.put("current_page", "1"); |
| | | map.put("page_size", 20 + ""); |
| | | map.put("pid", "mm_124933865_43788020_381938426"); |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, false); |
| | | System.out.println(resultStr); |
| | | } |
| | | |
| | | /** |
| | | * 通过物料ID获取商品信息 |
| | | * |
| | | * @param materialId -物料ID |
| | | * @param page -页码 |
| | | * @param pageSize -每页数量 |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult getMaterialByMaterialId(int materialId, int page, int pageSize) { |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.optimus.material"); |
| | | map.put("page_no", page + ""); |
| | | map.put("page_size", pageSize + ""); |
| | | map.put("material_id", materialId + ""); |
| | | // map.put("content_id", "561388751621"); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | System.out.println(resultStr); |
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr); |
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response"); |
| | | if (response != null && response.optJSONObject("result_list") != null) { |
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data"); |
| | | if (array != null) { |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | pageSize = array.size(); |
| | | } |
| | | } |
| | | TaoBaoSearchResult result = new TaoBaoSearchResult(); |
| | | result.setTaoBaoGoodsBriefs(goodsList); |
| | | int totalCount = 1000;// root.optInt("total_results"); |
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount); |
| | | result.setPageEntity(pe); |
| | | result.setNavList(new ArrayList<>()); |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount()); |
| | | result.setTaoBaoHead(taoBaoHead); |
| | | return result; |
| | | } |
| | | |
| | | public static TaoBaoSearchResult getQTZMaterialByMaterialId(int materialId, int page, int pageSize) { |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.optimus.material"); |
| | | map.put("page_no", page + ""); |
| | | map.put("page_size", pageSize + ""); |
| | | map.put("material_id", materialId + ""); |
| | | |
| | | String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); |
| | | JSONObject resultJSON = JSONObject.fromObject(resultStr); |
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response"); |
| | | if (response != null && response.optJSONObject("result_list") != null) { |
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data"); |
| | | if (array != null) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | |
| | | pageSize = array.size(); |
| | | } |
| | | } |
| | | TaoBaoSearchResult result = new TaoBaoSearchResult(); |
| | | result.setTaoBaoGoodsBriefs(goodsList); |
| | | int totalCount = 1000;// root.optInt("total_results"); |
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount); |
| | | result.setPageEntity(pe); |
| | | result.setNavList(new ArrayList<>()); |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount()); |
| | | result.setTaoBaoHead(taoBaoHead); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 根据设备猜你喜欢 |
| | | * |
| | | * @param page |
| | | * @param pageSize |
| | | * @param imei |
| | | * @param idfa |
| | | * @return |
| | | */ |
| | | public static TaoBaoSearchResult guessDeviceLike(int page, int pageSize, String imei, String idfa, String utdid) { |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.dg.optimus.material"); |
| | | map.put("page_no", page + ""); |
| | | map.put("page_size", pageSize + ""); |
| | | map.put("material_id", "6708"); |
| | | if (StringUtil.isNullOrEmpty(imei) && StringUtil.isNullOrEmpty(idfa) && StringUtil.isNullOrEmpty(utdid)) |
| | | return null; |
| | | |
| | | if (!StringUtil.isNullOrEmpty(imei)) { |
| | | map.put("device_encrypt", "MD5"); |
| | | map.put("device_value", StringUtil.Md5(imei)); |
| | | map.put("device_type", "IMEI"); |
| | | } else if (!StringUtil.isNullOrEmpty(idfa)) { |
| | | map.put("device_encrypt", "MD5"); |
| | | map.put("device_value", StringUtil.Md5(idfa)); |
| | | map.put("device_type", "IDFA"); |
| | | } else if (!StringUtil.isNullOrEmpty(utdid)) { |
| | | map.put("device_value", utdid); |
| | | map.put("device_type", "UTDID"); |
| | | } |
| | | |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, true); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (resultJSON == null) |
| | | return null; |
| | | |
| | | // JSONObject resultJSON = JSONObject.fromObject(resultStr); |
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response"); |
| | | if (response != null && response.optJSONObject("result_list") != null) { |
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data"); |
| | | if (array != null) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | |
| | | pageSize = array.size(); |
| | | } |
| | | } |
| | | TaoBaoSearchResult result = new TaoBaoSearchResult(); |
| | | result.setTaoBaoGoodsBriefs(goodsList); |
| | | int totalCount = 1000;// root.optInt("total_results"); |
| | | PageEntity pe = new PageEntity(page, pageSize, totalCount); |
| | | result.setPageEntity(pe); |
| | | result.setNavList(new ArrayList<>()); |
| | | TaoBaoHead taoBaoHead = new TaoBaoHead(); |
| | | taoBaoHead.setDocsfound((int) result.getPageEntity().getTotalCount()); |
| | | result.setTaoBaoHead(taoBaoHead); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | public static String getAccessToken(String code, String appKey, String appSecret) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.top.auth.token.create"); |
| | | map.put("code", code); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app); |
| | | if (json != null) |
| | | return json.toString(); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 渠道邀请码 |
| | | * |
| | | * @param relationId |
| | | * @return |
| | | */ |
| | | public static String getInviteCode(Long relationId, String accessToken, String appKey, String appSecret) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.invitecode.get"); |
| | | map.put("session", accessToken); |
| | | map.put("code_type", "1"); |
| | | map.put("relation_app", "common"); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (resultJSON == null) |
| | | return null; |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 获取渠道邀请码 |
| | | * |
| | | * @param accessToken |
| | | * @param appKey |
| | | * @param appSecret |
| | | * @return |
| | | */ |
| | | public static String getRootRelationInviteCode(String accessToken, String appKey, String appSecret) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.invitecode.get"); |
| | | map.put("session", accessToken); |
| | | map.put("code_type", "1"); |
| | | map.put("relation_app", "common"); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (resultJSON == null) |
| | | return null; |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public static String getRootSpecialInviteCode(String accessToken, String appKey, String appSecret) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.invitecode.get"); |
| | | map.put("session", accessToken); |
| | | map.put("code_type", "3"); |
| | | map.put("relation_app", "common"); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app); |
| | | return resultJSON.optJSONObject("tbk_sc_invitecode_get_response").optJSONObject("data") |
| | | .optString("inviter_code"); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | if (resultJSON == null) |
| | | return null; |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public static String getRelationId(String accessToken, String appKey, String appSecret) throws TaoBaoAuthException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.publisher.info.save"); |
| | | map.put("session", accessToken); |
| | | map.put("inviter_code", "A2QnGL"); |
| | | map.put("info_type", "1"); |
| | | map.put("online_scene", "1"); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app); |
| | | System.out.println(resultJSON.toString()); |
| | | return resultJSON.optJSONObject("tbk_sc_publisher_info_save_response").optJSONObject("data") |
| | | .optString("relation_id"); |
| | | } catch (TaoKeApiException e) { |
| | | JSONObject errorJSON = JSONObject.fromObject(e.getMsg()).optJSONObject("error_response"); |
| | | if (errorJSON.optInt("code") == 15 && errorJSON.optInt("sub_code") == 1)// 未实名 |
| | | { |
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_NOT_REAL_NAME, errorJSON.optString("sub_msg")); |
| | | } else { |
| | | e.printStackTrace(); |
| | | LogHelper.error("渠道ID申请出错:" + e.getMsg()); |
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_OTHER, errorJSON.optString("sub_msg")); |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.error("渠道ID申请出错:" + (resultJSON != null ? resultJSON.toString() : "未知错误")); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static String getSpecialId(String accessToken, String appKey, String appSecret) throws TaoBaoAuthException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.sc.publisher.info.save"); |
| | | map.put("session", accessToken); |
| | | map.put("inviter_code", "AA5ISJ"); |
| | | map.put("info_type", "1"); |
| | | map.put("online_scene", "1"); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(appKey); |
| | | app.setAppSecret(appSecret); |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, app); |
| | | return resultJSON.optJSONObject("tbk_sc_publisher_info_save_response").optJSONObject("data") |
| | | .optString("special_id"); |
| | | } catch (TaoKeApiException e) { |
| | | JSONObject errorJSON = JSONObject.fromObject(e.getMsg()).optJSONObject("error_response"); |
| | | if (errorJSON.optInt("code") == 15 && errorJSON.optInt("sub_code") == 1)// 未实名 |
| | | { |
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_NOT_REAL_NAME, errorJSON.optString("sub_msg")); |
| | | } else { |
| | | e.printStackTrace(); |
| | | LogHelper.error("会员运营ID申请出错:" + e.getMsg()); |
| | | throw new TaoBaoAuthException(TaoBaoAuthException.CODE_OTHER, errorJSON.optString("sub_msg")); |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.error("会员运营ID申请出错:" + (resultJSON != null ? resultJSON.toString() : "未知错误")); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public static void specialConvertItem(String auctionId, TaoKeAppInfo app) { |
| | | String pid = app.getPid(); |
| | | String[] sts = pid.split("_"); |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.item.convert"); |
| | | map.put("num_iids", auctionId + ""); |
| | | map.put("fields", "num_iid,click_url"); |
| | | map.put("adzone_id", sts[3]); |
| | | map.put("platform", "2"); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app); |
| | | System.out.println(json.toString()); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | 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<>(); |
| | | map.put("method", "taobao.tbk.coupon.convert"); |
| | | map.put("item_id", auctionId + ""); |
| | | map.put("adzone_id", sts[3]); |
| | | |
| | | if (System.currentTimeMillis() > TimeUtil.convertToTimeTemp("2020-07-22", "yyyy-MM-dd")) { |
| | | 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); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | JSONObject resultJSON = json.optJSONObject("tbk_coupon_convert_response").optJSONObject("result") |
| | | .optJSONObject("results"); |
| | | String couponLink = resultJSON.optString("coupon_click_url"); |
| | | String itemLink = resultJSON.optString("item_url"); |
| | | TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); |
| | | goods.setAuctionUrl(itemLink); |
| | | 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")); |
| | | |
| | | } |
| | | String tkRate = resultJSON.optString("max_commission_rate"); |
| | | if (StringUtil.isNullOrEmpty(tkRate)) { |
| | | tkRate = resultJSON.optString("min_commission_rate"); |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(tkRate)) { |
| | | goods.setTkRate(new BigDecimal(tkRate)); |
| | | } |
| | | goods = loadYuShouInfo(goods, resultJSON); |
| | | return goods; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | 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.optString("item_id")); |
| | | goods.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId()); |
| | | 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")); |
| | | goods.setCouponStartFee(new BigDecimal(item.optString("coupon_start_fee"))); |
| | | goods.setCouponLeftCount(item.optInt("coupon_remain_count")); |
| | | goods.setCouponLink(null); |
| | | goods.setCouponAmount(new BigDecimal(item.optString("coupon_amount"))); |
| | | goods.setCouponTotalCount(item.optInt("coupon_total_count")); |
| | | goods.setCouponActivityId(item.optString("coupon_id")); |
| | | if (goods.getCouponStartFee().compareTo(new BigDecimal(0)) > 0) |
| | | goods.setCouponInfo(String.format("满%s元减%s元", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponStartFee()).toString(), |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())); |
| | | else |
| | | goods.setCouponInfo(String.format("%s元无条件券", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())); |
| | | |
| | | if (goods.getCouponStartFee().compareTo(new BigDecimal(0)) <= 0) { |
| | | goods.setCouponStartFee(goods.getCouponAmount()); |
| | | } |
| | | |
| | | } else { |
| | | goods.setCouponAmount(new BigDecimal(0)); |
| | | } |
| | | |
| | | 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.setTkMktStatus("0"); |
| | | goods.setIncludeDxjh(0); |
| | | |
| | | goods.setSellerId(item.optLong("seller_id")); |
| | | goods.setShopTitle(item.optString("nick")); |
| | | goods.setTitle(item.optString("title")); |
| | | goods.setProvcity(item.optString("provcity")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("level_one_category_id"))) { |
| | | goods.setRootCatId(item.optInt("level_one_category_id")); |
| | | } |
| | | goods.setRootCategoryName(item.optString("level_one_category_name")); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("category_id"))) { |
| | | goods.setLeafCatId(item.optInt("category_id")); |
| | | } |
| | | goods.setLeafName(item.optString("category_name")); |
| | | |
| | | goods.setTotalNum(1000); |
| | | goods.setUserType(item.optInt("user_type")); |
| | | goods.setUserTypeName(""); |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("commission_rate"))) { |
| | | goods.setTkRate(new BigDecimal(item.optString("commission_rate"))); |
| | | } else { |
| | | goods.setTkRate(new BigDecimal(0)); |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(item.optString("zk_final_price"))) { |
| | | goods.setZkPrice(new BigDecimal(item.optString("zk_final_price"))); |
| | | } else { |
| | | goods.setZkPrice(new BigDecimal(0)); |
| | | } |
| | | |
| | | 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)); |
| | | } |
| | | goods.setReservePrice(new BigDecimal(0)); |
| | | goods.setTotalFee(new BigDecimal("0")); |
| | | goods.setPictUrlWhite(item.optString("white_image")); |
| | | goods = loadYuShouInfo(goods, item); |
| | | return goods; |
| | | } |
| | | |
| | | public static void getShopGoodsList(Long shopId) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "tmall.omni.pc.iteminfo.getbyshopid"); |
| | | map.put("shop_id", shopId + ""); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey("24838852"); |
| | | app.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8"); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app); |
| | | System.out.println(json); |
| | | } catch (TaoKeApiException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 淘口令转商品ID |
| | | * |
| | | * @param token |
| | | * @return |
| | | */ |
| | | public static TokenConvertResult tokenConvert(String token) throws TaoBaoTokenParseException { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.tpwd.convert"); |
| | | map.put("password_content", token); |
| | | map.put("adzone_id", TaoBaoConstant.TAOBAO_PID_DEFAULT.split("_")[3]); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app); |
| | | |
| | | System.out.println(json.toString()); |
| | | |
| | | try { |
| | | JSONObject data = json.optJSONObject("tbk_tpwd_convert_response").optJSONObject("data"); |
| | | Gson gson = new Gson(); |
| | | |
| | | return gson.fromJson(data.toString(), TokenConvertResult.class); |
| | | } catch (Exception e) { |
| | | |
| | | return null; |
| | | } |
| | | |
| | | } catch (TaoKeApiException e) { |
| | | JSONObject msg = null; |
| | | try { |
| | | msg = JSONObject.fromObject(e.getMsg()); |
| | | } catch (Exception e2) { |
| | | } |
| | | if (msg != null && msg.optJSONObject("error_response") != null) { |
| | | throw new TaoBaoTokenParseException(msg.optJSONObject("error_response").optInt("sub_code"), |
| | | msg.optJSONObject("error_response").optString("sub_msg")); |
| | | } |
| | | } |
| | | 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(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<>(); |
| | | map.put("method", "taobao.tbk.dg.vegas.tlj.create"); |
| | | map.put("adzone_id", app.getPid().split("_")[3]); |
| | | map.put("item_id", auctionId + ""); |
| | | map.put("total_num", totalNum + ""); |
| | | map.put("name", name); |
| | | map.put("user_total_win_num_limit", "1"); |
| | | map.put("security_switch", "false"); |
| | | map.put("per_face", perface.toString()); |
| | | map.put("send_start_time", TimeUtil.getGernalTime(sendStartTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | if (sendEndTime != null) |
| | | map.put("send_end_time", TimeUtil.getGernalTime(sendEndTime.getTime(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | if (useEndTime != null) { |
| | | map.put("use_end_time", TimeUtil.getGernalTime(useEndTime.getTime(), "yyyy-MM-dd")); |
| | | map.put("use_end_time_mode", "2"); |
| | | } |
| | | |
| | | if (useStartTime != null) |
| | | map.put("use_start_time", TimeUtil.getGernalTime(useStartTime.getTime(), "yyyy-MM-dd")); |
| | | try { |
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | System.out.println(json); |
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_create_response"); |
| | | if (root != null && root.optJSONObject("result") != null) { |
| | | |
| | | if (root.optJSONObject("result").optBoolean("success")) { |
| | | JSONObject modelJson = root.optJSONObject("result").optJSONObject("model"); |
| | | TaoLiJinDTO dto = new TaoLiJinDTO(); |
| | | dto.setRightsId(modelJson.optString("rights_id")); |
| | | dto.setSendUrl(modelJson.optString("send_url")); |
| | | return dto; |
| | | } else { |
| | | LogHelper.error(json); |
| | | } |
| | | |
| | | // 接口返回异常 |
| | | String msgCode = root.optJSONObject("result").optString("msg_code"); |
| | | if (!StringUtil.isNullOrEmpty(msgCode)) { |
| | | TLJLogHelper.info(auctionId, root.toString());// 淘礼金异常信息记录 |
| | | switch (msgCode) { |
| | | case "FAIL_BIZ_ITEM_FORBIDDEN": |
| | | throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_FORBIDDEN, "该商品不支持创建淘礼金红包"); |
| | | case "FAIL_BIZ_ACCOUNT_UN_PAID": |
| | | case "PRE_FREEZE_ASSET_ACCOUNT_ERROR": |
| | | throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); |
| | | default: |
| | | throw new TaoKeApiException(Integer.parseInt(msgCode), root.toString()); |
| | | } |
| | | } |
| | | } |
| | | } catch (TaoKeApiException e) { |
| | | throw e; |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * @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.report"); |
| | | map.put("rights_id", rightsId); |
| | | map.put("adzone_id", pid.split("_")[3]); |
| | | |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | |
| | | try { |
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | System.out.println(json); |
| | | |
| | | JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_report_response"); |
| | | |
| | | 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) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static void getCouponByAuctionId(String auctionId) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.itemid.coupon.get"); |
| | | map.put("platform", 2 + ""); |
| | | map.put("pid", TaoBaoConstant.TAOBAO_PID_DEFAULT); |
| | | map.put("num_iids", auctionId + ""); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, app); |
| | | System.out.print(json); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取淘宝系统时间(收费API,谨慎调用) |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getTaoBaoSystemTime() { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.time.get"); |
| | | try { |
| | | JSONObject json = TaoKeBaseUtil.baseRequest(map, false); |
| | | String time = json.optJSONObject("time_get_response").optString("time"); |
| | | return new Date(TimeUtil.convertToTimeTemp(time, "yyyy-MM-dd HH:mm:ss")); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 官方活动推广 |
| | | * |
| | | * @param adZoneId -广告位 |
| | | * @param promotionSceneId-活动ID |
| | | * @param relationId -渠道ID |
| | | * @return |
| | | */ |
| | | public static TaoKeOfficialActivityConvertResultDTO officialActivityConvert(String adZoneId, |
| | | String promotionSceneId, String relationId) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.activity.info.get"); |
| | | map.put("adzone_id", adZoneId); |
| | | map.put("activity_material_id", promotionSceneId); |
| | | if (relationId != null) |
| | | map.put("relation_id", relationId); |
| | | TaoKeAppInfo app = new TaoKeAppInfo(); |
| | | app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); |
| | | app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); |
| | | try { |
| | | String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app); |
| | | System.out.println(result); |
| | | JSONObject json = JSONObject.fromObject(result); |
| | | if (json != null) { |
| | | json = json.optJSONObject("tbk_activity_info_get_response"); |
| | | if (json.optJSONObject("data") != null) { |
| | | return JsonUtil.getSimpleGson().fromJson(json.optJSONObject("data").toString(), |
| | | TaoKeOfficialActivityConvertResultDTO.class); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | 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 + ""); |
| | | map.put("page_size", count + ""); |
| | | map.put("page_no", 1 + ""); |
| | | map.put("material_id", 13256 + ""); |
| | | |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, true); |
| | | |
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response"); |
| | | if (response != null && response.optJSONObject("result_list") != null) { |
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data"); |
| | | if (array != null) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return goodsList; |
| | | } |
| | | |
| | | 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 + ""); |
| | | map.put("num_iids", auctionId + ""); |
| | | map.put("pid", TaoBaoConstant.TAOBAO_PID_DEFAULT); |
| | | |
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, |
| | | TaoBaoConstant.TAOBAO_AUTH_APPSECRET, TaoBaoConstant.TAOBAO_PID_DEFAULT)); |
| | | |
| | | JSONObject response = resultJSON.optJSONObject("tbk_dg_optimus_material_response"); |
| | | if (response != null && response.optJSONObject("result_list") != null) { |
| | | JSONArray array = response.optJSONObject("result_list").optJSONArray("map_data"); |
| | | if (array != null) { |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | JSONObject item = array.optJSONObject(i); |
| | | TaoBaoGoodsBrief goods = parseWuLiaoItemFromMaterialId(item); |
| | | if (goods != null) |
| | | goodsList.add(goods); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return goodsList; |
| | | } |
| | | |
| | | /** |
| | | * 淘宝客-推广者-官方活动信息获取 |
| | | * |
| | | * @param activityMaterialId |
| | | * @param pid |
| | | * @param relationId |
| | | * @return String 返回类型 |
| | | * @throws |
| | | * @Title: getActivityInfo |
| | | * @Description: |
| | | */ |
| | | public static String getActivityInfo(String activityMaterialId, String pid, String relationId) { |
| | | Map<String, String> map = new HashMap<>(); |
| | | map.put("method", "taobao.tbk.activity.info.get"); |
| | | map.put("activity_material_id", activityMaterialId); |
| | | map.put("adzone_id", pid.split("_")[3] + ""); |
| | | map.put("relation_id", relationId); |
| | | |
| | | JSONObject resultJSON = null; |
| | | try { |
| | | resultJSON = TaoKeBaseUtil.baseRequest(map, |
| | | new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid)); |
| | | JSONObject response = resultJSON.optJSONObject("tbk_activity_info_get_response"); |
| | | if (response != null && response.optJSONObject("data") != null) { |
| | | return response.optJSONObject("data").optString("click_url"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | public static class QuanInfo { |
| | | public String coupon_start_time;// 开始时间 |
| | | public String coupon_end_time; // 券结束时间 |
| | | public BigDecimal coupon_amount;// 券金额 |
| | | public int coupon_total_count;// 券总数量 |
| | | public int coupon_remain_count;// 券剩余数量 |
| | | public BigDecimal coupon_start_fee;// 券起始金额 |
| | | } |
| | | |
| | | public static class TokenConvertResult { |
| | | 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 String getNum_iid() { |
| | | return num_iid; |
| | | } |
| | | |
| | | public void setNum_iid(String num_iid) { |
| | | this.num_iid = num_iid; |
| | | } |
| | | |
| | | public String getClick_url() { |
| | | return click_url; |
| | | } |
| | | |
| | | public void setClick_url(String click_url) { |
| | | this.click_url = click_url; |
| | | } |
| | | |
| | | public String getSeller_id() { |
| | | return seller_id; |
| | | } |
| | | |
| | | public void setSeller_id(String seller_id) { |
| | | this.seller_id = seller_id; |
| | | } |
| | | |
| | | public String getOrigin_url() { |
| | | return origin_url; |
| | | } |
| | | |
| | | public void setOrigin_url(String origin_url) { |
| | | this.origin_url = origin_url; |
| | | } |
| | | |
| | | public String getOrigin_pid() { |
| | | return origin_pid; |
| | | } |
| | | |
| | | public void setOrigin_pid(String origin_pid) { |
| | | this.origin_pid = origin_pid; |
| | | } |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | |