admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeOrderApiUtil.java
@@ -1,591 +1,580 @@
package com.yeshi.fanli.util.taobao;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.yeshi.fanli.dto.order.OrderQuery;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
//淘宝客API接口
public class TaoKeOrderApiUtil {
   public static int TK_STATUS_ALL = 1;
   public static int TK_STATUS_SETTLEMENT = 3;
   public static int TK_STATUS_PAY = 12;
   public static int TK_STATUS_SUCCESS = 14;
   public static int TK_STATUS_INVALID = 13;
   /**
    * 获取会员订单
    *
    * @param startTime-开始时间
    * @param page-页码
    * @param appKey
    * @param appSecret
    * @return
    */
   private static List<TaoBaoOrder> getTaoBaoSpecialOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.tkStatus = 1;
      orderQuery.orderScene = 3;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.span = span;
      orderQuery.orderQueryType = "create_time";
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 获取第三方会员订单
    *
    * @param startTime
    * @param page
    * @param appKey
    * @param appSecret
    * @return
    */
   private static List<TaoBaoOrder> getTaoBaoSpecialThirdOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 3;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.span = span;
      orderQuery.orderCountType = 2;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 获取渠道订单
    *
    * @param startTime
    * @param appKey
    * @param appSecret
    * @return
    */
   private static List<TaoBaoOrder> getTaoBaoRelationOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 2;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 第三方渠道订单
    *
    * @param startTime
    * @param page
    * @param appKey
    * @param appSecret
    * @return
    */
   private static List<TaoBaoOrder> getTaoBaoRelationThirdOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 2;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.orderCountType = 2;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 获取所有的订单(不带渠道信息与会员信息)
    *
    * @param startTime
    * @param appKey
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoAllOrder(String startTime, String appKey, String appSecret) {
      return getTaoBaoAllOrder(startTime, 1200, 1, appKey, appSecret);
   }
   public static List<TaoBaoOrder> getTaoBaoAllOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 1;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.orderCountType = 1;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 获取第三方订单
    *
    * @param startTime
    * @param span
    * @param page
    * @param appKey
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoThirdAllOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 1;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.orderCountType = 2;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   public static void punish() {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.dg.punish.order.get");
      map.put("span", "3600");
      map.put("page_no", "1");
      map.put("page_size", "20");
      map.put("start_time", "2019-01-01 00:00:00");
      map.put("tb_trade_parent_id", "370829441412331676");
      map.put("punish_status", "2");
      map.put("violation_type", "2");
      // map.put("start_time", "2019-01-01 00:00:00");
      TaoKeAppInfo app = new TaoKeAppInfo();
      app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
      app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      try {
         JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
      } catch (TaoKeApiException e) {
         e.printStackTrace();
      }
   }
   public static void test(String startTime, String appKey, String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = 1200;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 1;
      orderQuery.pageNo = 1;
      orderQuery.pageSize = 100;
      List<TaoBaoOrder> list = queryTaoBaoOrder(orderQuery, appKey, appSecret);
      for (TaoBaoOrder order : list)
         System.out.println(order.getCreateTime() + "--" + order.getSettlementTime());
   }
   private static List<TaoBaoOrder> queryTaoBaoOrder(OrderQuery orderQuery, String appKey, String appSecret) {
      Map<String, String> map = new HashMap<>();
      map.put("method", "taobao.tbk.order.get");
      map.put("fields",
            "tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk_status,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,relation_id,tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,special_id,click_time,relation_id,special_id");
      if (orderQuery.startTime != null)
         map.put("start_time", orderQuery.startTime);
      if (orderQuery.span != null)
         map.put("span", orderQuery.span + "");
      map.put("page_no", orderQuery.pageNo + "");
      map.put("page_size", orderQuery.pageSize + "");
      if (orderQuery.tkStatus != null)
         map.put("tk_status", orderQuery.tkStatus + "");
      if (orderQuery.orderQueryType != null)
         map.put("order_query_type", orderQuery.orderQueryType);
      if (orderQuery.orderScene != null)
         map.put("order_scene", orderQuery.orderScene + "");
      if (orderQuery.orderCountType != null)
         map.put("order_count_type", orderQuery.orderCountType + "");
      TaoKeAppInfo app = new TaoKeAppInfo();
      app.setAppKey(appKey);
      app.setAppSecret(appSecret);
      try {
         JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
         return parseTaoBaoOrder(json.toString());
      } catch (TaoKeApiException e) {
         e.printStackTrace();
      }
      return null;
   }
   private static List<TaoBaoOrder> parseTaoBaoOrder(String response) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      JSONObject data = JSONObject.fromObject(response);
      if (data.optJSONObject("tbk_order_get_response") == null)
         return orderList;
      if (data.optJSONObject("tbk_order_get_response").optJSONObject("results") == null)
         return orderList;
      if (data.optJSONObject("tbk_order_get_response").optJSONObject("results").optJSONArray("n_tbk_order") == null)
         return orderList;
      JSONArray array = data.optJSONObject("tbk_order_get_response").optJSONObject("results")
            .optJSONArray("n_tbk_order");
      for (int i = 0; i < array.size(); i++) {
         JSONObject item = array.optJSONObject(i);
         try {
            TaoBaoOrder taoBaoOrder = new TaoBaoOrder();
            taoBaoOrder.setAdPositionId(item.optString("adzone_id"));
            taoBaoOrder.setAdPositionName(item.optString("adzone_name"));
            taoBaoOrder.setAuctionId(item.optLong("num_iid"));
            taoBaoOrder.setClassName(item.optString("auction_category"));
            taoBaoOrder.setClickTime(item.optString("click_time"));
            taoBaoOrder.setCount(item.optInt("item_num"));
            taoBaoOrder.setCreateTime(item.optString("create_time"));
            if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
               taoBaoOrder.seteIncome(new BigDecimal(item.optString("total_commission_fee")));
            else
               taoBaoOrder.seteIncome(new BigDecimal(0));
            if (!StringUtil.isNullOrEmpty(item.optString("pub_share_pre_fee")))
               taoBaoOrder.setEstimate(new BigDecimal(item.optString("pub_share_pre_fee")));
            else
               taoBaoOrder.setEstimate(new BigDecimal(0));
            taoBaoOrder.setiRatio(new BigDecimal(item.optString("income_rate")).multiply(new BigDecimal(100)));
            taoBaoOrder.setLatestUpdateTime(null);
            taoBaoOrder.setManagerWangWang(null);
            taoBaoOrder.setOrderBy(null);
            taoBaoOrder.setOrderId(item.optString("trade_parent_id"));
            if (item.optInt("tk_status") == 12)
               taoBaoOrder.setOrderState("订单付款");
            else if (item.optInt("tk_status") == 3)
               taoBaoOrder.setOrderState("订单结算");
            else if (item.optInt("tk_status") == 13)
               taoBaoOrder.setOrderState("订单失效");
            else if (item.optInt("tk_status") == 14)
               taoBaoOrder.setOrderState("订单成功");
            taoBaoOrder.setOrderType(item.optString("order_type"));
            if (!StringUtil.isNullOrEmpty(item.optString("alipay_total_price")))
               taoBaoOrder.setPayment(new BigDecimal(item.optString("alipay_total_price")));
            else
               taoBaoOrder.setPayment(new BigDecimal(0));
            taoBaoOrder.setPrice(new BigDecimal(item.optString("price")));
            if (!StringUtil.isNullOrEmpty(item.optString("pay_price")))
               taoBaoOrder.setSettlement(new BigDecimal(item.optString("pay_price")));
            else
               taoBaoOrder.setSettlement(new BigDecimal(0));
            taoBaoOrder.setSettlementTime(item.optString("earning_time"));
            taoBaoOrder.setShop(item.optString("seller_shop_title"));
            taoBaoOrder.setSourceMediaId(item.optString("site_id"));
            taoBaoOrder.setSourceMediaName(item.optString("site_name"));
            taoBaoOrder.setsRatio(null);
            taoBaoOrder.setSubsidy(null);
            if (!StringUtil.isNullOrEmpty(item.optString("subsidy_rate")))
               taoBaoOrder.setSubsidyRatio(
                     new BigDecimal(item.optString("subsidy_rate")).multiply(new BigDecimal(100)));
            taoBaoOrder.setSubsidyType(item.optString("subsidy_type"));
            taoBaoOrder.setTechnologySupportPercent(null);
            taoBaoOrder.setThirdService(null);
            taoBaoOrder.setTitle(item.optString("item_title"));
            if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
               taoBaoOrder.setTkMoney(new BigDecimal(item.optString("total_commission_fee")));
            else
               taoBaoOrder.setTkMoney(new BigDecimal(0));
            if (!StringUtil.isNullOrEmpty(item.optString("commission_rate")))
               taoBaoOrder
                     .setTkRate(new BigDecimal(item.optString("commission_rate")).multiply(new BigDecimal(100)));
            else if (!StringUtil.isNullOrEmpty(item.optString("total_commission_rate")))
               taoBaoOrder.setTkRate(
                     new BigDecimal(item.optString("total_commission_rate")).multiply(new BigDecimal(100)));
            taoBaoOrder.setTransactionPlatform(item.optString("terminal_type"));
            taoBaoOrder.setRelationId(item.optString("relation_id"));
            taoBaoOrder.setSpecialId(item.optString("special_id"));
            taoBaoOrder.setTradeId(item.optString("trade_id"));
            orderList.add(taoBaoOrder);
         } catch (Exception e) {
            try {
               LogHelper.errorDetailInfo(e, "订单号信息:" + item.toString(), "订单解析出错");
            } catch (Exception e1) {
            }
         }
      }
      return orderList;
   }
   private static List<TaoBaoOrder> getSpecialOrder(long startTime, int span) {
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = getTaoBaoSpecialOrder(startTimeStr, span, page, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
            TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialOrder(startTimeStr, span, page,
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取第三方普通订单
    *
    * @param startTime
    * @param span
    * @return
    */
   private static List<TaoBaoOrder> getThirdTSpecialOrder(long startTime, int span) {
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = getTaoBaoSpecialThirdOrder(startTimeStr, span, page,
            TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialThirdOrder(startTimeStr, span, page,
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   private static List<TaoBaoOrder> getRelationOrder(long startTime, int span) {
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = getTaoBaoRelationOrder(startTimeStr, span, page,
            TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = getTaoBaoRelationOrder(startTimeStr, span, page,
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   private static List<TaoBaoOrder> getThirdRelationOrder(long startTime, int span) {
      int page = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      List<TaoBaoOrder> orderList = getTaoBaoRelationThirdOrder(startTimeStr, span, page,
            TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         List<TaoBaoOrder> tempOrderList = getTaoBaoRelationThirdOrder(startTimeStr, span, page,
               TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取某个区间的会员订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getSpecialOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
      for (int i = 0; i < count; i++) {
         long startT = startTime + i * 1200 * 1000L;
         int s = 1200;
         if (endTime < startT + 1200 * 1000L) {
            s = (int) ((endTime - startT) / 1000) + 1;
            if (s < 60)
               s = 60;
         }
         List<TaoBaoOrder> tempOrderList = getSpecialOrder(startT, s);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取某个区间的第三方会员订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getThirdSpecialOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
      for (int i = 0; i < count; i++) {
         long startT = startTime + i * 1200 * 1000L;
         int s = 1200;
         if (endTime < startT + 1200 * 1000L) {
            s = (int) ((endTime - startT) / 1000) + 1;
            if (s < 60)
               s = 60;
         }
         List<TaoBaoOrder> tempOrderList = getThirdTSpecialOrder(startT, s);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取渠道订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getRelationOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
      for (int i = 0; i < count; i++) {
         long startT = startTime + i * 1200 * 1000L;
         int s = 1200;
         if (endTime < startT + 1200 * 1000L) {
            s = (int) ((endTime - startT) / 1000) + 1;
            if (s < 60)
               s = 60;
         }
         List<TaoBaoOrder> tempOrderList = getRelationOrder(startT, s);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取某个区间的第三方渠道订单
    *
    * @param startTime
    * @param endTime
    * @return
    */
   public static List<TaoBaoOrder> getThirdRelationOrder(long startTime, long endTime) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
      for (int i = 0; i < count; i++) {
         long startT = startTime + i * 1200 * 1000L;
         int s = 1200;
         if (endTime < startT + 1200 * 1000L) {
            s = (int) ((endTime - startT) / 1000) + 1;
            if (s < 60)
               s = 60;
         }
         List<TaoBaoOrder> tempOrderList = getThirdRelationOrder(startT, s);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   private static List<TaoBaoOrder> getTaoBaoSettleOrders(long startTime, int span, boolean third) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.span = span;
      orderQuery.orderQueryType = "settle_time";
      orderQuery.orderScene = 1;
      orderQuery.pageSize = 100;
      int page = 1;
      orderQuery.pageNo = page;
      if (third)
         orderQuery.orderCountType = 2;
      else
         orderQuery.orderCountType = 1;
      String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss");
      orderQuery.startTime = startTimeStr;
      List<TaoBaoOrder> orderList = queryTaoBaoOrder(orderQuery, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
            TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      while (orderList.size() == 100 * page) {
         page++;
         orderQuery.pageNo = page;
         List<TaoBaoOrder> tempOrderList = queryTaoBaoOrder(orderQuery, TaoBaoConstant.TAOBAO_AUTH_APPKEY,
               TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
      }
      return orderList;
   }
   /**
    * 获取结算订单
    *
    * @param startTime
    * @param endTime
    * @param third
    *            -是否为第三方订单
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoSettleOrders(long startTime, long endTime, boolean third) {
      List<TaoBaoOrder> orderList = new ArrayList<>();
      long span = (endTime - startTime) % 1000 == 0 ? (endTime - startTime) / 1000 : (endTime - startTime) / 1000 + 1;
      int count = (int) (span / 1200);
      if (span % 1200 != 0)
         count++;
      for (int i = 0; i < count; i++) {
         long startT = startTime + i * 1200 * 1000L;
         int s = 1200;
         if (endTime < startT + 1200 * 1000L) {
            s = (int) ((endTime - startT) / 1000) + 1;
            if (s < 60)
               s = 60;
         }
         List<TaoBaoOrder> tempOrderList = getTaoBaoSettleOrders(startT, s, third);
         if (tempOrderList != null && tempOrderList.size() > 0)
            orderList.addAll(tempOrderList);
         try {
            Thread.sleep(1000 * 10);// 加个延时,防止API请求频率限制
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
      return orderList;
   }
   public static List<TaoBaoWeiQuanOrder> getTaoBaoWeiQuanOrderList() {
      return null;
   }
}
package com.yeshi.fanli.util.taobao;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.yeshi.fanli.dto.order.OrderQuery;
import com.yeshi.fanli.dto.taobao.TaoBaoOrderResultDTO;
import com.yeshi.fanli.dto.taobao.WeiQuanOrderResult;
import com.yeshi.fanli.entity.taobao.*;
import com.yeshi.common.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import org.yeshi.utils.TimeUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
//淘宝客API接口
public class TaoKeOrderApiUtil {
    public static int TK_STATUS_ALL = 1;
    public static int TK_STATUS_SETTLEMENT = 3;
    public static int TK_STATUS_PAY = 12;
    public static int TK_STATUS_SUCCESS = 14;
    public static int TK_STATUS_INVALID = 13;
    private static TaoBaoPunishOrder parsePunishOrder(JSONObject data) {
        TaoBaoPunishOrder order = new TaoBaoPunishOrder();
        order.setPunishStatus(data.optString("punish_status"));
        order.setRelationId(data.optString("relation_id"));
        order.setSettleMonth(data.optString("settle_month"));
        order.setSpecialId(data.optString("special_id"));
        order.setTbTradeId(data.optString("tb_trade_id"));
        order.setTbTradeParentId(data.optString("tb_trade_parent_id"));
        order.setTkAdzoneId(data.optString("tk_adzone_id"));
        order.setTkPubId(data.optString("tk_pub_id"));
        order.setTkSiteId(data.optString("tk_site_id"));
        order.setTkTradeCreateTime(data.optString("tk_trade_create_time"));
        order.setViolationType(data.optString("violation_type"));
        return order;
    }
    public static List<TaoBaoPunishOrder> getPunishOrderList(Long startTime, Long endTime) {
        List<TaoBaoPunishOrder> resultList = new ArrayList<>();
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
        app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.punish.order.get");
        JSONObject data = new JSONObject();
        data.put("page_no", 1);
        data.put("page_size", 100);
        int sub = (int) ((endTime - startTime) / 1000);
        int span = 1800;
        int count = sub % span == 0 ? sub / span : sub / span + 1;
        for (int i = 0; i < count; i++) {
            int totalSpanOrderCount = 0;
            List<TaoBaoPunishOrder> spanOrderList = new ArrayList<>();
            long startT = startTime + i * span * 1000;
            data.put("start_time", TimeUtil.getGernalTime(startT, "yyyy-MM-dd HH:mm:ss"));
            data.put("span", 1800 + "");
            map.put("af_order_option", data.toString());
            try {
                JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
                JSONObject dataJson = json.optJSONObject("tbk_dg_punish_order_get_response").optJSONObject("result")
                        .optJSONObject("data");
                JSONArray array = dataJson.optJSONObject("results").optJSONArray("result");
                if (array != null)
                    for (int n = 0; n < array.size(); n++) {
                        spanOrderList.add(parsePunishOrder(array.optJSONObject(n)));
                    }
                totalSpanOrderCount = dataJson.optInt("total_count");
                int page = 2;
                while (totalSpanOrderCount > spanOrderList.size())// 存在下一页
                {
                    data.put("page_no", page++);
                    map.put("af_order_option", data.toString());
                    json = TaoKeBaseUtil.baseRequest(map, app);
                    dataJson = json.optJSONObject("tbk_dg_punish_order_get_response").optJSONObject("data");
                    array = dataJson.optJSONArray("results");
                    if (array != null)
                        for (int n = 0; n < array.size(); n++) {
                            spanOrderList.add(parsePunishOrder(array.optJSONObject(n)));
                        }
                    totalSpanOrderCount = dataJson.optInt("total_count");
                }
                resultList.addAll(spanOrderList);
                System.out.println(json);
            } catch (TaoKeApiException e) {
                e.printStackTrace();
            }
        }
        return resultList;
    }
    private static TaoBaoOrderResultDTO parseTaoBaoOrderNew(String response) {
        TaoBaoOrderResultDTO dto = new TaoBaoOrderResultDTO(false, false, null, new ArrayList<>());
        List<Serializable> orderList = new ArrayList<>();
        JSONArray array = null;
        JSONObject data = JSONObject.fromObject(response);
        try {
            //TODO 临时测试 tbk_order_details_get_response
            JSONObject rootData = data.optJSONObject("tbk_order_details_get_response").optJSONObject("data");
            array = rootData.optJSONObject("results").optJSONArray("publisher_order_dto");
            dto.setHasPre(rootData.optBoolean("has_pre"));
            dto.setPositionIndex(rootData.optString("position_index"));
            dto.setHasNext(rootData.optBoolean("has_next"));
        } catch (Exception e) {
            return dto;
        }
        if (array != null)
            for (int i = 0; i < array.size(); i++) {
                JSONObject item = array.optJSONObject(i);
                try {
                    TaoBaoOrder taoBaoOrder = parseTaoBaoOrderNew(item);
                    orderList.add(taoBaoOrder);
                } catch (Exception e) {
                    try {
                        LogHelper.errorDetailInfo(e, "订单号信息:" + item.toString(), "订单解析出错");
                    } catch (Exception e1) {
                    }
                }
            }
        dto.setOrderList(orderList);
        return dto;
    }
    private static TaoBaoOrderResultDTO parseTaoBaoOrderForBackUp(String response) {
        TaoBaoOrderResultDTO dto = new TaoBaoOrderResultDTO(false, false, null, new ArrayList<>());
        List<Serializable> orderList = new ArrayList<>();
        JSONArray array = null;
        JSONObject data = JSONObject.fromObject(response);
        try {
            JSONObject rootData = data.optJSONObject("tbk_order_details_get_response").optJSONObject("data");
            array = rootData.optJSONObject("results").optJSONArray("publisher_order_dto");
            dto.setHasPre(rootData.optBoolean("has_pre"));
            dto.setPositionIndex(rootData.optString("position_index"));
            dto.setHasNext(rootData.optBoolean("has_next"));
        } catch (Exception e) {
            return dto;
        }
        if (array != null)
            for (int i = 0; i < array.size(); i++) {
                JSONObject item = array.optJSONObject(i);
                try {
                    String tradeId = item.optString("trade_id");
                    String orderId = item.optString("trade_parent_id");
                    TaoBaoOrderBackUp orderBackUp = new TaoBaoOrderBackUp();
                    orderBackUp.setContent(item.toString());
                    orderBackUp.setTradeId(tradeId);
                    orderBackUp.setOrderId(orderId);
                    orderList.add(orderBackUp);
                } catch (Exception e) {
                    try {
                        LogHelper.errorDetailInfo(e, "订单号信息:" + item.toString(), "订单解析出错");
                    } catch (Exception e1) {
                    }
                }
            }
        dto.setOrderList(orderList);
        return dto;
    }
    public static WeiQuanOrderResult getTaoBaoRelationWeiQuanOrderList(Date startTime, int searchType, int page,
                                                                       boolean third) {
        return getRelationAndSpecialWeiQuanOrderList(startTime, searchType, page, third, 1);
    }
    public static WeiQuanOrderResult getTaoBaoSpecialWeiQuanOrderList(Date startTime, int searchType, int page,
                                                                      boolean third) {
        return getRelationAndSpecialWeiQuanOrderList(startTime, searchType, page, third, 2);
    }
    private static WeiQuanOrderResult getRelationAndSpecialWeiQuanOrderList(Date startTime, int searchType, int page,
                                                                            boolean third, int bizType) {
        WeiQuanOrderResult finalResult = new WeiQuanOrderResult();
        List<TaoBaoWeiQuanOrder> list = new ArrayList<>();
        finalResult.orderList = list;
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.relation.refund");
        JSONObject option = new JSONObject();
        option.put("search_type", searchType);
        option.put("refund_type", third ? 2 : 1);
        option.put("start_time", TimeUtil.getGernalTime(startTime.getTime(), "yyyy-MM-dd HH:mm:ss"));
        option.put("page_no", page);
        option.put("page_size", 100);
        option.put("biz_type", bizType);
        map.put("search_option", option.toString());
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
        app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
        try {
            JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
            JSONObject results = json.optJSONObject("tbk_relation_refund_response").optJSONObject("result")
                    .optJSONObject("data").optJSONObject("results");
            if (results == null)
                return finalResult;
            int count = results.optInt("total_count");
            finalResult.totalCount = count;
            JSONArray array = results.optJSONArray("result");
            if (array != null)
                for (int i = 0; i < array.size(); i++) {
                    JSONObject item = array.optJSONObject(i);
                    TaoBaoWeiQuanOrder order = new TaoBaoWeiQuanOrder();
                    order.setGoodsName(item.optString("tb_auction_title"));
                    BigDecimal fanMoney = new BigDecimal(0);
                    if (!StringUtil.isNullOrEmpty(item.optString("tk_subsidy_fee_refund3rd_pub"))) {
                        fanMoney = fanMoney.add(new BigDecimal(item.optString("tk_subsidy_fee_refund3rd_pub")));
                    }
                    if (!StringUtil.isNullOrEmpty(item.optString("tk_commission_fee_refund3rd_pub"))) {
                        fanMoney = fanMoney.add(new BigDecimal(item.optString("tk_commission_fee_refund3rd_pub")));
                    }
                    if (!StringUtil.isNullOrEmpty(item.optString("tk_subsidy_fee_refund_pub"))) {
                        fanMoney = fanMoney.add(new BigDecimal(item.optString("tk_subsidy_fee_refund_pub")));
                    }
                    if (!StringUtil.isNullOrEmpty(item.optString("tk_commission_fee_refund_pub"))) {
                        fanMoney = fanMoney.add(new BigDecimal(item.optString("tk_commission_fee_refund_pub")));
                    }
                    if (fanMoney.compareTo(new BigDecimal(0)) == 0)
                        fanMoney = null;
                    order.setFanMoney(fanMoney);
                    order.setJieSuanTime(new Date(
                            TimeUtil.convertToTimeTemp(item.optString("earning_time"), "yyyy-MM-dd HH:mm:ss")));
                    if (!StringUtil.isNullOrEmpty(item.optString("refund_fee")))
                        order.setMoney(new BigDecimal(item.optString("refund_fee")));
                    order.setOrderId(item.optString("tb_trade_parent_id"));
                    order.setOrderItemId(item.optString("tb_trade_id"));
                    int state = item.optInt("refund_status");
                    if (state == 4)
                        order.setState("维权创建");
                    else if (state == 2)
                        order.setState("维权成功");
                    else if (state == 3)
                        order.setState("维权失败");
                    if (!StringUtil.isNullOrEmpty(item.optString("tk_refund_suit_time")))
                        order.setWeiQuanFinishTime(new Date(TimeUtil
                                .convertToTimeTemp(item.optString("tk_refund_suit_time"), "yyyy-MM-dd HH:mm:ss")));
                    order.setWeiQuanTime(new Date(
                            TimeUtil.convertToTimeTemp(item.optString("tk_refund_time"), "yyyy-MM-dd HH:mm:ss")));
                    list.add(order);
                }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return finalResult;
    }
    /**
     * 新版本淘宝订单
     */
    /**
     * 获取淘宝会员运营订单
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static List<TaoBaoOrder> getTaoBaoSpecialOrderList(long startTime, long endTime, int queryType) {
        return getTaoBaoOrderList(startTime, endTime, queryType, 3);
    }
    /**
     * 淘宝渠道订单
     *
     * @param startTime
     * @param endTime
     * @param queryType
     * @return
     */
    public static List<TaoBaoOrder> getTaoBaoRelationOrderList(long startTime, long endTime, int queryType) {
        return getTaoBaoOrderList(startTime, endTime, queryType, 2);
    }
    public static List<TaoBaoOrder> getTaoBaoCommonOrderList(long startTime, long endTime, int queryType) {
        return getTaoBaoOrderList(startTime, endTime, queryType, 1);
    }
    public static List<TaoBaoOrder> getTaoBaoOrderList(long startTime, long endTime, int queryType, int orderScene) {
        List<Serializable> orderList = new ArrayList<>();
        // 跨度20分钟
        long span = (1000 * 60 * 20L);
        long jianGe = endTime - startTime;
        long page = jianGe % span == 0 ? jianGe / span : jianGe / span + 1;
        if (page == 0)
            page = 1;
        for (int i = 1; i <= page; i++) {
            long start = startTime + (i - 1) * span;
            long end = start + span;
            if (end > endTime)
                end = endTime;
            TaoBaoOrderResultDTO dto = queryNewOrder(TimeUtil.getGernalTime(start, "yyyy-MM-dd HH:mm:ss"),
                    TimeUtil.getGernalTime(end, "yyyy-MM-dd HH:mm:ss"), null, null, queryType, orderScene, new TaoBaoOrder());
            if (dto != null)
                orderList.addAll(dto.getOrderList());
            while (dto != null && dto.isHasNext()) {
                dto = queryNewOrder(TimeUtil.getGernalTime(start, "yyyy-MM-dd HH:mm:ss"),
                        TimeUtil.getGernalTime(end, "yyyy-MM-dd HH:mm:ss"), dto.getPositionIndex(), null, queryType,
                        orderScene, new TaoBaoOrder());
                if (dto != null)
                    orderList.addAll(dto.getOrderList());
            }
        }
        List<TaoBaoOrder> orders = new ArrayList<>();
        for (Serializable s : orderList)
            orders.add((TaoBaoOrder) s);
        return orders;
    }
    /**
     * 获取淘宝订单备份数据
     *
     * @param startTime
     * @param endTime
     * @param status     12-付款,13-关闭,14-确认收货,3-结算成功;不传
     * @param queryType  1:按照订单淘客创建时间查询,2:按照订单淘客付款时间查询,3:按照订单淘客结算时间查询
     * @param orderScene 1:常规订单,2:渠道订单,3:会员运营订单
     * @return
     */
    public static List<TaoBaoOrderBackUp> getTaoBaoOrderBackUpList(long startTime, long endTime, Integer status, int queryType, int orderScene) {
        List<Serializable> orderList = new ArrayList<>();
        // 跨度20分钟
        long span = (1000 * 60 * 20L);
        long jianGe = endTime - startTime;
        long page = jianGe % span == 0 ? jianGe / span : jianGe / span + 1;
        if (page == 0)
            page = 1;
        for (int i = 1; i <= page; i++) {
            long start = startTime + (i - 1) * span;
            long end = start + span;
            if (end > endTime)
                end = endTime;
            TaoBaoOrderResultDTO dto = queryNewOrder(TimeUtil.getGernalTime(start, "yyyy-MM-dd HH:mm:ss"),
                    TimeUtil.getGernalTime(end, "yyyy-MM-dd HH:mm:ss"), null, status, queryType, orderScene, new TaoBaoOrderBackUp());
            if (dto != null)
                orderList.addAll(dto.getOrderList());
            while (dto != null && dto.isHasNext()) {
                dto = queryNewOrder(TimeUtil.getGernalTime(start, "yyyy-MM-dd HH:mm:ss"),
                        TimeUtil.getGernalTime(end, "yyyy-MM-dd HH:mm:ss"), dto.getPositionIndex(), status, queryType,
                        orderScene, new TaoBaoOrderBackUp());
                if (dto != null)
                    orderList.addAll(dto.getOrderList());
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        List<TaoBaoOrderBackUp> orders = new ArrayList<>();
        for (Serializable s : orderList)
            orders.add((TaoBaoOrderBackUp) s);
        return orders;
    }
    /**
     * 淘宝订单查询
     *
     * @param startTime
     * @param endTime
     * @param positionIndex
     * @param queryType     1:按照订单淘客创建时间查询,2:按照订单淘客付款时间查询,3:按照订单淘客结算时间查询
     * @param orderScene
     * @return
     */
    private static TaoBaoOrderResultDTO queryNewOrder(String startTime, String endTime, String positionIndex, Integer status,
                                                      int queryType, int orderScene, Serializable clazz) {
        Map<String, String> params = new HashMap<>();
        params.put("query_type", queryType + "");
        if (status != null)
            params.put("tk_status", status + "");
        params.put("page_size", "100");
        params.put("start_time", startTime);
        params.put("end_time", endTime);
        params.put("page_no", "1");
        params.put("order_scene", orderScene + "");
        if (!StringUtil.isNullOrEmpty(positionIndex))
            params.put("position_index", positionIndex + "");
        //TODO 临时测试taobao.tbk.order.details.get
        params.put("method", "taobao.tbk.order.details.get");
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
        app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
        try {
            JSONObject json = TaoKeBaseUtil.baseRequest(params, app);
            System.out.println(json.toString());
            if (Constant.IS_TEST)
                System.out.println(json);
            if (clazz instanceof TaoBaoOrder)
                return parseTaoBaoOrderNew(json.toString());
            else
                return parseTaoBaoOrderForBackUp(json.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static TaoBaoOrder parseTaoBaoOrderNew(JSONObject item) {
        TaoBaoOrder taoBaoOrder = new TaoBaoOrder();
        taoBaoOrder.setAdPositionId(item.optString("adzone_id"));
        taoBaoOrder.setAdPositionName(item.optString("adzone_name"));
        taoBaoOrder.setAuctionId(item.optString("item_id"));
        taoBaoOrder.setClassName(item.optString("item_category_name"));
        taoBaoOrder.setClickTime(item.optString("click_time"));
        taoBaoOrder.setPayTime(item.optString("tb_paid_time"));
        taoBaoOrder.setCount(item.optInt("item_num"));
        taoBaoOrder.setCreateTime(item.optString("tk_create_time"));
        if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
            taoBaoOrder.seteIncome(new BigDecimal(item.optString("total_commission_fee")));
        else
            taoBaoOrder.seteIncome(new BigDecimal(0));
        if (!StringUtil.isNullOrEmpty(item.optString("pub_share_pre_fee")))
            taoBaoOrder.setEstimate(new BigDecimal(item.optString("pub_share_pre_fee")));
        else
            taoBaoOrder.setEstimate(new BigDecimal(0));
        taoBaoOrder.setiRatio(new BigDecimal(item.optString("income_rate")));
        taoBaoOrder.setLatestUpdateTime(null);
        taoBaoOrder.setManagerWangWang(null);
        taoBaoOrder.setOrderBy(null);
        taoBaoOrder.setOrderId(item.optString("trade_parent_id"));
        if (item.optInt("tk_status") == 12)
            taoBaoOrder.setOrderState("订单付款");
        else if (item.optInt("tk_status") == 3)
            taoBaoOrder.setOrderState("订单结算");
        else if (item.optInt("tk_status") == 13)
            taoBaoOrder.setOrderState("订单失效");
        else if (item.optInt("tk_status") == 14)
            taoBaoOrder.setOrderState("订单成功");
        taoBaoOrder.setOrderType(item.optString("order_type"));
        if (!StringUtil.isNullOrEmpty(item.optString("alipay_total_price")))
            taoBaoOrder.setPayment(new BigDecimal(item.optString("alipay_total_price")));
        else
            taoBaoOrder.setPayment(new BigDecimal(0));
        if (StringUtil.isNullOrEmpty(item.optString("item_price")))
            taoBaoOrder.setPrice(new BigDecimal(0));
        else
            taoBaoOrder.setPrice(new BigDecimal(item.optString("item_price")));
        if (!StringUtil.isNullOrEmpty(item.optString("pay_price")))
            taoBaoOrder.setSettlement(new BigDecimal(item.optString("pay_price")));
        else
            taoBaoOrder.setSettlement(taoBaoOrder.getPayment());
        taoBaoOrder.setSettlementTime(item.optString("tk_earning_time"));
        taoBaoOrder.setShop(item.optString("seller_shop_title"));
        taoBaoOrder.setSourceMediaId(item.optString("site_id"));
        taoBaoOrder.setSourceMediaName(item.optString("site_name"));
        taoBaoOrder.setsRatio(null);
        if (!StringUtil.isNullOrEmpty(item.optString("subsidy_fee")))// 补贴金额
            taoBaoOrder.setSubsidy(new BigDecimal(item.optString("subsidy_fee")));
        if (!StringUtil.isNullOrEmpty(item.optString("subsidy_rate")))
            taoBaoOrder.setSubsidyRatio(new BigDecimal(item.optString("subsidy_rate")));
        taoBaoOrder.setSubsidyType(item.optString("subsidy_type"));
        taoBaoOrder.setTechnologySupportPercent(null);
        taoBaoOrder.setThirdService(null);
        taoBaoOrder.setTitle(item.optString("item_title"));
        if (!StringUtil.isNullOrEmpty(item.optString("total_commission_fee")))
            taoBaoOrder.setTkMoney(new BigDecimal(item.optString("total_commission_fee")));
        else
            taoBaoOrder.setTkMoney(new BigDecimal(0));
        if (!StringUtil.isNullOrEmpty(item.optString("commission_rate")))
            taoBaoOrder.setTkRate(new BigDecimal(item.optString("commission_rate")));
        else if (!StringUtil.isNullOrEmpty(item.optString("total_commission_rate")))
            taoBaoOrder.setTkRate(new BigDecimal(item.optString("total_commission_rate")));
        taoBaoOrder.setTransactionPlatform(item.optString("terminal_type"));
        taoBaoOrder.setRelationId(item.optString("relation_id"));
        taoBaoOrder.setSpecialId(item.optString("special_id"));
        taoBaoOrder.setTradeId(item.optString("trade_id"));
        // 解析商品信息
        TaoBaoOrderGoods goods = new TaoBaoOrderGoods();
        goods.setCategoryName(item.optString("item_category_name"));
        goods.setCreateTime(new Date());
        goods.setGoodsId(item.optString("item_id"));
        goods.setImg(item.optString("item_img"));
        goods.setLink(item.optString("item_link"));
        goods.setPrice(item.optString("item_price"));
        goods.setTitle(item.optString("item_title"));
        goods.setTradeId(item.optString("trade_id"));
        if (goods.getImg() != null && !goods.getImg().startsWith("http")) {
            goods.setImg("http:" + goods.getImg());
        }
        taoBaoOrder.setGoods(goods);
        return taoBaoOrder;
    }
    @Deprecated
    public static List<TaoBaoOrder> queryTaoBaoOrder(OrderQuery orderQuery, String appKey, String appSecret) {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.order.get");
        map.put("fields",
                "tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk_status,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,relation_id,tb_trade_parent_id,tb_trade_id,num_iid,item_title,item_num,price,pay_price,seller_nick,seller_shop_title,commission,commission_rate,unid,create_time,earning_time,tk3rd_pub_id,tk3rd_site_id,tk3rd_adzone_id,special_id,click_time,relation_id,special_id");
        if (orderQuery.startTime != null)
            map.put("start_time", orderQuery.startTime);
        if (orderQuery.span != null)
            map.put("span", orderQuery.span + "");
        map.put("page_no", orderQuery.pageNo + "");
        map.put("page_size", orderQuery.pageSize + "");
        if (orderQuery.tkStatus != null)
            map.put("tk_status", orderQuery.tkStatus + "");
        if (orderQuery.orderQueryType != null)
            map.put("order_query_type", orderQuery.orderQueryType);
        if (orderQuery.orderScene != null)
            map.put("order_scene", orderQuery.orderScene + "");
        if (orderQuery.orderCountType != null)
            map.put("order_count_type", orderQuery.orderCountType + "");
        TaoKeAppInfo app = new TaoKeAppInfo();
        app.setAppKey(appKey);
        app.setAppSecret(appSecret);
        try {
            JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
            System.out.println(json);
        } catch (TaoKeApiException e) {
            e.printStackTrace();
        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static void main(String[] args){
        long endTime=TimeUtil.convertToTimeTemp("2022-09-20 11:16:50","yyyy-MM-dd HH:mm:ss");
        long startTime=TimeUtil.convertToTimeTemp("2022-09-20 11:16:48","yyyy-MM-dd HH:mm:ss");
        List<TaoBaoOrder> orderList=  getTaoBaoSpecialOrderList(startTime,endTime,1);
        orderList=  getTaoBaoCommonOrderList(startTime,endTime,1);
        orderList=  getTaoBaoRelationOrderList(startTime,endTime,1);
        System.out.println(orderList);
    }
}