yujian
2019-07-31 f4548a3ee46afe45da4ee2a42dc169c575deee9f
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -54,7 +54,6 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyService;
import com.yeshi.fanli.service.inter.user.UserNotificationService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.CMQManager;
import com.yeshi.fanli.util.Constant;
@@ -74,9 +73,6 @@
   private UserInfoMapper userInfoMapper;
   @Resource
   private UserNotificationService userNotificationService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
@@ -84,7 +80,6 @@
   @Resource
   private TaoBaoOrderService taoBaoOrderService;
   @Resource
   private LostOrderService lostOrderService;
@@ -115,7 +110,7 @@
   @Resource
   private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService;
   @Resource
   private CommonOrderService commonOrderService;
@@ -144,18 +139,19 @@
            } else if (!StringUtil.isNullOrEmpty(list.get(0).getRelationId())) {
               shareOrderMap.put(orderId, list);
            } else {
               // 通过红包查询
               CommonOrder commonOrder = commonOrderService
                     .selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, list.get(0).getTradeId());
               PidUser pidUser = null;//pidUserMapper.selectByPid(pid);
               if (pidUser != null && pidUser.getType() == PidUser.TYPE_SHARE_GOODS) {// 商品分享订单
                  // List<PidOrder> pidOrderList = new ArrayList<>();
                  // for (TaoBaoOrder order : list) {
                  // pidOrderList.add(TaoBaoOrderUtil.convertToPidOrder(order));
                  // }
                  // sharePidOrderMap.put(orderId, pidOrderList);
                  shareOrderMap.put(orderId, list);
               } else {// 普通返利订单
                  fanliOrderMap.put(orderId, list);
               if (commonOrder != null) {
                  HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
                  if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null
                        && hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) {
                     shareOrderMap.put(orderId, list);
                     continue;
                  }
               }
               fanliOrderMap.put(orderId, list);
            }
         }
      }
@@ -282,7 +278,6 @@
      }
   }
   @Resource
   private HongBaoOrderMapper hongBaoOrderMapper;
@@ -297,16 +292,20 @@
         LogHelper.error("返利失败:" + hb1.getId());
         return;
      }
      // 维权中的不返利
      List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper
            .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "维权创建");
      if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0)
         return;
      taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper
            .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "等待处理");
      if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0)
         return;
      if (hongBaoOrder.getCommonOrder() != null
            && hongBaoOrder.getCommonOrder().getSourceType() == Constant.SOURCE_TYPE_TAOBAO) {
         // 维权中的不返利
         List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper
               .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "维权创建");
         if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0)
            return;
         taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper
               .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "等待处理");
         if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0)
            return;
      }
      // 查询同一订单号的红包
      List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(
@@ -387,21 +386,11 @@
         }
         // 站内信+推送
         UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
         try {
            userNotificationService.orderFanliRecieved(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
                  userGoodsCount.get(uid), user.getMyHongBao(), money);
         } catch (Exception e) {
            try {
               LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
               e1.printStackTrace();
            }
         }
         UserInfo user = userInfoMapper.selectByPKey(uid);
         // 新版通知
         userMoneyMsgNotificationService.fanliOrderReceived(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
               userGoodsCount.get(uid), money, user.getMyHongBao());
               hongBaoOrder.getCommonOrder().getSourceType(), userGoodsCount.get(uid), money, user.getMyHongBao());
      }
      // 通知免单到账
      try {
@@ -414,9 +403,8 @@
      if (hongBaoOrder.getCommonOrder().getSettleTime() != null && hongBaoOrder.getCommonOrder().getSettleTime()
            .getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
         try {
            taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hongBaoOrder.getCommonOrder().getOrderNo());
            if (hongBaoOrder.getCommonOrder().getSourceType() == Constant.SOURCE_TYPE_TAOBAO)
               taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hongBaoOrder.getCommonOrder().getOrderNo());
         } catch (TaoBaoWeiQuanException e) {
            if (e.getCode() == TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER) {
               List<TaoBaoOrder> olist = taoBaoOrderService
@@ -455,7 +443,7 @@
   public void weiQuanOrder(List<TaoBaoWeiQuanOrder> orderList) {
      if (orderList != null)
         for (TaoBaoWeiQuanOrder order : orderList) {
            if (order.getState().equalsIgnoreCase("维权成功")) {
            if (order.getState().contains("维权成功")) {
               CMQManager.getInstance().addWeiQuanOrderMsg(order);
            }
         }
@@ -641,7 +629,6 @@
      // 邀请赚到账
      if (invitemoney.compareTo(new BigDecimal(0)) > 0) {
         userInfoMapper.addHongBaoByUid(uid, invitemoney);
         // 添加新版详情记录
         try {
@@ -660,9 +647,11 @@
            long invalidCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_SX,
                  minDate, maxDate);
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, (int) validCount,
                  (int) weiQuanCount, (int) invalidCount, invitemoney, new Date());
            userMoneyDetailMapper.insert(userMoneyDetail);
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, Constant.SOURCE_TYPE_TAOBAO,
                  (int) validCount, (int) weiQuanCount, (int) invalidCount, invitemoney, new Date());
            // 增加资金
            userMoneyService.addUserMoney(uid, invitemoney, userMoneyDetail);
            // 添加到红包返利记录集合
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
         } catch (UserMoneyDetailException e) {
@@ -673,18 +662,9 @@
            }
         }
         // 发送推送
         try {
            // 提成到账消息通知
            userNotificationService.tiChengInviteRecieved(uid, inviteOrders.size(), inviteGoodsCount, null,
                  invitemoney);
         } catch (Exception e) {
            e.printStackTrace();
         }
         // 新版通知
         userMoneyMsgNotificationService.inviteOrderReceived(uid, inviteOrders.size(), inviteGoodsCount, invitemoney,
               userInfoMapper.selectByPKey(uid).getMyHongBao());
         userMoneyMsgNotificationService.inviteOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, inviteOrders.size(),
               inviteGoodsCount, invitemoney, userInfoMapper.selectByPKey(uid).getMyHongBao());
         for (String orderId : drawBackOrders)
            taoBaoWeiQuanDrawBackService.doWeiQuanInvite(orderId);
@@ -739,7 +719,6 @@
       */
      if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
         userInfoMapper.addHongBaoByUid(uid, sharemoney);
         // 添加新版详情记录
         try {
            // 计算本月的有效订单,失效订单,维权订单
@@ -758,9 +737,11 @@
            long invalidCount = commonOrderService.countByUidAndOrderStateWithOrderBalanceTime(uid,
                  CommonOrder.STATE_SX, minDate, maxDate);
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, (int) validCount,
                  (int) weiQuanCount, (int) invalidCount, sharemoney, new Date());
            userMoneyDetailMapper.insert(userMoneyDetail);
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
                  (int) validCount, (int) weiQuanCount, (int) invalidCount, sharemoney, new Date());
            // 添加资金
            userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
            // 添加到红包返利记录集合
            accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
         } catch (UserMoneyDetailException e) {
@@ -771,26 +752,15 @@
            }
         }
         // 发送推送
         try {
            // 提成到账消息通知
            userNotificationService.tiChengShareRecieved(uid, shareOrders.size(), shareGoodsCount, null,
                  sharemoney);
         } catch (Exception e) {
            e.printStackTrace();
         }
         // 新版通知
         userMoneyMsgNotificationService.shareOrderReceived(uid, shareOrders.size(), shareGoodsCount, sharemoney,
               userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
         userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, shareOrders.size(),
               shareGoodsCount, sharemoney, userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
         for (String orderId : drawBackOrders)
            taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId);
      }
   }
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   @Override
@@ -811,7 +781,7 @@
         // 原来不存在订单
         Long uid = null;
         if (oldOrder == null) {
            PidUser pidUser =null;// pidUserMapper.selectByPid(pid);
            PidUser pidUser = null;// pidUserMapper.selectByPid(pid);
            if (pidUser != null) {
               uid = pidUser.getUid();
@@ -829,7 +799,6 @@
               orderMapper.insertSelective(order);
               oldOrder = order;
            } else {
               Long targetUid = null;
               if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)
                     && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {
@@ -897,8 +866,7 @@
         try {
            commonOrderList = commonOrderService.addTaoBaoOrder(orderList, uid);
            hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU);
         } catch (CommonOrderException e) {
            try {
               LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + orderId);
@@ -917,7 +885,7 @@
               orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId());
         // 原来不存在订单
         Long uid = null;
         PidUser pidUser =null; //pidUserMapper.selectByPid(pid);-PID机制移除
         PidUser pidUser = null; // pidUserMapper.selectByPid(pid);-PID机制移除
         if (pidUser != null)
            uid = pidUser.getUid();
         else {
@@ -927,6 +895,20 @@
         }
         // 尚未找到和PID对应的用户
         if (uid == null) {
            // 通过红包查询
            CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
                  orderList.get(0).getTradeId());
            if (commonOrder != null) {
               HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
               if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null
                     && hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) {
                  uid = hongBaoOrder.getHongBaoV2().getUserInfo().getId();
               }
            }
         }
         if (uid == null)
            return;