admin
2019-03-09 b2699e4e0c66125254156fb54705e569094db499
订单爬取规则修改
5个文件已修改
403 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/UpdateRelationAndSpecialOrderJob.java 194 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeOrderApiUtil.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}