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

---
 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java |  647 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 508 insertions(+), 139 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
index 4441c0f..f137847 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -21,10 +21,12 @@
 import com.yeshi.goods.facade.dto.taobao.TaoBaoShopInfoDTO;
 import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.goods.facade.entity.taobao.TaoBaoHead;
+import com.yeshi.goods.facade.utils.taobao.DaTaoKeApiUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.yeshi.utils.JsonUtil;
 import org.yeshi.utils.MoneyBigDecimalUtil;
+import org.yeshi.utils.NumberUtil;
 import org.yeshi.utils.TimeUtil;
 import org.yeshi.utils.taobao.TbImgUtil;
 
@@ -34,79 +36,6 @@
 //娣樺疂瀹PI鎺ュ彛
 public class TaoKeApiUtil {
 
-    // 瑙f瀽鍒哥殑鍐呭
-    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.optString("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;
-    }
-
     /**
      * 鑾峰彇鍟嗗搧璇︽儏锛岀畝鐗�
      *
@@ -115,8 +44,9 @@
      */
     public static TaoBaoGoodsBrief getSimpleGoodsInfo(String id) throws TaobaoGoodsDownException {
         Map<String, String> map = new HashMap<>();
-        //TODO 涓存椂鎺ュ彛 taobao.tbk.item.info.get
-        map.put("method", "taobao.tbk.item.info.temporary.get");
+
+        map.put("method", "taobao.tbk.item.info.get");
+
         map.put("num_iids", id + "");
         String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
         System.out.println(resultStr);
@@ -128,13 +58,55 @@
         }
 
         //TODO 淇敼涓存椂鎺ュ彛 tbk_item_info_get_response
-        if (data.optJSONObject("tbk_item_info_temporary_get_response") == null)
+        if (data.optJSONObject("tbk_item_info_get_response") == null)
             return null;
-        JSONArray array = data.optJSONObject("tbk_item_info_temporary_get_response").optJSONObject("results")
+        JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
                 .optJSONArray("n_tbk_item");
         if (array != null && array.size() > 0) {
             JSONObject item = array.optJSONObject(0);
-            return parseSimpleGoodsInfo(item);
+            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
+            if (goods != null && !NumberUtil.isNumeric(id)) {
+                goods.setAuctionId(id);
+            }
+            return goods;
+        }
+        return null;
+    }
+
+    // 鑾峰彇鍟嗗搧璇︽儏鑷喘
+    public static TaoBaoGoodsBrief getSimpleGoodsInfoForOwnBuy(String id) throws TaobaoGoodsDownException {
+        Map<String, String> map = new HashMap<>();
+
+        map.put("method", "taobao.tbk.item.info.get");
+
+        map.put("num_iids", id + "");
+        String resultStr = null;
+        if (!NumberUtil.isNumeric(id)) {
+            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
+        } else {
+            map.put("biz_scene_id", "2");
+            resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, TaoBaoConstant.getSpecialAuthAppInfo(TaoBaoConstant.TAOBAO_PID_DEFAULT));
+        }
+        System.out.println(resultStr);
+        JSONObject data = JSONObject.fromObject(resultStr);
+        // 鍟嗗搧涓嬫灦
+        if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 15
+                && data.optJSONObject("error_response").optInt("sub_code") == 50001) {
+            throw new TaobaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "鍟嗗搧涓嬫灦");
+        }
+
+        //TODO 淇敼涓存椂鎺ュ彛 tbk_item_info_get_response
+        if (data.optJSONObject("tbk_item_info_get_response") == null)
+            return null;
+        JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
+                .optJSONArray("n_tbk_item");
+        if (array != null && array.size() > 0) {
+            JSONObject item = array.optJSONObject(0);
+            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
+            if (goods != null && !NumberUtil.isNumeric(id)) {
+                goods.setAuctionId(id);
+            }
+            return goods;
         }
         return null;
     }
@@ -143,7 +115,11 @@
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl(item.optString("item_url"));
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 12);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         if (item.optJSONObject("small_images") != null) {
             JSONArray imgArray = item.optJSONObject("small_images").optJSONArray("string");
             if (imgArray != null) {
@@ -212,24 +188,27 @@
     }
 
     private static TaoBaoGoodsBrief loadYuShouInfo(TaoBaoGoodsBrief goods, JSONObject item) {
+
         if (goods != null && item != null) {
-            // 棰勫敭鐩稿叧瑙f瀽
-            goods.setYsylClickUrl(item.optString("ysyl_click_url"));
-            if (!StringUtil.isNullOrEmpty(item.optString("ysyl_commission_rate")))
-                goods.setYsylCommissionRate(new BigDecimal(item.optString("ysyl_commission_rate")));
-            goods.setYsylTljFace(item.optString("ysyl_tlj_face"));
-            goods.setYsylTljSendTime(item.optString("ysyl_tlj_send_time"));
-            goods.setYsylTljUseEndTime(item.optString("ysyl_tlj_use_end_time"));
-            goods.setYsylTljUseStartTime(item.optString("ysyl_tlj_use_start_time"));
+            JSONObject preSaleInfo = item.optJSONObject("presale_info");
+            if (preSaleInfo != null) {
+                // 棰勫敭鐩稿叧瑙f瀽
+                goods.setYsylClickUrl(item.optString("ysyl_click_url"));
+                if (!StringUtil.isNullOrEmpty(item.optString("ysyl_commission_rate")))
+                    goods.setYsylCommissionRate(new BigDecimal(item.optString("ysyl_commission_rate")));
+                goods.setYsylTljFace(item.optString("ysyl_tlj_face"));
+                goods.setYsylTljSendTime(item.optString("ysyl_tlj_send_time"));
+                goods.setYsylTljUseEndTime(item.optString("ysyl_tlj_use_end_time"));
+                goods.setYsylTljUseStartTime(item.optString("ysyl_tlj_use_start_time"));
 
-            goods.setPresaleDeposit(item.optString("presale_deposit"));
-            goods.setPresaleDiscountFeeText(item.optString("presale_discount_fee_text"));
-            goods.setPresaleEndTime(item.optString("presale_end_time"));
-            goods.setPresaleStartTime(item.optString("presale_start_time"));
-            goods.setPresaleTailEndTime(item.optString("presale_tail_end_time"));
-            goods.setPresaleTailStartTime(item.optString("presale_tail_start_time"));
-
-            return goods;
+                goods.setPresaleDeposit(preSaleInfo.optString("presale_deposit"));
+                goods.setPresaleDiscountFeeText(preSaleInfo.optString("presale_discount_fee_text"));
+                goods.setPresaleEndTime(preSaleInfo.optString("presale_end_time"));
+                goods.setPresaleStartTime(preSaleInfo.optString("presale_start_time"));
+                goods.setPresaleTailEndTime(preSaleInfo.optString("presale_tail_end_time"));
+                goods.setPresaleTailStartTime(preSaleInfo.optString("presale_tail_start_time"));
+                return goods;
+            }
         }
         return goods;
     }
@@ -367,7 +346,7 @@
         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())) {
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                     g.setAuctionId(goods.getAuctionId());
                     g.setCreatetime(new Date());
                     g.setMaterialLibType(goods.getMaterialLibType());
@@ -377,7 +356,7 @@
             }
 
         // 浠庤浆閾炬悳绱�
-        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
+        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                 new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                         TaoBaoConstant.TAOBAO_PID_DEFAULT), specialId, relationId);
 
@@ -432,7 +411,7 @@
                 goods.getUserType(), app, null, null);
         if (result != null && result.getTaoBaoGoodsBriefs() != null)
             for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                if (TaoBaoUtil.isEqual( goods.getAuctionId() , g.getAuctionId())) {
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                     g.setAuctionId(goods.getAuctionId());
                     // 鍒ゆ柇鏄惁鏈変紭鎯犲埜
                     if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) {
@@ -458,7 +437,7 @@
             }
 
         // 浠庤浆閾炬悳绱�
-        TaoBaoGoodsBrief newGoods = specialConvertCoupon(goods.getAuctionId(),
+        TaoBaoGoodsBrief newGoods = specialConvertCouponV2(goods.getAuctionId(),
                 new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET,
                         TaoBaoConstant.TAOBAO_PID_DEFAULT), null, null);
 
@@ -512,7 +491,7 @@
                 goods.getUserType(), app, specialId, relationId);
         if (result != null && result.getTaoBaoGoodsBriefs() != null)
             for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                if (TaoBaoUtil.isEqual( goods.getAuctionId(), g.getAuctionId())) {
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                     g.setAuctionId(goods.getAuctionId());
                     g.setCreatetime(new Date());
                     return g;
@@ -553,7 +532,7 @@
                     goods.getUserType(), null, null);
             if (result != null && result.getTaoBaoGoodsBriefs() != null)
                 for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                    if ( TaoBaoUtil.isEqual(goods.getAuctionId(),g.getAuctionId())) {
+                    if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
                         g.setAuctionId(goods.getAuctionId());
                         g.setAuctionUrl(goods.getAuctionUrl());
                         g.setShopTitle(goods.getShopTitle());
@@ -590,7 +569,7 @@
             if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
                     && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
                 for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
-                    if (TaoBaoUtil.isEqual( g.getAuctionId(), goods.getAuctionId())) {
+                    if (TaoBaoUtil.isEqual(g.getAuctionId(), goods.getAuctionId())) {
                         g.setImgList(goods.getImgList());
                         g.setAuctionId(goods.getAuctionId());
                         g.setAuctionUrl(goods.getAuctionUrl());
@@ -635,16 +614,19 @@
         if (filter.getKey() != null && filter.getKey().trim().equalsIgnoreCase(""))
             return null;
 
-        if (filter.getKey() != null && filter.getKey().length() > 100)
-            return null;
+//        if (filter.getKey() != null && filter.getKey().length() > 100)
+//            return null;
 
         PageEntity pageEntity = new PageEntity();
         TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
         Map<String, String> map = new HashMap<>();
-        //TODO 涓存椂鎺ュ彛taobao.tbk.dg.material.optional
-        map.put("method", "taobao.tbk.dg.material.temporary.optional");
+        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-鍔ㄦ�両D杞摼鍦烘櫙锛�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)) {
@@ -756,12 +738,12 @@
         }
 
         String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
-         System.out.println("resultStr"+ resultStr);
+        System.out.println("resultStr" + resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
         //TODO 涓存椂鎺ュ彛tbk_dg_material_optional_response
-        if (data.optJSONObject("tbk_dg_material_temporary_optional_response") != null
-                && data.optJSONObject("tbk_dg_material_temporary_optional_response").optJSONObject("result_list") != null) {
-            JSONArray array = data.optJSONObject("tbk_dg_material_temporary_optional_response").optJSONObject("result_list")
+        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) {
@@ -773,8 +755,197 @@
             }
             taoBaoSearchResult.setTaoBaoGoodsBriefs(goodsList);
 
-            JSONObject optJSONObject = data.optJSONObject("tbk_dg_material_temporary_optional_response");
+            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-鍔ㄦ�両D杞摼鍦烘櫙锛�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"); // 娣樺浣i噾姣旂巼楂樺埌浣�
+            } else if (filter.getSort() == TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH) {
+                map.put("sort", "tk_rate_asc"); // 娣樺浣i噾姣旂巼浣庡埌楂�
+            } 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);
@@ -838,7 +1009,7 @@
         TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
         Map<String, String> map = new HashMap<>();
         //TODO 涓存椂鎺ュ彛 taobao.tbk.dg.material.optional
-        map.put("method", "taobao.tbk.dg.material.temporary.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() + "");
@@ -859,9 +1030,9 @@
         System.out.println(resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
         //TODO 涓存椂鎺ュ彛 tbk_dg_material_optional_response
-        if (data.optJSONObject("tbk_dg_material_temporary_optional_response") != null
-                && data.optJSONObject("tbk_dg_material_temporary_optional_response").optJSONObject("result_list") != null) {
-            JSONArray array = data.optJSONObject("tbk_dg_material_temporary_optional_response").optJSONObject("result_list")
+        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) {
@@ -956,7 +1127,7 @@
     }
 
     // 瑙f瀽鐗╂枡
-    private static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
+    public static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         goods.setPictUrl(item.optString("pict_url"));
 
@@ -966,7 +1137,11 @@
 
         goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl("https:" + item.optString("url"));
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 100);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         goods.setCouponInfo(item.optString("coupon_info"));
 
         if (goods.getCouponInfo() != null)
@@ -1049,6 +1224,113 @@
         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;
+    }
+
 
     /**
      * 鑾峰彇娣樺彛浠�
@@ -1786,6 +2068,62 @@
     }
 
 
+    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) {
@@ -1794,7 +2132,11 @@
         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());
-        goods.setBiz30day(item.optInt("volume"));
+        if (item.containsKey("annual_vol")) {
+            goods.setBiz30day(item.optInt("annual_vol") / 12);
+        } else {
+            goods.setBiz30day(item.optInt("volume"));
+        }
         if (!StringUtil.isNullOrEmpty(item.optString("coupon_amount"))) {
             goods.setCouponEffectiveEndTime(TimeUtil.getGernalTime(item.optLong("coupon_end_time"), "yyyy-MM-dd"));
             goods.setCouponEffectiveStartTime(TimeUtil.getGernalTime(item.optLong("coupon_start_time"), "yyyy-MM-dd"));
@@ -1940,6 +2282,7 @@
         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"}
@@ -2007,13 +2350,13 @@
     }
 
     /**
+     * @return com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport
      * @author hxh
      * @description 娣樼ぜ閲戞姤鍛� 鎺ュ彛鏂囨。锛歨ttps://open.taobao.com/api.htm?source=search&docId=58736&docType=2
      * @date 10:57 2022/1/11
      * @param: rightsId
-     * @return com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinReport
      **/
-    public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId,String pid) {
+    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);
@@ -2031,21 +2374,21 @@
             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;
+                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) {
@@ -2282,12 +2625,38 @@
         }
     }
 
-    public static  void main(String[] args) throws TaobaoGoodsDownException {
-        //鎼滅储
-        TaoBaoGoodsBrief goods=  searchGoodsDetail("X4g0DS2OK34iwyyI06AQQCg-XQWo4eH00jgRjx3iB0");
+    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("銆愭窐瀹濄�慼ttps://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";
 
-        System.out.println(goods);
 
+        TaoKeAppInfo app = new TaoKeAppInfo("24980167", "e0a2e05deabf5ce039b52e5b492d5382", "mm_124933865_56750082_89555600043");
+
+        specialConvertCouponV2("ZMxBywvT6tPr0wabjaFBQPiVt6-g4DYZPC2OoJaaRXIoq", app, "511379263", null);
     }
 
 }

--
Gitblit v1.8.0