admin
2019-07-31 f253c6f0ce5e708850f8e3c84a6a9008fc37df5f
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -28,9 +28,12 @@
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.jd.JDOrder;
import com.yeshi.fanli.entity.jd.JDOrderItem;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.pdd.PDDOrder;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
@@ -57,10 +60,13 @@
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
@Service
@@ -924,4 +930,239 @@
      }
   }
   @Override
   public void processJDOrder(JDOrder order) {
      if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0)
         return;
      String uidStr = order.getExt1();
      Long uid = null;
      if (!StringUtil.isNullOrEmpty(uidStr))
         uid = Long.parseLong(uidStr);
      Long positionId = order.getOrderItemList().get(0).getPositionId();
      if (positionId == JDApiUtil.POSITION_FANLI)// 返利订单
      {
         processFanLiJDOrder(order, uid);
         lostOrderService.processSuceess(order.getOrderId() + "", Constant.SOURCE_TYPE_JD);
      } else if (positionId == JDApiUtil.POSITION_SHARE) {// 分享订单
         if (uid == null)// 分享订单不允许找回
            return;
         processShareJDOrder(order, uid);
      } else {// 处理是否有订单找回的状态
         processFanLiJDOrder(order, null);
      }
   }
   /**
    * 处理京东返利订单
    * @param jdOrder
    * @param uid
    */
   @Transactional
   private void processFanLiJDOrder(JDOrder jdOrder, Long uid) {
      int invalidCount = 0;
      BigDecimal totalMoney = new BigDecimal(0);
      // 订单状态判断
      for (JDOrderItem item : jdOrder.getOrderItemList()) {
         if (item.getEstimateCosPrice() != null)
            totalMoney = totalMoney.add(item.getEstimateCosPrice());
         if (item.getValidCode() == 16 || item.getValidCode() == 17 || item.getValidCode() == 18) {// 已付款
         } else if (item.getValidCode() == 15) {// 未支付
         } else {
            invalidCount++;
         }
      }
      // 加入订单
      Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(jdOrder.getOrderId() + "",
            Constant.SOURCE_TYPE_JD);
      if (uid == null && oldOrder.getBeizhu().contains("补单"))
         uid = oldOrder.getUserInfo().getId();
      if (uid == null)
         return;
      if (oldOrder == null)// 新增
      {
         Order order = new Order();
         order.setBeizhu("京东返利订单");
         order.setCreatetime(System.currentTimeMillis());
         order.setOrderId(jdOrder.getOrderId() + "");
         order.setOrderType(Constant.SOURCE_TYPE_JD);
         order.setState(
               invalidCount == jdOrder.getOrderItemList().size() ? Order.STATE_SHIXIAO : Order.STATE_YIZHIFU);
         order.setUserInfo(new UserInfo(uid));
         order.setVersion(2);
         order.setThirdCreateTime(new Date(jdOrder.getOrderTime()));
         order.setMoney(totalMoney);
         // 加入到订单表
         orderMapper.insertSelective(order);
      } else {
         Order updateOrder = new Order();
         updateOrder.setId(oldOrder.getId());
         updateOrder.setMoney(totalMoney);
         orderMapper.updateByPrimaryKeySelective(updateOrder);
      }
      try {
         List<CommonOrder> commonOrderList = commonOrderService.addJDOrder(jdOrder, uid);
         hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
      } catch (CommonOrderException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + jdOrder.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (HongBaoException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + jdOrder.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
   /**
    * 处理京东分享订单
    * @param order
    * @param uid
    */
   @Transactional
   private void processShareJDOrder(JDOrder order, Long uid) {
      try {
         List<CommonOrder> commonOrderList = commonOrderService.addJDOrder(order, uid);
         hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS);
      } catch (CommonOrderException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (HongBaoException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
   /**
    * 处理拼多多订单
    */
   @Override
   public void processPDDOrder(PDDOrder pddOrder) {
      if (pddOrder == null)
         return;
      String uidStr = pddOrder.getCustomParameters();
      Long uid = null;
      if (!StringUtil.isNullOrEmpty(uidStr))
         uid = Long.parseLong(uidStr);
      String positionId = pddOrder.getpId();
      if (PinDuoDuoApiUtil.PID_FANLI.equalsIgnoreCase(positionId))// 返利订单
      {
         processFanLiPDDOrder(pddOrder, uid);
         lostOrderService.processSuceess(pddOrder.getOrderSn(), Constant.SOURCE_TYPE_PDD);
      } else if (PinDuoDuoApiUtil.PID_SHARE.equalsIgnoreCase(positionId)) {// 分享订单
         if (uid == null)// 分享订单不允许找回
            return;
         processSharePDDOrder(pddOrder, uid);
      } else {// 处理是否有订单找回的状态
         processFanLiPDDOrder(pddOrder, null);
      }
   }
   /**
    * 处理拼多多自购返利订单
    * @param pddOrder
    * @param uid
    */
   @Transactional
   private void processFanLiPDDOrder(PDDOrder pddOrder, Long uid) {
      int orderState = 0;
      if (pddOrder.getOrderStatus() == -1 || pddOrder.getOrderStatus() == 8)
         orderState = Order.STATE_SHIXIAO;
      else
         orderState = Order.STATE_YIZHIFU;
      BigDecimal totalMoney = MoneyBigDecimalUtil.div(new BigDecimal(pddOrder.getOrderAmount()), new BigDecimal(100));
      // 加入订单
      Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(pddOrder.getOrderSn(), Constant.SOURCE_TYPE_PDD);
      if (uid == null && oldOrder.getBeizhu().contains("补单"))
         uid = oldOrder.getUserInfo().getId();
      if (uid == null)
         return;
      if (oldOrder == null)// 新增
      {
         Order order = new Order();
         order.setBeizhu("拼多多返利订单");
         order.setCreatetime(System.currentTimeMillis());
         order.setOrderId(pddOrder.getOrderSn());
         order.setOrderType(Constant.SOURCE_TYPE_PDD);
         order.setState(orderState);
         order.setUserInfo(new UserInfo(uid));
         order.setVersion(2);
         order.setThirdCreateTime(new Date(pddOrder.getOrderCreateTime() * 1000));
         order.setMoney(totalMoney);
         // 加入到订单表
         orderMapper.insertSelective(order);
      } else {
         Order updateOrder = new Order();
         updateOrder.setId(oldOrder.getId());
         updateOrder.setMoney(totalMoney);
         orderMapper.updateByPrimaryKeySelective(updateOrder);
      }
      try {
         List<PDDOrder> pddOrderList = new ArrayList<>();
         pddOrderList.add(pddOrder);
         List<CommonOrder> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid);
         hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
      } catch (CommonOrderException e) {
         try {
            LogHelper.errorDetailInfo(e, "addPDDOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (HongBaoException e) {
         try {
            LogHelper.errorDetailInfo(e, "addPDDOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
   /**
    * 处理拼多多分享订单
    * @param order
    * @param uid
    */
   @Transactional
   private void processSharePDDOrder(PDDOrder order, Long uid) {
      try {
         List<PDDOrder> pddOrderList = new ArrayList<>();
         pddOrderList.add(order);
         List<CommonOrder> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid);
         hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS);
      } catch (CommonOrderException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      } catch (HongBaoException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId());
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }
   }
}