fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
@@ -347,10 +347,10 @@ } // 每15分钟爬取一次 @Scheduled(cron = "0 0/15 * * * ? ") // @Scheduled(cron = "0 0/15 * * * ? ") public void doJob1() { if (!Constant.IS_TASK) return; // if (!Constant.IS_TASK) // return; long currentTime = System.currentTimeMillis(); String h = TimeUtil.getGernalTime(currentTime, "HH"); String m = TimeUtil.getGernalTime(currentTime, "mm"); fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java
@@ -39,18 +39,6 @@ private RedisManager redisManager; /** * 更新渠道订单(最多20分钟) * * @param startTime */ private void updateRelationOrder(long startTime) { String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss"); List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoRelationOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); addRelationAndSpecialOrder(orderList); } /** * 更新渠道订单 * * @param fromPage @@ -58,146 +46,18 @@ * @param toPage * 结束页码(每页100条数据) */ private void updateRelationOrder(int fromPage, int toPage) { // 最近90天的订单 String startTimeStr = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 90L, "yyyy-MM-dd HH:mm:ss"); Comparator<TaoBaoOrder> cm = new Comparator<TaoBaoOrder>() { @Override public int compare(TaoBaoOrder o1, TaoBaoOrder o2) { long span = TimeUtil.convertToTimeTemp(o2.getCreateTime(), "yyyy-MM-dd HH:mm:ss") - TimeUtil.convertToTimeTemp(o1.getCreateTime(), "yyyy-MM-dd HH:mm:ss"); if (span > 0) return 1; else if (span == 0) return 0; else return -1; } }; for (int p = fromPage; p < toPage; p++) { // 爬取2方订单 List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoRelationOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); Collections.sort(orderList, cm); List<TaoBaoOrder> commonOrderList = UpdateOrderJob.getCommonOrder( TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(), "yyyy-MM-dd HH:mm:ss"), TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss")); List<TaoBaoOrder> list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList); Collections.sort(list, cm); addRelationAndSpecialOrder(list); orderList = TaoKeOrderApiUtil.getTaoBaoRelationThirdOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); Collections.sort(orderList, cm); // 爬取三方订单 commonOrderList = UpdateOrderJob.getThirdCommonOrder( TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(), "yyyy-MM-dd HH:mm:ss"), TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss")); list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList); Collections.sort(list, cm); addRelationAndSpecialOrder(list); } } /** * 按天更新 * * @param day */ private void updateRelationOrderByDay(String day) { long timestamp = TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"); for (int i = 0; i < 72; i++) { updateRelationOrder(timestamp + 1000 * 60 * 20L * i); } } /** * 更新会员订单(最多20分钟) * * @param startTime */ private void updateSpecialOrder(long startTime) { String startTimeStr = TimeUtil.getGernalTime(startTime, "yyyy-MM-dd HH:mm:ss"); List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSpecialOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); addRelationAndSpecialOrder(orderList); orderList = TaoKeOrderApiUtil.getTaoBaoSpecialThirdOrder(startTimeStr, 1, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); addRelationAndSpecialOrder(orderList); } /** * 更新会员订单() * * @param fromPage-开始页码 * @param toPage-结束页码(每页20条数据) */ private void updateSpecialOrder(int fromPage, int toPage) { // 最近90天的订单 String startTimeStr = TimeUtil.getGernalTime(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 90L, "yyyy-MM-dd HH:mm:ss"); Comparator<TaoBaoOrder> cm = new Comparator<TaoBaoOrder>() { @Override public int compare(TaoBaoOrder o1, TaoBaoOrder o2) { long span = TimeUtil.convertToTimeTemp(o2.getCreateTime(), "yyyy-MM-dd HH:mm:ss") - TimeUtil.convertToTimeTemp(o1.getCreateTime(), "yyyy-MM-dd HH:mm:ss"); if (span > 0) return 1; else if (span == 0) return 0; else return -1; } }; for (int p = fromPage; p < toPage; p++) { // 爬取2方订单 List<TaoBaoOrder> orderList = TaoKeOrderApiUtil.getTaoBaoSpecialOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); Collections.sort(orderList, cm); List<TaoBaoOrder> commonOrderList = UpdateOrderJob.getCommonOrder( TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(), "yyyy-MM-dd HH:mm:ss"), TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss")); List<TaoBaoOrder> list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList); Collections.sort(list, cm); addRelationAndSpecialOrder(list); // 爬取三方订单 orderList = TaoKeOrderApiUtil.getTaoBaoSpecialThirdOrder(startTimeStr, p, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); Collections.sort(orderList, cm); commonOrderList = UpdateOrderJob.getThirdCommonOrder( TimeUtil.convertToTimeTemp(orderList.get(orderList.size() - 1).getCreateTime(), "yyyy-MM-dd HH:mm:ss"), TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss")); list = UpdateOrderJob.mixTaoBaoOrder(commonOrderList, orderList); Collections.sort(list, cm); addRelationAndSpecialOrder(list); } } /** * 按天更新 * * @param day */ private void updateSpecialOrderByDay(String day) { long timestamp = TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"); for (int i = 0; i < 72; i++) { updateSpecialOrder(timestamp + 1000 * 60 * 20L * i); } private void updateRelationAndSpecialOrder(long startTime, long endTime) { List<TaoBaoOrder> list = TaoKeOrderApiUtil.getSpecialOrder(startTime, endTime); List<TaoBaoOrder> list1 = TaoKeOrderApiUtil.getThirdSpecialOrder(startTime, endTime); List<TaoBaoOrder> list2 = TaoKeOrderApiUtil.getRelationOrder(startTime, endTime); List<TaoBaoOrder> list3 = TaoKeOrderApiUtil.getThirdRelationOrder(startTime, endTime); if (list1 != null && list1.size() > 0) list.addAll(list1); if (list2 != null && list2.size() > 0) list.addAll(list2); if (list3 != null && list3.size() > 0) list.addAll(list3); addRelationAndSpecialOrder(list); } private void addRelationAndSpecialOrder(List<TaoBaoOrder> orderList) { @@ -253,34 +113,32 @@ public void doJob1() { if (!Constant.IS_TASK) return; // 爬取最近3页数据 updateRelationOrder(1, 3); updateSpecialOrder(1, 3); // 爬取近20分钟的数据 long endTime = System.currentTimeMillis(); updateRelationAndSpecialOrder(endTime - 1000 * 60 * 20L, endTime); } // 每5分钟更新(3-10页数据) // 每5分钟更新(近1天数据) @Scheduled(cron = "0 0/5 * * * ? ") public void doJob2() { if (!Constant.IS_TASK) return; updateRelationOrder(3, 11); updateSpecialOrder(3, 11); long endTime = System.currentTimeMillis(); updateRelationAndSpecialOrder(endTime - 1000 * 60 * 60 * 24L, endTime); } // 每个小时更新10-1000页数据 // 每个小时更新 @Scheduled(cron = "0 0 0/1 * * ? ") public void doJob3() { if (!Constant.IS_TASK) return; Calendar calendar = Calendar.getInstance(); int h = calendar.get(Calendar.HOUR_OF_DAY); // 每个小时更新100页数据 int fromPage = h * 100; if (fromPage <= 0) fromPage = 11; int toPage = h * 100 + 100; updateRelationOrder(fromPage, toPage); updateSpecialOrder(fromPage, toPage); // Calendar calendar = Calendar.getInstance(); // int h = calendar.get(Calendar.HOUR_OF_DAY); // // 每个小时更新100页数据 // int fromPage = h * 100; // if (fromPage <= 0) // fromPage = 11; // int toPage = h * 100 + 100; } } fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java
@@ -47,6 +47,7 @@ } catch (Exception e) { } addTaoBaoOrder(orderId, map.get(orderId)); try { // 6小时内不再处理 fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -14,7 +14,6 @@ import com.yeshi.fanli.entity.taobao.SearchFilter; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoHead; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoProvince; import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; @@ -25,7 +24,6 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.log.TaoKeLogHelper; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeOrderApiUtil.java
@@ -14,6 +14,7 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -29,13 +30,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 +52,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 +61,7 @@ orderQuery.orderScene = 3; orderQuery.pageNo = page; orderQuery.pageSize = 100; orderQuery.span = span; orderQuery.orderCountType = 2; return queryTaoBaoOrder(orderQuery, appKey, appSecret); } @@ -69,12 +74,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 +97,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 +134,13 @@ orderQuery.orderScene = 1; orderQuery.pageNo = page; orderQuery.pageSize = 100; orderQuery.orderCountType=2; orderQuery.orderCountType = 2; return queryTaoBaoOrder(orderQuery, appKey, appSecret); } /** * 获取第三方订单 * * @param startTime * @param span * @param page @@ -321,4 +327,182 @@ 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, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); while (orderList.size() == 100 * page) { page++; List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialOrder(startTimeStr, span, page, Constant.TAOBAO_AUTH_APPKEY, Constant.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, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); while (orderList.size() == 100 * page) { page++; List<TaoBaoOrder> tempOrderList = getTaoBaoSpecialThirdOrder(startTimeStr, span, page, Constant.TAOBAO_AUTH_APPKEY, Constant.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, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); while (orderList.size() == 100 * page) { page++; List<TaoBaoOrder> tempOrderList = getTaoBaoRelationOrder(startTimeStr, span, page, Constant.TAOBAO_AUTH_APPKEY, Constant.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, Constant.TAOBAO_AUTH_APPKEY, Constant.TAOBAO_AUTH_APPSECRET); while (orderList.size() == 100 * page) { page++; List<TaoBaoOrder> tempOrderList = getTaoBaoRelationThirdOrder(startTimeStr, span, page, Constant.TAOBAO_AUTH_APPKEY, Constant.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; } }