yujian
2019-04-26 553e4585a5ec8e2c22b50e33a27d14ead6fd034d
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeOrderApiUtil.java
@@ -6,20 +6,29 @@
import java.util.List;
import java.util.Map;
import com.taobao.api.TaobaoObject;
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;
   /**
    * 获取会员订单
    * 
@@ -29,13 +38,16 @@
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoSpecialOrder(String startTime, int page, String appKey, String appSecret) {
   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);
   }
@@ -48,7 +60,7 @@
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoSpecialThirdOrder(String startTime, int page, String appKey,
   private static List<TaoBaoOrder> getTaoBaoSpecialThirdOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
@@ -57,6 +69,7 @@
      orderQuery.orderScene = 3;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.span = span;
      orderQuery.orderCountType = 2;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
@@ -69,12 +82,12 @@
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoRelationOrder(String startTime, int page, String appKey,
   private static List<TaoBaoOrder> getTaoBaoRelationOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = 1200;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 2;
@@ -92,11 +105,11 @@
    * @param appSecret
    * @return
    */
   public static List<TaoBaoOrder> getTaoBaoRelationThirdOrder(String startTime, int page, String appKey,
   private static List<TaoBaoOrder> getTaoBaoRelationThirdOrder(String startTime, int span, int page, String appKey,
         String appSecret) {
      OrderQuery orderQuery = new OrderQuery();
      orderQuery.startTime = startTime;
      orderQuery.span = 1200;
      orderQuery.span = span;
      orderQuery.tkStatus = 1;
      orderQuery.orderQueryType = "create_time";
      orderQuery.orderScene = 2;
@@ -129,12 +142,13 @@
      orderQuery.orderScene = 1;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.orderCountType=2;
      orderQuery.orderCountType = 1;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
   /**
    * 获取第三方订单
    *
    * @param startTime
    * @param span
    * @param page
@@ -152,6 +166,7 @@
      orderQuery.orderScene = 1;
      orderQuery.pageNo = page;
      orderQuery.pageSize = 100;
      orderQuery.orderCountType = 2;
      return queryTaoBaoOrder(orderQuery, appKey, appSecret);
   }
@@ -162,10 +177,14 @@
      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(Constant.TAOBAO_AUTH_APPKEY);
      app.setAppSecret(Constant.TAOBAO_AUTH_APPSECRET);
      app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY);
      app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET);
      try {
         JSONObject json = TaoKeBaseUtil.baseRequest(map, app);
      } catch (TaoKeApiException e) {
@@ -287,7 +306,8 @@
            taoBaoOrder.setSourceMediaId(item.optString("site_id"));
            taoBaoOrder.setSourceMediaName(item.optString("site_name"));
            taoBaoOrder.setsRatio(null);
            taoBaoOrder.setSubsidy(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")).multiply(new BigDecimal(100)));
@@ -321,4 +341,251 @@
      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;
   }
}