yujian
2019-09-02 9eeda0d3049b71877c373c04d65533939b5582ef
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoOrderServiceImpl.java
@@ -1,9 +1,14 @@
package com.yeshi.fanli.service.impl.taobao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
@@ -33,6 +38,13 @@
   @Resource
   private TaoBaoOrderTradeMapMapper taoBaoOrderTradeMapMapper;
   /**
    * 获取订单的哈希值
    *
    * @param list
    * @return
    */
   @Override
   public void addTaoBaoOrderList(List<TaoBaoOrder> list) {
      if (list == null || list.size() == 0)
@@ -41,7 +53,7 @@
      Iterator<String> its = map.keySet().iterator();
      while (its.hasNext()) {
         String orderId = its.next();
         String key = "addorder-" + orderId;
         String key = "addorder-" + TaoBaoOrderUtil.getOrderDataHashCode(map.get(orderId));
         // redis做频率限制
         try {
            if (Constant.IS_OUTNET) {
@@ -81,23 +93,33 @@
   @Transactional
   @Override
   public void addTaoBaoOrder(String orderId, List<TaoBaoOrder> list) {
      LogHelper.test("订单号与订单数量:" + orderId + "-" + list.size());
      // 验证orderby是否正确
      if (list != null && list.size() > 0)
      {
         int maxOrderBy=list.get(0).getOrderBy();
         if(list.size()>1)
            for(TaoBaoOrder order:list)
            {
               if(order.getOrderBy()>maxOrderBy)
                  maxOrderBy=order.getOrderBy();
      if (list != null && list.size() > 0) {
         int maxOrderBy = list.get(0).getOrderBy();
         if (list.size() > 1)
            for (TaoBaoOrder order : list) {
               if (order.getOrderBy() > maxOrderBy)
                  maxOrderBy = order.getOrderBy();
            }
         if (list.size() != maxOrderBy) {
            LogHelper.test("捕捉到排序值错误:" + orderId);
            return;
         }
      }
      // 验证tradeId问题
      Set<String> tradesIds = new HashSet<>();
      for (TaoBaoOrder order : list) {
         tradesIds.add(order.getTradeId());
      }
      // 有重复的交易ID不处理
      if (tradesIds.size() != list.size()) {
         LogHelper.test("检测到交易ID重复问题:" + orderId);
         return;
      }
      List<TaoBaoOrder> oldOrderList = taoBaoOrderMapper.selectTaoBaoOrderByOrderId(orderId);
      if (oldOrderList == null || oldOrderList.size() == 0) {
         for (TaoBaoOrder taoBaoOrder : list) {
@@ -161,4 +183,35 @@
      }
   }
   @Override
   public TaoBaoOrder selectByTradeId(String tradeId) {
      return taoBaoOrderMapper.selectTaoBaoOrderByTradeId(tradeId);
   }
   @Override
   public List<TaoBaoOrder> listAllOrder(int page, int pageSize) {
      return taoBaoOrderMapper.listAllOrder(null, (page - 1) * pageSize, pageSize);
   }
   @Override
   public long countAllOrder() {
      return taoBaoOrderMapper.countAllOrder(null);
   }
   @Override
   public TaoBaoOrder selectByPrimaryKey(Long id) {
      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);
   }
}