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;