admin
2020-04-21 0b57cfd62e842b309d03467b96a331c673ecad7c
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -30,6 +30,7 @@
import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
import com.yeshi.fanli.dto.mq.UidDateDTO;
import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg;
import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
@@ -38,6 +39,7 @@
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.bus.user.UserSystemCoupon;
import com.yeshi.fanli.entity.elme.ElmeHongBaoOrderMap;
import com.yeshi.fanli.entity.elme.ElmeOrder;
import com.yeshi.fanli.entity.jd.JDOrder;
@@ -87,7 +89,8 @@
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager;
import com.yeshi.fanli.util.cmq.order.PlaceOrderCMQManager;
import com.yeshi.fanli.util.cmq.order.TeamOrderCMQManager;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
@@ -215,8 +218,8 @@
                  list.get(0).getSourceMediaId(), list.get(0).getAdPositionId());
            if ("饿了么".equalsIgnoreCase(list.get(0).getOrderType())) {
               // 饿了么订单开始归入到淘宝订单
               if (TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") > TimeUtil
                     .convertToTimeTemp("2020-04-15", "yyyy-MM-dd")) {
               if (TimeUtil.convertToTimeTemp(list.get(0).getCreateTime(),
                     "yyyy-MM-dd HH:mm:ss") >= Constant.NEW_ORDER_FANLI_RULE_TIME) {
                  fanliOrderMap.put(orderId, list);
               } else {
                  elmeOrderMap.put(orderId, list);
@@ -426,6 +429,11 @@
   public void fanli(HongBaoV2 hb1) throws TaoBaoWeiQuanException {
      // 查询最新的红包数据
      hb1 = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hb1.getId());
      if (hb1 == null || hb1.getState() != HongBaoV2.STATE_KELINGQU || hb1.getPreGetTime() == null
            || hb1.getPreGetTime().getTime() > System.currentTimeMillis())
         return;
      // 正常用户才能到账
      UserInfo mainUser = userInfoMapper.selectAvailableByPrimaryKey(hb1.getUserInfo().getId());
      if (mainUser == null || mainUser.getState() != UserInfo.STATE_NORMAL) {
@@ -588,70 +596,74 @@
   }
   @Override
   public void fanliInvaiteAndShare() {
      // 查出邀请赚与分享赚该返利的用户ID
      List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceShareAndInvite(1000);
   public void fanliPreInvaite(Date maxTime) {
      // 查出邀请赚的用户ID
      List<Integer> typeList = new ArrayList<>();
      typeList.add(HongBaoV2.TYPE_YIJI);
      typeList.add(HongBaoV2.TYPE_ERJI);
      typeList.add(HongBaoV2.TYPE_SHARE_YIJI);
      typeList.add(HongBaoV2.TYPE_SHARE_ERJI);
      long count = hongBaoV2Mapper.countUidCanBanlanceByTypeAndMaxTime(typeList, maxTime);
      int pageSize = 1000;
      int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
      Set<Long> uidSets = new HashSet<>();
      if (inviteAndShareUids != null)
         for (Long uid : inviteAndShareUids) {
            if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null)
               uidSets.add(uid);
         }
      for (int i = 0; i < page; i++) {
         List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceByTypeAndMaxTime(typeList, maxTime,
               i * pageSize, pageSize);
         if (inviteAndShareUids != null)
            for (Long uid : inviteAndShareUids) {
               if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null)
                  uidSets.add(uid);
            }
      }
      // 根据用户ID
      Iterator<Long> its = uidSets.iterator();
      while (its.hasNext()) {
         Long uid = its.next();
         try {
            if (Constant.ENABLE_MQ)
               CMQManager.getInstance().addFanLiTiChengMsg(uid);
               TeamOrderCMQManager.getInstance().addFanLiTeamIncomePreMsg(new UidDateDTO(uid, maxTime));
         } catch (Exception e) {
            e.printStackTrace();
            LogHelper.error(e);
         }
      }
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException {
      // 邀请赚到账
      Date now = new Date();
      try {
         orderMoneySettleService.inviteSettleTB(uid, now);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
   public void fanliShare(Date maxTime) {
      // 查出邀请赚的用户ID
      List<Integer> typeList = new ArrayList<>();
      typeList.add(HongBaoV2.TYPE_SHARE_GOODS);
      long count = hongBaoV2Mapper.countUidCanBanlanceByTypeAndMaxTime(typeList, maxTime);
      int pageSize = 1000;
      int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
      Set<Long> uidSets = new HashSet<>();
      for (int i = 0; i < page; i++) {
         List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceByTypeAndMaxTime(typeList, maxTime,
               i * pageSize, pageSize);
         if (inviteAndShareUids != null)
            for (Long uid : inviteAndShareUids) {
               if (userInfoMapper.selectAvailableByPrimaryKey(uid) != null)
                  uidSets.add(uid);
            }
      }
      // 根据用户ID
      Iterator<Long> its = uidSets.iterator();
      while (its.hasNext()) {
         Long uid = its.next();
         try {
            if (Constant.ENABLE_MQ)
               CMQManager.getInstance().addFanLiShareMsg(new UidDateDTO(uid, maxTime));
         } catch (Exception e) {
            e.printStackTrace();
            LogHelper.error(e);
         }
      }
      try {
         orderMoneySettleService.inviteSettleJD(uid, now);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      //
      try {
         orderMoneySettleService.inviteSettlePDD(uid, now);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      // 分享赚到账
      try {
         orderMoneySettleService.shareSettleTB(uid);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      try {
         orderMoneySettleService.shareSettleJD(uid);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      //
      try {
         orderMoneySettleService.shareSettlePDD(uid);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
   }
   @Override
@@ -672,6 +684,29 @@
      try {
         orderMoneySettleService.inviteSettlePDD(uid, maxPreGetTime);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
   }
   @Override
   @Transactional(rollbackFor = Exception.class)
   public void fanliShare(Long uid, Date maxPreGetTime) {
      // 邀请赚到账
      try {
         orderMoneySettleService.shareSettleTB(uid, maxPreGetTime);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      try {
         orderMoneySettleService.shareSettleJD(uid, maxPreGetTime);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
      try {
         orderMoneySettleService.shareSettlePDD(uid, maxPreGetTime);
      } catch (OrderMoneySettleException e) {
         e.printStackTrace();
      }
@@ -1211,6 +1246,23 @@
   @Transactional(rollbackFor = Exception.class)
   public void invalidHongBaoV2AndGiveGodenCorn(Long hongBaoId, Long uid, String orderId, int sourceType,
         String beiZhu) throws Exception {
      HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBaoId);
      if (hongbaoOrder != null) {
         CommonOrder commonOrder = commonOrderService.selectByPrimaryKey(hongbaoOrder.getCommonOrder().getId());
         if (commonOrder != null) {
            if (commonOrder.getState() == CommonOrder.STATE_FK) {
               CommonOrder updateOrder = new CommonOrder(commonOrder.getId());
               updateOrder.setState(CommonOrder.STATE_SX);
               updateOrder.setUpdateTime(new Date());
               commonOrderService.updateByPrimaryKeySelective(updateOrder);
            }
         }
      }
      HongBaoV2 hongBao = hongBaoV2Service.selectByPrimaryKey(hongBaoId);
      if (hongBao == null || hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
         return;
      HongBaoV2 v2 = new HongBaoV2(hongBaoId);
      v2.setState(HongBaoV2.STATE_SHIXIAO);
      v2.setBeizhu(beiZhu);
@@ -1226,8 +1278,8 @@
            hongBaoV2Service.updateByPrimaryKeySelective(update);
         }
      // TODO 商家关店跑路需要赠送金币
      // userSystemCouponService.systemGiveRewardCoupon(uid, 1, orderId,
      // sourceType, "因商家违约未能结算返利或商家已经关店");
      // userSystemCouponService.rewardCouponWin(uid,
      // UserSystemCoupon.SOURCE_SYSTEM_PUSH, 1, true, new BigDecimal("31"));
   }
   @Transactional
@@ -1319,9 +1371,6 @@
         }
         userMoneyService.addUserMoney(hongBao.getUserInfo().getId(), hongBao.getMoney(), detail);
         BigDecimal balance = userInfoMapper.selectByPrimaryKey(hongBao.getUserInfo().getId()).getMyHongBao();
         // 添加消息
         userMoneyMsgNotificationService.elmeFanli(hongBao.getUserInfo().getId(), order.getOrderId(),
               hongBao.getMoney(), balance);
      }
      // 返利到账
   }