From 651f2856e9ae10aacbfb8327d967aacbb6d58333 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 12 四月 2023 18:13:58 +0800
Subject: [PATCH] 大淘客API修复/唯品会订单爬取策略修改

---
 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java |  148 +++++++++++++++++++++++++++++--------------------
 1 files changed, 87 insertions(+), 61 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 d52a16d..639ff93 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,6 +21,7 @@
 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;
@@ -50,7 +51,7 @@
                 JSONObject item = array.optJSONObject(i);
                 TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
                 goods.setPictUrl(item.optString("pict_url"));
-                goods.setAuctionId(item.optLong("num_iid"));
+                goods.setAuctionId(item.optString("num_iid"));
                 goods.setAuctionUrl(item.optString("item_url"));
                 goods.setBiz30day(item.optInt("volume"));
                 goods.setCouponInfo(item.optString("coupon_info"));
@@ -113,9 +114,11 @@
      * @param id -鍟嗗搧AuctionId
      * @return
      */
-    public static TaoBaoGoodsBrief getSimpleGoodsInfo(Long id) throws TaobaoGoodsDownException {
+    public static TaoBaoGoodsBrief getSimpleGoodsInfo(String id) throws TaobaoGoodsDownException {
         Map<String, String> map = new HashMap<>();
+        //TODO 涓存椂鎺ュ彛 taobao.tbk.item.info.get
         map.put("method", "taobao.tbk.item.info.get");
+//        map.put("biz_scene_id", 2 + "");
         map.put("num_iids", id + "");
         String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
         System.out.println(resultStr);
@@ -126,20 +129,25 @@
             throw new TaobaoGoodsDownException(data.optJSONObject("error_response").optInt("code"), "鍟嗗搧涓嬫灦");
         }
 
+        //TODO 淇敼涓存椂鎺ュ彛 tbk_item_info_get_response
         if (data.optJSONObject("tbk_item_info_get_response") == null)
             return null;
         JSONArray array = data.optJSONObject("tbk_item_info_get_response").optJSONObject("results")
                 .optJSONArray("n_tbk_item");
         if (array != null && array.size() > 0) {
             JSONObject item = array.optJSONObject(0);
-            return parseSimpleGoodsInfo(item);
+            TaoBaoGoodsBrief goods = parseSimpleGoodsInfo(item);
+            if(goods!=null){
+                goods.setAuctionId(id);
+            }
+            return goods;
         }
         return null;
     }
 
     private static TaoBaoGoodsBrief parseSimpleGoodsInfo(JSONObject item) {
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
-        goods.setAuctionId(item.optLong("num_iid"));
+        goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl(item.optString("item_url"));
         goods.setBiz30day(item.optInt("volume"));
         if (item.optJSONObject("small_images") != null) {
@@ -232,7 +240,7 @@
         return goods;
     }
 
-    public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId)
+    public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<String> listId)
             throws TaoKeApiException, TaobaoGoodsDownException {
         if (listId == null || listId.size() == 0) {
             throw new TaobaoGoodsDownException(1, "娣樺疂鍟嗗搧ID涓嶈兘涓虹┖");
@@ -243,7 +251,7 @@
         }
 
         StringBuffer ids = new StringBuffer();
-        for (Long id : listId) {
+        for (String id : listId) {
             ids.append(id + ",");
         }
 
@@ -352,7 +360,7 @@
      * @return
      * @throws TaobaoGoodsDownException
      */
-    public static TaoBaoGoodsBrief searchGoodsDetail(Long id, String specialId, String relationId) throws TaobaoGoodsDownException {
+    public static TaoBaoGoodsBrief searchGoodsDetail(String id, String specialId, String relationId) throws TaobaoGoodsDownException {
         TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
         if (goods == null)
             return null;
@@ -365,8 +373,8 @@
         if (result != null && result.getTaoBaoGoodsBriefs() != null)
             for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
                 System.out.println(goods.getAuctionId() + ":" + g.getAuctionId());
-                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
-                    g.setId(goods.getAuctionId());
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
+                    g.setAuctionId(goods.getAuctionId());
                     g.setCreatetime(new Date());
                     g.setMaterialLibType(goods.getMaterialLibType());
                     g.setProvcity(goods.getProvcity());
@@ -407,7 +415,7 @@
 
     }
 
-    public static TaoBaoGoodsBrief searchGoodsDetail(Long id) throws TaobaoGoodsDownException {
+    public static TaoBaoGoodsBrief searchGoodsDetail(String id) throws TaobaoGoodsDownException {
         return searchGoodsDetail(id, null, null);
     }
 
@@ -418,7 +426,7 @@
      * @return
      * @throws TaobaoGoodsDownException
      */
-    public static TaoBaoGoodsBrief searchGoodsDetail(Long id, TaoKeAppInfo app) throws TaobaoGoodsDownException {
+    public static TaoBaoGoodsBrief searchGoodsDetail(String id, TaoKeAppInfo app) throws TaobaoGoodsDownException {
         TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
         if (goods == null)
             return null;
@@ -430,8 +438,8 @@
                 goods.getUserType(), app, null, null);
         if (result != null && result.getTaoBaoGoodsBriefs() != null)
             for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
-                    g.setId(goods.getAuctionId());
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
+                    g.setAuctionId(goods.getAuctionId());
                     // 鍒ゆ柇鏄惁鏈変紭鎯犲埜
                     if (!StringUtil.isNullOrEmpty(g.getCouponActivityId())) {
                         // 鑾峰彇浼樻儬鍒歌鎯�
@@ -497,7 +505,7 @@
      * @return
      * @throws TaobaoGoodsDownException
      */
-    public static TaoBaoGoodsBrief searchGoodsDetailForConvert(Long id, TaoKeAppInfo app, String specialId, String relationId)
+    public static TaoBaoGoodsBrief searchGoodsDetailForConvert(String id, TaoKeAppInfo app, String specialId, String relationId)
             throws TaobaoGoodsDownException {
         TaoBaoGoodsBrief goods = getSimpleGoodsInfo(id);
         if (goods == null)
@@ -510,8 +518,8 @@
                 goods.getUserType(), app, specialId, relationId);
         if (result != null && result.getTaoBaoGoodsBriefs() != null)
             for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                if (goods.getAuctionId().longValue() == g.getAuctionId()) {
-                    g.setId(goods.getAuctionId());
+                if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
+                    g.setAuctionId(goods.getAuctionId());
                     g.setCreatetime(new Date());
                     return g;
                 }
@@ -551,8 +559,8 @@
                     goods.getUserType(), null, null);
             if (result != null && result.getTaoBaoGoodsBriefs() != null)
                 for (TaoBaoGoodsBrief g : result.getTaoBaoGoodsBriefs()) {
-                    if (goods.getAuctionId().longValue() == g.getAuctionId()) {
-                        g.setId(goods.getAuctionId());
+                    if (TaoBaoUtil.isEqual(goods.getAuctionId(), g.getAuctionId())) {
+                        g.setAuctionId(goods.getAuctionId());
                         g.setAuctionUrl(goods.getAuctionUrl());
                         g.setShopTitle(goods.getShopTitle());
 
@@ -588,9 +596,9 @@
             if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
                     && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
                 for (TaoBaoGoodsBrief g : searchResult.getTaoBaoGoodsBriefs()) {
-                    if (g.getAuctionId().longValue() == goods.getAuctionId()) {
+                    if (TaoBaoUtil.isEqual(g.getAuctionId(), goods.getAuctionId())) {
                         g.setImgList(goods.getImgList());
-                        g.setId(goods.getAuctionId());
+                        g.setAuctionId(goods.getAuctionId());
                         g.setAuctionUrl(goods.getAuctionUrl());
                         g.setShopTitle(goods.getShopTitle());
 
@@ -633,15 +641,20 @@
         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.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)) {
@@ -753,8 +766,9 @@
         }
 
         String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
-        // System.out.println("resultStr"+ resultStr);
+        System.out.println("resultStr" + resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
+        //TODO 涓存椂鎺ュ彛tbk_dg_material_optional_response
         if (data.optJSONObject("tbk_dg_material_optional_response") != null
                 && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) {
             JSONArray array = data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list")
@@ -833,6 +847,7 @@
             provcity = provcity.split(" ")[provcity.split(" ").length - 1];
         TaoBaoSearchResult taoBaoSearchResult = new TaoBaoSearchResult();
         Map<String, String> map = new HashMap<>();
+        //TODO 涓存椂鎺ュ彛 taobao.tbk.dg.material.optional
         map.put("method", "taobao.tbk.dg.material.optional");
         map.put("page_size", 50 + "");
         map.put("page_no", 1 + "");
@@ -853,6 +868,7 @@
         String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true);
         System.out.println(resultStr);
         JSONObject data = JSONObject.fromObject(resultStr);
+        //TODO 涓存椂鎺ュ彛 tbk_dg_material_optional_response
         if (data.optJSONObject("tbk_dg_material_optional_response") != null
                 && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) {
             JSONArray array = data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list")
@@ -950,7 +966,7 @@
     }
 
     // 瑙f瀽鐗╂枡
-    private static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
+    public static TaoBaoGoodsBrief parseWuLiaoItem(JSONObject item) {
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         goods.setPictUrl(item.optString("pict_url"));
 
@@ -958,7 +974,7 @@
             goods.setPictUrlWhite(item.optString("white_image"));
         }
 
-        goods.setAuctionId(item.optLong("num_iid"));
+        goods.setAuctionId(item.optString("num_iid"));
         goods.setAuctionUrl("https:" + item.optString("url"));
         goods.setBiz30day(item.optInt("volume"));
         goods.setCouponInfo(item.optString("coupon_info"));
@@ -1106,7 +1122,7 @@
      * @param activityId
      * @return
      */
-    public static QuanInfo getQuanInfo(Long auctionId, String activityId) {
+    public static QuanInfo getQuanInfo(String auctionId, String activityId) {
         QuanInfo info = new TaoKeApiUtil.QuanInfo();
         Map<String, String> map = new HashMap<>();
         map.put("method", "taobao.tbk.coupon.get");
@@ -1169,7 +1185,7 @@
                     if (url.contains("s.click.taobao.com/t?e=m")) {
                         TaoBaoGoodsBrief goods;
                         try {
-                            goods = searchGoodsDetail(item.optLong("num_iid"));
+                            goods = searchGoodsDetail(item.optString("num_iid"));
                             if (goods != null)
                                 goodsList.add(goods);
                         } catch (TaobaoGoodsDownException e) {
@@ -1371,7 +1387,7 @@
         System.out.println(resultStr);
     }
 
-    public static void getTAEGoodsDetail(Long auctionId) {
+    public static void getTAEGoodsDetail(String auctionId) {
         Map<String, String> map = new HashMap<>();
         map.put("method", "taobao.tae.items.list");
         map.put("fields", "title,nick,pic_url,location,cid,price,post_fee,promoted_service,ju,shop_name");
@@ -1704,7 +1720,7 @@
         return null;
     }
 
-    public static void specialConvertItem(Long auctionId, TaoKeAppInfo app) {
+    public static void specialConvertItem(String auctionId, TaoKeAppInfo app) {
         String pid = app.getPid();
         String[] sts = pid.split("_");
         Map<String, String> map = new HashMap<>();
@@ -1721,7 +1737,7 @@
         }
     }
 
-    public static TaoBaoGoodsBrief specialConvertCoupon(Long auctionId, TaoKeAppInfo app, String specialId, String relationId) {
+    public static TaoBaoGoodsBrief specialConvertCoupon(String auctionId, TaoKeAppInfo app, String specialId, String relationId) {
         String pid = app.getPid();
         String[] sts = pid.split("_");
         Map<String, String> map = new HashMap<>();
@@ -1786,7 +1802,7 @@
         TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief();
         // 璁剧疆鎴�320*320鐨勫浘鐗囧昂瀵�
         goods.setPictUrl(TbImgUtil.getTBSize320Img("https:" + item.optString("pict_url")));
-        goods.setAuctionId(item.optLong("item_id"));
+        goods.setAuctionId(item.optString("item_id"));
         goods.setAuctionUrl("https://item.taobao.com/item.htm?id=" + goods.getAuctionId());
         goods.setBiz30day(item.optInt("volume"));
         if (!StringUtil.isNullOrEmpty(item.optString("coupon_amount"))) {
@@ -1934,10 +1950,11 @@
         return null;
     }
 
+
     // 娣樼ぜ閲戝垱寤�
     //{"result":{"msg_code":"FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR","msg_info":"浠婃棩璇ュ晢鍝佹窐绀奸噾鍒涘缓鏁板凡瓒呬笂闄愶紝璇锋偍鏄庢棩鍐嶈瘯","success":false},"request_id":"10p30v02qadkq"}
     //{"result":{"msg_code":"ASSET_ACCOUNT_BALANCE_NOT_ENOUGH","msg_info":"璐︽埛棰勭畻涓嶈冻","success":false},"request_id":"5caz9izr7jqp"}
-    public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum,
+    public static TaoLiJinDTO createTaoLiJin(String auctionId, String name, BigDecimal perface, int totalNum,
                                              Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app)
             throws TaoLiJinCreateException, TaoKeApiException {
         Map<String, String> map = new HashMap<>();
@@ -2000,11 +2017,18 @@
         return null;
     }
 
-    // 娣樼ぜ閲戞姤鍛�
-    public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId) {
+    /**
+     * @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
+     **/
+    public static UserTaoLiJinReport getTaoLiJinEffective(String rightsId, String pid) {
         Map<String, String> map = new HashMap<>();
-        map.put("method", "taobao.tbk.dg.vegas.tlj.instance.report");
+        map.put("method", "taobao.tbk.dg.vegas.tlj.report");
         map.put("rights_id", rightsId);
+        map.put("adzone_id", pid.split("_")[3]);
 
         TaoKeAppInfo app = new TaoKeAppInfo();
         app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
@@ -2015,27 +2039,24 @@
             JSONObject json = JSONObject.fromObject(result);
             System.out.println(json);
 
-            JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_instance_report_response");
+            JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_report_response");
 
-            if (root != null && root.optJSONObject("result") != null) {
-                if (root.optJSONObject("result").optBoolean("success")) {
-                    JSONObject modelJson = root.optJSONObject("result").optJSONObject("model");
-
-                    if (modelJson != null && modelJson.size() > 0) {
-                        UserTaoLiJinReport report = new UserTaoLiJinReport();
-                        report.setId(rightsId);
-                        report.setUnfreezeAmount(new BigDecimal(modelJson.optString("unfreeze_amount")));
-                        report.setUnfreezeNum(modelJson.optInt("unfreeze_num"));
-                        report.setRefundAmount(new BigDecimal(modelJson.optString("refund_amount")));
-                        report.setRefundNum(modelJson.optInt("refund_num"));
-                        report.setAlipayAmount(new BigDecimal(modelJson.optString("alipay_amount")));
-                        report.setUseAmount(new BigDecimal(modelJson.optString("use_amount")));
-                        report.setUseNum(modelJson.optInt("use_num"));
-                        report.setWinAmount(new BigDecimal(modelJson.optString("win_amount")));
-                        report.setWinNum(modelJson.optInt("win_num"));
-                        report.setPreCommissionAmount(new BigDecimal(modelJson.optString("pre_commission_amount")));
-                        return report;
-                    }
+            if (root != null && root.optBoolean("result_success")) {
+                JSONObject modelJson = root.optJSONObject("model").optJSONObject("extra");
+                if (modelJson != null && modelJson.size() > 0) {
+                    UserTaoLiJinReport report = new UserTaoLiJinReport();
+                    report.setId(rightsId);
+                    report.setWinAmount(new BigDecimal(modelJson.optString("win_sum_amt")));
+                    report.setWinNum(modelJson.optInt("win_pv"));
+                    report.setRefundAmount(new BigDecimal(modelJson.optString("refund_sum_amt")));
+                    report.setRefundNum(modelJson.optInt("refund_num"));
+                    report.setAlipayAmount(new BigDecimal(modelJson.optString("alipay_amt")));
+                    report.setUseAmount(new BigDecimal(modelJson.optString("use_sum_amt")));
+                    report.setUseNum(modelJson.optInt("use_num"));
+                    report.setUnfreezeAmount(new BigDecimal(modelJson.optString("remaining_amt")));
+                    report.setUnfreezeNum(modelJson.optInt("remaining_num"));
+                    report.setPreCommissionAmount(new BigDecimal(modelJson.optString("pre_pub_share_fee_for_disp")));
+                    return report;
                 }
             }
         } catch (Exception e) {
@@ -2044,7 +2065,7 @@
         return null;
     }
 
-    public static void getCouponByAuctionId(Long auctionId) {
+    public static void getCouponByAuctionId(String auctionId) {
         Map<String, String> map = new HashMap<>();
         map.put("method", "taobao.tbk.itemid.coupon.get");
         map.put("platform", 2 + "");
@@ -2116,7 +2137,7 @@
         return null;
     }
 
-    public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(Long auctionId, int count) {
+    public static List<TaoBaoGoodsBrief> guessLikeByAuctionId(String auctionId, int count) {
         Map<String, String> map = new HashMap<>();
         map.put("method", "taobao.tbk.dg.optimus.material");
         map.put("item_id", auctionId + "");
@@ -2149,7 +2170,7 @@
         return goodsList;
     }
 
-    public static List<TaoBaoGoodsBrief> getCouponListByItemId(Long auctionId) {
+    public static List<TaoBaoGoodsBrief> getCouponListByItemId(String auctionId) {
         Map<String, String> map = new HashMap<>();
         map.put("method", "taobao.tbk.itemid.coupon.get");
         map.put("platform", auctionId + "");
@@ -2225,17 +2246,17 @@
     }
 
     public static class TokenConvertResult {
-        private Long num_iid;//	鍟嗗搧Id
+        private String num_iid;//	鍟嗗搧Id
         private String click_url;//鍟嗗搧娣樺杞摼
         private String seller_id;//搴楅摵鍗栧ID
         private String origin_url;//鍏ュ弬娣樺彛浠ゅ搴斿師濮嬮摼鎺�
         private String origin_pid;//鍏ュ弬娣樺彛浠ゆ帹骞块摼鎺ヤ腑鐨刾id锛屽鏋滀笉灞炰簬褰撳墠璋冪敤鐨勬帹骞胯�呭垯灞曠ず鈥�0鈥�
 
-        public Long getNum_iid() {
+        public String getNum_iid() {
             return num_iid;
         }
 
-        public void setNum_iid(Long num_iid) {
+        public void setNum_iid(String num_iid) {
             this.num_iid = num_iid;
         }
 
@@ -2272,6 +2293,11 @@
         }
     }
 
+    public static void main(String[] args) throws TaoBaoTokenParseException, TaobaoGoodsDownException {
+     TaoBaoGoodsBrief goods =   getSimpleGoodsInfo("qYtrU8tgk7CWt0-GmgDAKHqqGm3XDwHZj");
+     System.out.println(goods.getAuctionId());
+    }
+
 }
 
 

--
Gitblit v1.8.0