yujian
2020-01-03 c9cbdfa41d645d42eeaa7e06d550d4ef8ac328e7
fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.util;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -17,34 +18,51 @@
import org.yeshi.utils.tencentcloud.COSManager;
import org.yeshi.utils.tencentcloud.entity.COSInitParams;
import com.yeshi.fanli.dto.ad.DouYinDeviceActiveQueueDTO;
import com.yeshi.fanli.dto.money.UserMoneyChangeDTO;
import com.yeshi.fanli.entity.ad.DouYinClickEvent;
import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.jd.JDOrder;
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.push.DeviceActive;
import com.yeshi.fanli.entity.push.PushQueueRecord;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
import com.yeshi.fanli.exception.TaoBaoWeiQuanException;
import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.jd.JDOrderService;
import com.yeshi.fanli.service.inter.ad.DouYinClickEventService;
import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
import com.yeshi.fanli.service.inter.lable.LabelService;
import com.yeshi.fanli.service.inter.money.UserMoneyDebtService;
import com.yeshi.fanli.service.inter.money.extract.ExtractService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
import com.yeshi.fanli.service.inter.order.OrderProcessService;
import com.yeshi.fanli.service.inter.pdd.PDDOrderService;
import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.push.DeviceActiveService;
import com.yeshi.fanli.service.inter.push.IOSPushService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.util.ad.DouYinAdUtil;
import com.yeshi.fanli.util.cmq.DouYinDeviceActiveCMQManager;
import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager;
import com.yeshi.fanli.util.cmq.JDOrderCMQManager;
import com.yeshi.fanli.util.cmq.PDDOrderCMQManager;
import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager;
import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager;
import com.yeshi.fanli.util.cmq.UserMoneyChangeCMQManager;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
@@ -102,6 +120,24 @@
   @Resource
   private PDDOrderService pddOrderService;
   @Resource
   private HongBaoV2Service hongBaoV2Service;
   @Resource
   private IntegralGetService integralGetService;
   @Resource
   private CommonOrderService commonOrderService;
   @Resource
   private HongBaoOrderService hongBaoOrderService;
   @Resource
   private IntegralTaskRecordService integralTaskRecordService;
   @Resource
   private DeviceActiveService deviceActiveService;
   private static boolean isInited = false;
   public void onApplicationEvent(ContextRefreshedEvent arg0) {
@@ -126,18 +162,19 @@
         doTaoBaoOrders();// 处理淘宝订单
         doTaoBaoNewOrders();// 处理淘宝订单(刚刚产生的)
         doOrderFanLiNew();// 新版返利
         doOrderTiChengFanLi();// 处理订单提成返利
//         doOrderTiChengFanLi();// 处理订单提成返利
         doWeiQuanOrder();// 处理维权订单
         doPushIOS();// 处理发送IOS消息
         doThreeSaleUserCouponJob();// 处理邀请队列
         doUserMoneyDebtJob();// 债务偿还
         initScheduler();// 启动商品更新定时任务
         doUpdateGoodsJob(); // 更新商品队列
         doJDOrderJob();// 京东订单处理
         doPDDOrderJob();// 拼多多订单处理
         doImportantTaoBaoGoodsUpdateJob();// 淘宝重要商品的信息更新
         doHongBaoRecieveIntegralGetJob();// 返利到账,金币增加
         // doPlaceOrderIntegralJob();// 下单赠送金币任务
         // doDouYinDeviceActiveJob();// 抖音设备激活广告监测
      }
   }
   /**
@@ -205,6 +242,7 @@
            public void run() {
               while (true) {
                  try {
                     // 取16个订单
                     List<String> orderIds = CMQManager.getInstance().consumeTaoBaoOrderMsg(16);
                     if (orderIds != null) {
@@ -289,7 +327,7 @@
                        try {
                           HongBaoV2 hongbao = map.get(handler);
                           if (hongbao != null) {
                              String key = "hongbao-fanli-" + hongbao.getId();
                              String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.hongBaoFanLi, hongbao.getId() + "");
                              if (StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
                                 // 处理之后要隔2小时再次进行处理
                                 redisManager.cacheCommonString(key, "1", 60 * 60 * 2);
@@ -476,66 +514,6 @@
   }
   /**
    * 邀请关系变化后券的更新
    */
   public void doThreeSaleUserCouponJob() {
      // 采用2个线程做更新
      for (int i = 0; i < 2; i++)
         executor.execute(new Runnable() {
            @Override
            public void run() {
               while (true) {
                  try {
                     Map<String, ThreeSale> map = ThreeSaleCMQManager.getInstance()
                           .consumeQueueMsg(ThreeSaleCMQManager.QUEUE_USER_COUPON, 16);
                     if (map != null) {
                        Iterator<String> its = map.keySet().iterator();
                        while (its.hasNext()) {
                           String key = its.next();
                           try {
                              ThreeSale threeSale = map.get(key);
                              if (threeSale != null)
                                 threeSale = threeSaleSerivce.selectByPrimaryKey(threeSale.getId());
                              if (threeSale != null) {
                                 if (threeSale.getState() != null && threeSale.getState() == true) {
                                    // 邀请成功 - 券激活生效
                                    LogHelper.test("doThreeSaleUserCouponJob-" + threeSale.getId());
                                    Long bossId = threeSale.getBoss().getId();
                                    // 下级昵称
                                    String workerNickName = userInfoService
                                          .selectByPKey(threeSale.getWorker().getId()).getNickName();
                                    userSystemCouponService.activatedWelfareFreeCoupon(bossId,
                                          workerNickName);
                                 }
                              }
                              ThreeSaleCMQManager.getInstance()
                                    .deleteQueueMsg(ThreeSaleCMQManager.QUEUE_USER_COUPON, key);
                           } catch (Exception e) {
                              try {
                                 LogHelper.errorDetailInfo(e);
                              } catch (Exception e1) {
                                 e1.printStackTrace();
                              }
                           }
                        }
                     }
                  } catch (Exception e) {
                     LogHelper.error("更新商品出错:" + e.getMessage());
                  }
               }
            }
         });
   }
   /**
    * 用户借贷处理
    */
   public void doUserMoneyDebtJob() {
@@ -569,7 +547,6 @@
                  }
               } catch (Exception e) {
                  LogHelper.error("还款出错:" + e.getMessage());
               }
            }
         }
@@ -634,17 +611,12 @@
                           }
                           PDDOrderCMQManager.getInstance().deletePDDOrder(key);
                        } catch (Exception e) {
                           try {
                              LogHelper.errorDetailInfo(e);
                           } catch (Exception e1) {
                              e1.printStackTrace();
                           }
                           LogHelper.errorDetailInfo(e);
                        }
                     }
                  }
               } catch (Exception e) {
                  LogHelper.error("拼多多订单:" + e.getMessage());
               }
            }
         }
@@ -688,7 +660,409 @@
               }
            }
         });
   }
   /**
    * 红包到账后的金币获取
    */
   public void doHongBaoRecieveIntegralGetJob() {
      executor.execute(new Runnable() {
         @Override
         public void run() {
            while (true) {
               Map<String, Long> map = HongBaoRecieveCMQManager.getInstance()
                     .consumeQueueMsg(HongBaoRecieveCMQManager.QUEUE_INTEGRAL, 16);
               if (map != null) {
                  Iterator<String> its = map.keySet().iterator();
                  while (its.hasNext()) {
                     String key = its.next();
                     Long hongBaoId = map.get(key);
                     try {
                        HongBaoV2 hongBaoV2 = hongBaoV2Service.selectByPrimaryKey(hongBaoId);
                        if (hongBaoV2 != null && hongBaoV2.getState() == HongBaoV2.STATE_YILINGQU
                              && hongBaoV2.getMoney().compareTo(new BigDecimal(0)) > 0) {
                           // 到账送金币
                           fanliGetIntegral(hongBaoV2);
                           HongBaoRecieveCMQManager.getInstance()
                                 .deleteQueueMsg(HongBaoRecieveCMQManager.QUEUE_INTEGRAL, key);
                           // 返利不足0.01元送金币
                           if (hongBaoV2.getType() == HongBaoV2.TYPE_ZIGOU) {// 自购
                              // 判断是否为该用户的首笔红包
                              List<Integer> typeList = new ArrayList<>();
                              typeList.add(HongBaoV2.TYPE_ZIGOU);
                              HongBaoV2 firstHongBao = hongBaoV2Service.getFirstValidHongBaoByTypeAndUid(
                                    typeList, hongBaoV2.getUserInfo().getId());
                              if (firstHongBao != null
                                    && firstHongBao.getId().longValue() == hongBaoV2.getId()) {// 自购首单到账
                                 // 查询下级红包
                                 BigDecimal firstLevelMoney = new BigDecimal(0);
                                 BigDecimal secondLevelMoney = new BigDecimal(0);
                                 // 获取改单下面的红包
                                 List<HongBaoV2> hongBaoList = new ArrayList<>();
                                 HongBaoOrder hongBaoOrder = hongBaoOrderService
                                       .selectDetailByHongBaoId(hongBaoV2.getId());
                                 if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) {// 计算改订单号下面的所有返利金额
                                    CommonOrder commonOrder = hongBaoOrder.getCommonOrder();
                                    List<CommonOrder> list = commonOrderService.listBySourceTypeAndOrderId(
                                          commonOrder.getSourceType(), commonOrder.getOrderNo());
                                    for (CommonOrder co : list) {
                                       HongBaoOrder hbo = hongBaoOrderService
                                             .selectDetailByCommonOrderId(co.getId());
                                       if (hbo != null && hbo.getHongBaoV2() != null)
                                          hongBaoList.add(hbo.getHongBaoV2());
                                    }
                                 }
                                 for (HongBaoV2 hb : hongBaoList) {
                                    List<HongBaoV2> children = hongBaoV2Service
                                          .listChildrenById(hb.getId());
                                    if (children != null)
                                       for (HongBaoV2 child : children)
                                          if (child.getType() == HongBaoV2.TYPE_YIJI) {
                                             firstLevelMoney = firstLevelMoney.add(child.getMoney());
                                          } else if (child.getType() == HongBaoV2.TYPE_ERJI) {
                                             secondLevelMoney = secondLevelMoney.add(child.getMoney());
                                          }
                                 }
                                 // 查询下级的生效时间
                                 ThreeSale threeSale = threeSaleSerivce.selectLatestByWorkerIdAndState(
                                       hongBaoV2.getUserInfo().getId(), ThreeSale.STATE_SUCCESS);
                                 if (threeSale != null && threeSale.getSucceedTime() != null && threeSale
                                       .getSucceedTime() < hongBaoV2.getCreateTime().getTime()) {// 邀请成功的时间是否在下单的时间之前
                                    // 成功时间要大于20190910日才开始送金币
                                    if (threeSale.getSucceedTime() > TimeUtil.convertToTimeTemp("20190901",
                                          "yyyyMMdd")) {
                                       if (firstLevelMoney.compareTo(new BigDecimal("0.01")) < 0) {// 一级返利小于0.01
                                          integralTaskRecordService.firstRebateOrderRewardBoss(
                                                threeSale.getBoss().getId(),
                                                hongBaoV2.getUserInfo().getId(), null);
                                          LogHelper.test("自购-一级用户-" + threeSale.getBoss().getId()
                                                + "-hongBaoId:" + hongBaoV2.getId());
                                       }
                                    }
                                 }
                                 // 查询下下级生效时间
                                 if (threeSale != null) {
                                    threeSale = threeSaleSerivce.selectLatestByWorkerIdAndState(
                                          threeSale.getBoss().getId(), ThreeSale.STATE_SUCCESS);
                                    if (threeSale != null && threeSale.getSucceedTime() != null && threeSale
                                          .getSucceedTime() < hongBaoV2.getCreateTime().getTime()) {// 邀请成功的时间是否在下单的时间之前
                                       // 成功时间要大于20190910日才开始送金币
                                       if (threeSale.getSucceedTime() > TimeUtil
                                             .convertToTimeTemp("20190901", "yyyyMMdd")) {
                                          if (secondLevelMoney.compareTo(new BigDecimal("0.01")) < 0) {// 二级返利小于0.01
                                             integralTaskRecordService.firstRebateOrderRewardBossSuper(
                                                   threeSale.getBoss().getId(),
                                                   hongBaoV2.getUserInfo().getId(), null);
                                             LogHelper.test("自购-二级用户-" + threeSale.getBoss().getId()
                                                   + "-hongBaoId:" + hongBaoV2.getId());
                                          }
                                       }
                                    }
                                 }
                              }
                           } else if (hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_GOODS) {// 分享赚
                              // 判断是否为该用户的首笔红包
                              List<Integer> typeList = new ArrayList<>();
                              typeList.add(HongBaoV2.TYPE_SHARE_GOODS);
                              HongBaoV2 firstHongBao = hongBaoV2Service.getFirstValidHongBaoByTypeAndUid(
                                    typeList, hongBaoV2.getUserInfo().getId());
                              if (firstHongBao != null
                                    && firstHongBao.getId().longValue() == hongBaoV2.getId()) // 分享首笔到账
                              {
                                 // 查询下级红包
                                 BigDecimal firstLevelMoney = new BigDecimal(0);
                                 // 获取改单下面的红包
                                 List<HongBaoV2> hongBaoList = new ArrayList<>();
                                 HongBaoOrder hongBaoOrder = hongBaoOrderService
                                       .selectDetailByHongBaoId(hongBaoV2.getId());
                                 if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) {// 计算改订单号下面的所有返利金额
                                    CommonOrder commonOrder = hongBaoOrder.getCommonOrder();
                                    List<CommonOrder> list = commonOrderService.listBySourceTypeAndOrderId(
                                          commonOrder.getSourceType(), commonOrder.getOrderNo());
                                    for (CommonOrder co : list) {
                                       HongBaoOrder hbo = hongBaoOrderService
                                             .selectDetailByCommonOrderId(co.getId());
                                       if (hbo != null && hbo.getHongBaoV2() != null)
                                          hongBaoList.add(hbo.getHongBaoV2());
                                    }
                                 }
                                 for (HongBaoV2 hb : hongBaoList) {
                                    List<HongBaoV2> children = hongBaoV2Service
                                          .listChildrenById(hb.getId());
                                    if (children != null)
                                       for (HongBaoV2 child : children)
                                          if (child.getType() == HongBaoV2.TYPE_SHARE_YIJI) {
                                             firstLevelMoney = firstLevelMoney.add(child.getMoney());
                                          }
                                 }
                                 ThreeSale threeSale = threeSaleSerivce.selectLatestByWorkerIdAndState(
                                       hongBaoV2.getUserInfo().getId(), ThreeSale.STATE_SUCCESS);
                                 if (threeSale != null && threeSale.getSucceedTime() != null && threeSale
                                       .getSucceedTime() < hongBaoV2.getCreateTime().getTime()) {// 邀请成功的时间是否在下单的时间之前
                                    // 成功时间要大于20190910日才开始送金币
                                    if (threeSale.getSucceedTime() > TimeUtil.convertToTimeTemp("20190901",
                                          "yyyyMMdd")) {
                                       if (firstLevelMoney.compareTo(new BigDecimal("0.01")) < 0) {// 一级返利小于0.01
                                          integralTaskRecordService.firstSharerOrderRewardBoss(
                                                threeSale.getBoss().getId(),
                                                hongBaoV2.getUserInfo().getId(), null);
                                          LogHelper.test("分享-一级用户-" + threeSale.getBoss().getId()
                                                + "-hongBaoId:" + hongBaoV2.getId());
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     } catch (Exception e) {
                        try {
                           LogHelper.errorDetailInfo(e);
                        } catch (Exception e1) {
                           e1.printStackTrace();
                        }
                     } finally {
                     }
                  }
               }
            }
         }
      });
   }
   private void fanliGetIntegral(HongBaoV2 hongBaoV2) {
      if (hongBaoV2 != null && hongBaoV2.getState() == HongBaoV2.STATE_YILINGQU
            && hongBaoV2.getMoney().compareTo(new BigDecimal(0)) > 0) {
         // 查询对应的订单号
         Long mainHongBaoId = hongBaoV2.getId();
         if (hongBaoV2.getParent() != null && hongBaoV2.getParent().getId() != null)
            mainHongBaoId = hongBaoV2.getParent().getId();
         HongBaoOrder hongbaoOrder = hongBaoOrderService.selectDetailByHongBaoId(mainHongBaoId);
         if (hongbaoOrder == null || hongbaoOrder.getCommonOrder() == null)
            return;
         CommonOrder commonOrder = hongbaoOrder.getCommonOrder();
         if (hongBaoV2.getType() == HongBaoV2.TYPE_ZIGOU) {// 自购订单
            integralGetService.addRebateOrder(hongBaoV2.getUserInfo().getId(), commonOrder.getOrderNo(),
                  commonOrder.getSourceType());
         } else if (hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_GOODS) {// 分享订单
            integralGetService.addShareOrder(hongBaoV2.getUserInfo().getId(), commonOrder.getOrderNo(),
                  commonOrder.getSourceType());
         } else if (hongBaoV2.getType() == HongBaoV2.TYPE_YIJI || hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_YIJI) {// 一级邀请
            integralGetService.addInviteOrderLevelOne(hongBaoV2.getUserInfo().getId(), commonOrder.getOrderNo(),
                  commonOrder.getSourceType());
         } else if (hongBaoV2.getType() == HongBaoV2.TYPE_ERJI || hongBaoV2.getType() == HongBaoV2.TYPE_SHARE_ERJI) {// 二级邀请
            integralGetService.addInviteOrderLevelTwo(hongBaoV2.getUserInfo().getId(), commonOrder.getOrderNo(),
                  commonOrder.getSourceType());
         }
      }
   }
   private boolean isFirstValidOrder(String orderId, int sourceType, Long uid) {
      CommonOrder commonOrder = commonOrderService.selectLatestValidByUid(uid);
      if (commonOrder != null && commonOrder.getOrderNo().equalsIgnoreCase(orderId)
            && sourceType == commonOrder.getSourceType())
         return true;
      else
         return false;
   }
   // 下单获取金币任务
   public void doPlaceOrderIntegralJob() {
      executor.execute(new Runnable() {
         @Override
         public void run() {
            while (true) {
               Map<String, Order> map = PlaceOrderCMQManager.getInstance()
                     .consumeQueueMsg(PlaceOrderCMQManager.QUEUE_INTEGRAL, 16);
               if (map != null) {
                  for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
                     try {
                        String key = its.next();
                        Order order = map.get(key);
                        // 是否是首单
                        if (isFirstValidOrder(order.getOrderId(), order.getOrderType(),
                              order.getUserInfo().getId())) {
                           // 统计订单下的用户所获得的返利金额
                           List<CommonOrder> list = commonOrderService
                                 .listBySourceTypeAndOrderId(order.getOrderType(), order.getOrderId());
                           Map<Long, BigDecimal> hongBaoMoney = new HashMap<>();
                           if (list != null)
                              for (CommonOrder commonOrder : list) {
                                 HongBaoOrder hongBaoOrder = hongBaoOrderService
                                       .selectDetailByCommonOrderId(commonOrder.getId());
                                 if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) {
                                    Long mainUid = hongBaoOrder.getHongBaoV2().getUserInfo().getId();
                                    if (hongBaoMoney.get(mainUid) == null)
                                       hongBaoMoney.put(mainUid, new BigDecimal(0));
                                    hongBaoMoney.put(mainUid, hongBaoMoney.get(mainUid)
                                          .add(hongBaoOrder.getHongBaoV2().getMoney()));
                                    // 查询上级
                                    List<HongBaoV2> children = hongBaoV2Service
                                          .listChildrenById(hongBaoOrder.getHongBaoV2().getId());
                                    if (children != null) {
                                       for (HongBaoV2 hongBao : children) {
                                          Long uid = hongBao.getUserInfo().getId();
                                          if (hongBaoMoney.get(uid) == null)
                                             hongBaoMoney.put(uid, new BigDecimal(0));
                                          hongBaoMoney.put(uid,
                                                hongBaoMoney.get(uid).add(hongBao.getMoney()));
                                       }
                                    }
                                 }
                              }
                           if (isFirstValidOrder(order.getOrderId(), order.getOrderType(),
                                 order.getUserInfo().getId())) {// 有效的首单
                              if (hongBaoMoney.get(order.getUserInfo().getId()) == null || hongBaoMoney
                                    .get(order.getUserInfo().getId()).compareTo(new BigDecimal("0")) <= 0) {
                                 // 分享奖金是0
                                 integralTaskRecordService.firstShareOrderReward(order.getUserInfo().getId(),
                                       null);
                              }
                              // 获取上两级数据
                              UserInfo boss = threeSaleSerivce.getBoss(order.getUserInfo().getId());
                              if (boss != null) {// 判断上级的红包
                                 if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney.get(boss.getId())
                                       .compareTo(new BigDecimal("0")) <= 0) {
                                    // 补偿金币
                                    integralTaskRecordService.firstSharerOrderRewardBoss(boss.getId(),
                                          order.getUserInfo().getId(), null);
                                 }
                              }
                           } else {// 自购订单
                              UserInfo boss = threeSaleSerivce.getBoss(order.getUserInfo().getId());
                              if (boss != null) {// 判断上级的红包
                                 if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney.get(boss.getId())
                                       .compareTo(new BigDecimal("0")) <= 0) {
                                    // 补偿金币1级
                                    integralTaskRecordService.firstRebateOrderRewardBoss(boss.getId(),
                                          order.getUserInfo().getId(), null);
                                 }
                                 boss = threeSaleSerivce.getBoss(boss.getId());
                                 if (boss != null) {// 判断上级的红包
                                    if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney
                                          .get(boss.getId()).compareTo(new BigDecimal("0")) <= 0) {
                                       // 补偿金币2级
                                       integralTaskRecordService.firstRebateOrderRewardBossSuper(
                                             boss.getId(), order.getUserInfo().getId(), null);
                                    }
                                 }
                              }
                           }
                        }
                        PlaceOrderCMQManager.getInstance().deleteQueueMsg(PlaceOrderCMQManager.QUEUE_INTEGRAL,
                              key);
                     } catch (Exception e) {
                        LogHelper.errorDetailInfo(e);
                     }
                  }
               }
            }
         }
      });
   }
   // 抖音广告监控
   public void doPlaceOrderAdJob() {
      executor.execute(new Runnable() {
         @Override
         public void run() {
            while (true) {
               Map<String, Order> map = PlaceOrderCMQManager.getInstance()
                     .consumeQueueMsg(PlaceOrderCMQManager.QUEUE_AD, 16);
               if (map != null) {
                  // 是否是首单
                  for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
                     String key = its.next();
                     Order order = map.get(key);
                     if (isFirstValidOrder(order.getOrderId(), order.getOrderType(),
                           order.getUserInfo().getId())) {// 有效的首单
                        // TODO 抖音的数据回调
                     }
                  }
               }
            }
         }
      });
   }
   @Resource
   private DouYinClickEventService douYinClickEventService;
   // 抖音
   public void doDouYinDeviceActiveJob() {
      LogHelper.test("开始执行:doDouYinDeviceActiveJob");
      executor.execute(new Runnable() {
         @Override
         public void run() {
            LogHelper.test("开始执行:doDouYinDeviceActiveJob-run");
            while (true) {
               Map<String, DouYinDeviceActiveQueueDTO> map = DouYinDeviceActiveCMQManager.getInstance()
                     .consume(16);
               if (map != null) {
                  // 是否是首单
                  for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
                     String key = its.next();
                     DouYinDeviceActiveQueueDTO active = map.get(key);
                     if (active.getType() == DouYinDeviceActiveQueueDTO.TYPE_AD) {// 抖音
                        DouYinClickEvent event = douYinClickEventService.selectByCallback(active.getCallback());
                        if (event != null) {
                           if (event.getOs() == 0 && !StringUtil.isNullOrEmpty(event.getUuid())) {
                              DeviceActive deviceActive = deviceActiveService
                                    .getFirstActiveInfoByImei(event.getUuid());
                              if (deviceActive != null) {
                                 if (event != null) {
                                    if (event.getOs() == 0)
                                       DouYinAdUtil.activeAndroid(event.getCallback(), event.getImei(),
                                             deviceActive.getCreateTime().getTime());
                                    else if (event.getOs() == 1)
                                       DouYinAdUtil.activeIOS(event.getCallback(), event.getIdfa(),
                                             deviceActive.getCreateTime().getTime());
                                 }
                              }
                           } else {// TODO 处理IOS
                           }
                        }
                     } else if (active.getType() == DouYinDeviceActiveQueueDTO.TYPE_DEVICE) {// 设备
                        if (active.getPlatform() == 1) {
                           DeviceActive deviceActive = deviceActiveService
                                 .getFirstActiveInfo(active.getDevice());
                           if (deviceActive != null && !StringUtil.isNullOrEmpty(deviceActive.getImei())) {
                              DouYinClickEvent event = douYinClickEventService
                                    .selectByUuid(deviceActive.getImei());
                              if (event != null) {// 回调
                                 if (deviceActive != null)
                                    DouYinAdUtil.activeAndroid(event.getCallback(), event.getImei(),
                                          deviceActive.getCreateTime().getTime());
                              }
                           }
                        } else {
                           // TODO 兼容IOS
                        }
                     }
                     DouYinDeviceActiveCMQManager.getInstance().delete(key);
                  }
               }
            }
         }
      });
   }
}