admin
2020-11-28 dc5be7d38446f70e6ff86df311119c32b41fe7f8
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/OrderDividentsMessageListener.java
@@ -5,6 +5,10 @@
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.entity.SystemFunction;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.SystemInfoUtil;
import org.springframework.stereotype.Component;
import com.aliyun.openservices.ons.api.Action;
@@ -37,97 +41,110 @@
/**
 * 订单分红消息
 * @author Administrator
 *
 * @author Administrator
 */
@Component
public class OrderDividentsMessageListener implements MessageListener {
   @Resource
   private CommonOrderService commonOrderService;
    @Resource
    private CommonOrderService commonOrderService;
   @Resource
   private TeamDividentsManager teamDividentsManager;
    @Resource
    private TeamDividentsManager teamDividentsManager;
   @Resource
   private TeamDividentsSourceManager teamDividentsSourceManager;
    @Resource
    private TeamDividentsSourceManager teamDividentsSourceManager;
   @Resource
   private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
   @Resource
   private UserLevelManager userLevelManager;
    @Resource
    private UserLevelManager userLevelManager;
   public OrderDividentsMessageListener() {
    @Resource
    private UserInfoService userInfoService;
   }
    public OrderDividentsMessageListener() {
   @Override
   public Action consume(Message message, ConsumeContext context) {
      LogHelper.mqInfo("consumer:OrderDividentsMessageListener", message.getMsgID(), message.getTopic(),
            message.getTag(), new String(message.getBody()));
      String tag = message.getTag();
    }
      if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
         if (tag.equalsIgnoreCase(UserTopicTagEnum.forbiddenUser.name())) {
            // 查询上级红包
            UserForbiddenMQMsg dto = new Gson().fromJson(new String(message.getBody()), UserForbiddenMQMsg.class);
            if (dto != null) {
               teamDividentsSourceManager.invalidBySourceUid(dto.getUid(), "用户被封禁");
               return Action.CommitMessage;
            }
         }
      } else if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
         if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())) {
    @Override
    public Action consume(Message message, ConsumeContext context) {
        LogHelper.mqInfo("consumer:OrderDividentsMessageListener", message.getMsgID(), message.getTopic(),
                message.getTag(), new String(message.getBody()));
        String tag = message.getTag();
            OrderMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
            if (dto == null || dto.getStaticticDate().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
               return Action.CommitMessage;
        if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(UserTopicTagEnum.forbiddenUser.name())) {
                // 查询上级红包
                UserForbiddenMQMsg dto = new Gson().fromJson(new String(message.getBody()), UserForbiddenMQMsg.class);
                if (dto != null) {
                    teamDividentsSourceManager.invalidBySourceUid(dto.getUid(), "用户被封禁");
                    return Action.CommitMessage;
                }
            }
        } else if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())) {
            if (dto.isMiandan())// 免单的商品不参与分红
               return Action.CommitMessage;
                OrderMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
                if (dto == null || dto.getStaticticDate().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
                    return Action.CommitMessage;
            if (dto.getHandleType() == OrderMQMsg.HANDLE_TYPE_ADD) {
               List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(dto.getType(),
                     dto.getOrderId());
                //是否有三级分销权限
                SystemEnum system = userInfoService.getUserSystem(dto.getUid());
                if (!SystemInfoUtil.hasFunctions(system, SystemFunction.threeSale))
                    return Action.CommitMessage;
               int state = CommonOrderUtil.getState(commonOrderList);
               if (commonOrderList.size() > 0 && state != CommonOrder.STATE_SX) {
                  List<UserTeamLevel> bossList = new ArrayList<>();
                  List<ThreeSale> threeSalesList = threeSaleSerivce.getMyBossDeepList(dto.getUid(), 100);
                  if (threeSalesList != null)
                     for (ThreeSale ts : threeSalesList) {
                        UserLevelEnum level = userLevelManager.getUserLevel(ts.getBoss().getId());
                        bossList.add(new UserTeamLevel(ts.getBoss().getId(), level));
                     }
                  try {
                     teamDividentsSourceManager.addSource(commonOrderList, bossList);
                     return Action.CommitMessage;
                  } catch (TeamDividentsSourceOrderException e) {
                     if (e.getCode() == TeamDividentsSourceOrderException.CODE_EXIST) {
                        return Action.CommitMessage;
                     }
                  } catch (ParamsException e) {
                     e.printStackTrace();
                  }
               }
            } else {
               teamDividentsSourceManager.updateOrderMoney(dto.getOrderId(), dto.getType());
            }
                if (dto.isMiandan())// 免单的商品不参与分红
                    return Action.CommitMessage;
         } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderConfirm.name())) {// 订单确认收货
            OrderConfirmMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderConfirmMQMsg.class);
            teamDividentsSourceManager.orderSettle(dto.getOrderNo(), dto.getSourceType());
         } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.taoBaoOrderWeiQuan.name())) {
            OrderWeiQuanMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderWeiQuanMQMsg.class);
            try {
               teamDividentsManager.weiQuan(dto.getOrderNo(), dto.getSourceType());
               return Action.CommitMessage;
            } catch (TeamDividentsDebtException e) {
               e.printStackTrace();
            }
         }
      }
      return Action.CommitMessage;
   }
                if (dto.getHandleType() == OrderMQMsg.HANDLE_TYPE_ADD) {
                    List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(dto.getType(),
                            dto.getOrderId());
                    int state = CommonOrderUtil.getState(commonOrderList);
                    if (commonOrderList.size() > 0 && state != CommonOrder.STATE_SX) {
                        List<UserTeamLevel> bossList = new ArrayList<>();
                        List<ThreeSale> threeSalesList = threeSaleSerivce.getMyBossDeepList(dto.getUid(), 100);
                        if (threeSalesList != null)
                            for (ThreeSale ts : threeSalesList) {
                                UserLevelEnum level = userLevelManager.getUserLevel(ts.getBoss().getId());
                                bossList.add(new UserTeamLevel(ts.getBoss().getId(), level));
                            }
                        try {
                            teamDividentsSourceManager.addSource(commonOrderList, bossList);
                            return Action.CommitMessage;
                        } catch (TeamDividentsSourceOrderException e) {
                            if (e.getCode() == TeamDividentsSourceOrderException.CODE_EXIST) {
                                return Action.CommitMessage;
                            }
                        } catch (ParamsException e) {
                            e.printStackTrace();
                        }
                    }
                } else {
                    teamDividentsSourceManager.updateOrderMoney(dto.getOrderId(), dto.getType());
                }
            } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderConfirm.name())) {// 订单确认收货
                OrderConfirmMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderConfirmMQMsg.class);
                //是否有三级分销权限
                SystemEnum system = userInfoService.getUserSystem(dto.getSourceUid());
                if (!SystemInfoUtil.hasFunctions(system, SystemFunction.threeSale))
                    return Action.CommitMessage;
                teamDividentsSourceManager.orderSettle(dto.getOrderNo(), dto.getSourceType());
            } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.taoBaoOrderWeiQuan.name())) {
                OrderWeiQuanMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderWeiQuanMQMsg.class);
                try {
                    teamDividentsManager.weiQuan(dto.getOrderNo(), dto.getSourceType());
                    return Action.CommitMessage;
                } catch (TeamDividentsDebtException e) {
                    e.printStackTrace();
                }
            }
        }
        return Action.CommitMessage;
    }
}