admin
2019-07-17 e9728859fcd8646af482b5049eb148b4bbf87c35
爬取结算订单优化
7个文件已修改
152 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/taobao/TaoBaoOrderMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TaoBaoOrderService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/taobao/TaoBaoOrderMapper.java
@@ -102,4 +102,23 @@
     * @return
     */
    long countAllOrder(@Param("orderNo") String orderNo);
    /**
     * 根据结算时间拼排序
     *
     * @param start
     * @param count
     * @return
     */
    List<TaoBaoOrder> listBySettlementTime(@Param("minTime") Long minTime, @Param("maxTime") Long maxTime,
            @Param("start") long start, @Param("count") int count);
    /**
     * 根据结算时间计数
     *
     * @param minTime
     * @param maxTime
     * @return
     */
    Long countBySettlementTime(@Param("minTime") Long minTime, @Param("maxTime") Long maxTime);
}
fanli/src/main/java/com/yeshi/fanli/job/UpdateOrderJob.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.job;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -471,7 +472,7 @@
    }
    /**
     * 跟新本地订单(凌晨25分更新)
     * 更新本地订单(凌晨25分更新)
     */
    @Scheduled(cron = "25 0 0 * * ? ")
    public void doLocalTaoBaoOrder() {
@@ -496,4 +497,62 @@
        }
    }
    /**
     * 更新最近的本地单(30分钟更新一次)
     */
    @Scheduled(cron = "0 0/30 * * * ? ")
    public void doLatestLocalTaoBaoOrder() {
        if (!Constant.IS_TASK)
            return;
        Long endTime = System.currentTimeMillis() - 1000 * 60 * 10L;
        Long startTime = endTime - 1000 * 60 * 60 * 12L;
        updateLocalTaoBaoOrder(startTime, endTime, 1, 2000);
    }
    public void updateLocalTaoBaoOrder(Long startTime, Long endTime, int page, int count) {
        List<TaoBaoOrder> list = taoBaoOrderService.listBySettlementTime(startTime, endTime, page, count);
        Set<String> orderIds = new HashSet<>();
        for (TaoBaoOrder co : list) {
            orderIds.add(co.getOrderId());
        }
        for (Iterator<String> its = orderIds.iterator(); its.hasNext();) {
            String orderId = its.next();
            // 查询是否有处于订单付款状态的单
            List<CommonOrder> commonOrderList = commonOrderService
                    .listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO, orderId);
            boolean update = false;
            if (commonOrderList != null)
                for (CommonOrder co : commonOrderList) {
                    if (co.getState() == CommonOrder.STATE_FK && co.getPayment().compareTo(new BigDecimal(0)) > 0) {
                        update = true;
                        break;
                    }
                }
            if (update) {
                List<TaoBaoOrder> orderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId);
                Map<String, List<TaoBaoOrder>> orders = new HashMap<>();
                orders.put(orderId, orderList);
                orderProcessService.processOrder(orders);
            }
        }
    }
    @Scheduled(cron = "30 13 3 * * ? ")
    public void doLatest5DayLocalTaoBaoOrder() {
        if (!Constant.IS_TASK)
            return;
        Long endTime = System.currentTimeMillis() - 1000 * 60 * 60 * 12L;
        Long startTime = endTime - 1000 * 60 * 60 * 24 * 5L;
        long count = taoBaoOrderService.countBySettlementTime(startTime, endTime);
        int pageSize = 100;
        long page = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;
        for (int i = 0; i < page; i++) {
            updateLocalTaoBaoOrder(startTime, endTime, i + 1, pageSize);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml
@@ -115,6 +115,38 @@
            where to_order_id=#{orderNo}
        </if>
    </select>
    <select id="listBySettlementTime" resultMap="BaseResultMap">
        select * from yeshi_ec_taobao_order
        where 1=1
        <if test="minTime!=null">
          and UNIX_TIMESTAMP(to_settlement_time)*1000>=#{minTime}
        </if>
        <if test="maxTime!=null">
          and #{maxTime}>UNIX_TIMESTAMP(to_settlement_time)*1000
        </if>
        order by to_settlement_time desc
        limit #{start},#{count}
    </select>
    <select id="countBySettlementTime" resultType="java.lang.Long">
        select count(to_id) from yeshi_ec_taobao_order
        where 1=1
        <if test="minTime!=null">
          and UNIX_TIMESTAMP(to_settlement_time)*1000>=#{minTime}
        </if>
        <if test="maxTime!=null">
          and #{maxTime}>UNIX_TIMESTAMP(to_settlement_time)*1000
        </if>
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from
        yeshi_ec_taobao_order where to_id = #{id,jdbcType=BIGINT}
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -775,8 +775,14 @@
            commonOrder.setCommonOrderGoods(goods);
        }
        CommonOrder oldCommonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(commonOrder.getOrderNo(),
                commonOrder.getSourceType(), commonOrder.getOrderBy());
        CommonOrder oldCommonOrder = null;
        if (!StringUtil.isNullOrEmpty(commonOrder.getTradeId()))
            oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(),
                    commonOrder.getTradeId());
        else
            oldCommonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(commonOrder.getOrderNo(),
                    commonOrder.getSourceType(), commonOrder.getOrderBy());
        if (oldCommonOrder == null)// 新增
        {
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java
@@ -193,4 +193,15 @@
        return taoBaoOrderMapper.selectByPrimaryKey(id);
    }
    @Override
    public List<TaoBaoOrder> listBySettlementTime(Long minTime, Long maxTime, int page, int pageSize) {
        return taoBaoOrderMapper.listBySettlementTime(minTime, maxTime, (page - 1) * pageSize, pageSize);
    }
    @Override
    public Long countBySettlementTime(Long minTime, Long maxTime) {
        return taoBaoOrderMapper.countBySettlementTime(minTime, maxTime);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/TaoBaoOrderService.java
@@ -87,4 +87,22 @@
     */
    public TaoBaoOrder selectByPrimaryKey(Long id);
    /**
     * 根据结算时间检索
     *
     * @param page
     * @param pageSize
     * @return
     */
    public List<TaoBaoOrder> listBySettlementTime(Long minTime, Long maxTime, int page, int pageSize);
    /**
     * 根据结算时间计数
     *
     * @param minTime
     * @param maxTime
     * @return
     */
    public Long countBySettlementTime(Long minTime, Long maxTime);
}
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -1,6 +1,5 @@
package com.yeshi.fanli.util.pinduoduo;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;