admin
2019-05-16 6d58ee1f52f851a240e946ba863a23c0fd08c292
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -17,14 +17,11 @@
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.AccountMessageMapper;
import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper;
import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper;
import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
import com.yeshi.fanli.dao.mybatis.share.PidUserMapper;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.dto.HongBao;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
@@ -46,14 +43,12 @@
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.LostOrderService;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService;
@@ -63,7 +58,6 @@
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.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
@@ -77,22 +71,7 @@
   private OrderMapper orderMapper;
   @Resource
   private PidUserMapper pidUserMapper;
   @Resource
   private UserInfoMapper userInfoMapper;
   @Resource
   private HongBaoManageMapper hongBaoManageMapper;
   @Resource
   private AccountMessageMapper accountMessageMapper;
   @Resource
   private OrderService orderService;
   @Resource
   private PushService pushService;
   @Resource
   private UserNotificationService userNotificationService;
@@ -106,17 +85,12 @@
   @Resource
   private TaoBaoOrderService taoBaoOrderService;
   @Resource
   private RedisManager redisManager;
   @Resource
   private LostOrderService lostOrderService;
   @Resource
   private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private AccountDetailsHongBaoMapService accountDetailsHongBaoMapService;
@@ -138,6 +112,15 @@
   @Resource
   private UserMoneyService userMoneyService;
   @Resource
   private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService;
   @Resource
   private CommonOrderService commonOrderService;
   @Resource
   private HongBaoV2Service hongBaoV2Service;
   @Override
   public void processOrder(Map<String, List<TaoBaoOrder>> orders) {
@@ -162,7 +145,7 @@
               shareOrderMap.put(orderId, list);
            } else {
               PidUser pidUser = pidUserMapper.selectByPid(pid);
               PidUser pidUser = null;//pidUserMapper.selectByPid(pid);
               if (pidUser != null && pidUser.getType() == PidUser.TYPE_SHARE_GOODS) {// 商品分享订单
                  // List<PidOrder> pidOrderList = new ArrayList<>();
                  // for (TaoBaoOrder order : list) {
@@ -183,41 +166,6 @@
      processShareGoodsOrder(shareOrderMap);
   }
   /**
    * 利用redis的原子性将订单号锁住,不让其他处理
    *
    * @param orderId
    */
   private void redisLockOrder(String orderId) {
      String key = "doorder-" + orderId;
      redisManager.cacheCommonString(key, "1");
   }
   /**
    * 订单解锁
    *
    * @param orderId
    */
   private void redisUnlockOrder(String orderId) {
      String key = "doorder-" + orderId;
      redisManager.removeCommonString(key);
   }
   /**
    * 订单是否被锁住了
    *
    * @param orderId
    * @return
    */
   private boolean isRedisLockOrder(String orderId) {
      String key = "doorder-" + orderId;
      String doing = redisManager.getCommonString(key);
      if (!StringUtil.isNullOrEmpty(doing))
         return true;
      else
         return false;
   }
   @Override
   public void processShopingFanliOrder(Map<String, List<TaoBaoOrder>> orders) {
      // 查询在Order中是否存在该订单号
@@ -236,7 +184,7 @@
            // 出错了就不处理该订单了,需要定期检查
            // 更改丢失订单的状态
            lostOrderService.processSuceess(orderId);
            lostOrderService.processSuceess(orderId, Constant.SOURCE_TYPE_TAOBAO);
         } catch (HongBaoException e1) {
            e1.printStackTrace();
@@ -273,30 +221,6 @@
         }
      }
   }
   /**
    * 获取最大的创建时间与最小的创建时间
    *
    * @param hongBaoList
    * @return
    */
   private Map<String, Long> getMaxAndMinCreateTime(List<HongBao> hongBaoList) {
      if (hongBaoList.size() > 0) {
         Map<String, Long> map = new HashMap<>();
         long min = hongBaoList.get(0).getCreatetime();
         long max = hongBaoList.get(0).getCreatetime();
         for (HongBao hb : hongBaoList) {
            if (hb.getCreatetime() > max)
               max = hb.getCreatetime();
            if (hb.getCreatetime() < min)
               min = hb.getCreatetime();
         }
         map.put("max", max);
         map.put("min", min);
         return map;
      }
      return null;
   }
   @Override
@@ -358,20 +282,6 @@
      }
   }
   /**
    * 判断订单是否失效 全部订单失效才判断为失效
    *
    * @param list
    * @return
    */
   private boolean isOrderValid(List<TaoBaoOrder> list) {
      int validCount = 0;
      for (TaoBaoOrder order : list) {
         if (order.getOrderState().equalsIgnoreCase("订单失效"))
            validCount++;
      }
      return validCount >= list.size();
   }
   @Resource
   private HongBaoOrderMapper hongBaoOrderMapper;
@@ -579,8 +489,8 @@
               if (drawBack == null) {// 还未扣款
                  try {
                     taoBaoWeiQuanDrawBackService.doWeiQuanFanli(order.getOrderId());
                     taoBaoWeiQuanDrawBackService.doWeiQuanInvite(order.getOrderId());
                     taoBaoWeiQuanDrawBackService.doWeiQuanShare(order.getOrderId());
                     taoBaoWeiQuanDrawBackService.doWeiQuanInvite(order.getOrderId());
                  } catch (TaoBaoWeiQuanException e) {
                     try {
                        LogHelper.errorDetailInfo(e, null, "订单号:" + order.getOrderId());
@@ -880,11 +790,7 @@
   }
   @Resource
   private CommonOrderService commonOrderService;
   @Resource
   private HongBaoV2Service hongBaoV2Service;
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   @Override
@@ -901,11 +807,11 @@
         String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(),
               orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId());
         Order oldOrder = orderMapper.selectOrderByOrderId(orderId);
         Order oldOrder = orderMapper.selectOrderByOrderIdAndOrderType(orderId, Constant.SOURCE_TYPE_TAOBAO);
         // 原来不存在订单
         Long uid = null;
         if (oldOrder == null) {
            PidUser pidUser = pidUserMapper.selectByPid(pid);
            PidUser pidUser =null;// pidUserMapper.selectByPid(pid);
            if (pidUser != null) {
               uid = pidUser.getUid();
@@ -923,15 +829,21 @@
               orderMapper.insertSelective(order);
               oldOrder = order;
            } else {
               UserExtraTaoBaoInfo info = null;
               Long targetUid = null;
               if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)
                     && !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {
                  info = userExtraTaoBaoInfoService.getByRelationId(orderList.get(0).getRelationId());
                  targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId());
               } else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) {
                  info = userExtraTaoBaoInfoService.getBySpecialId(orderList.get(0).getSpecialId());
                  UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService
                        .getBySpecialId(orderList.get(0).getSpecialId());
                  if (info != null && info.getUser() != null)
                     targetUid = info.getUser().getId();
               }
               if (info != null && info.getUser() != null) {
                  uid = info.getUser().getId();
               if (targetUid != null) {
                  uid = targetUid;
                  // 插入到Order中
                  // 添加到订单中去
                  Order order = new Order();
@@ -1003,7 +915,7 @@
               orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId());
         // 原来不存在订单
         Long uid = null;
         PidUser pidUser = pidUserMapper.selectByPid(pid);
         PidUser pidUser =null; //pidUserMapper.selectByPid(pid);-PID机制移除
         if (pidUser != null)
            uid = pidUser.getUid();
         else {