yujian
2020-04-15 c6b718c3cadf5e5fff4c2a47fd1247842439f8c7
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java
@@ -1,11 +1,33 @@
package com.yeshi.fanli.util.rocketmq.consumer.order;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.aliyun.openservices.ons.api.Action;
import com.aliyun.openservices.ons.api.ConsumeContext;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.aliyun.openservices.ons.api.Producer;
import com.google.gson.Gson;
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.TeamRewardPreRecieveMQMsg;
import com.yeshi.fanli.exception.ParamsException;
import com.yeshi.fanli.exception.money.OrderMoneySettleException;
import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.exception.order.InviteOrderSubsidyException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.mq.MQUnSendInfoService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.service.manger.order.TeamSubsidyManager;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
/**
 * 邀请订单补贴消息消费
@@ -15,6 +37,26 @@
 */
@Component
public class InviteOrderSubsidyMessageListener implements MessageListener {
   @Resource
   private TeamSubsidyManager teamSubsidyManager;
   @Resource
   private UserSystemCouponRecordService userSystemCouponRecordService;
   @Resource(name = "producer")
   private Producer producer;
   @Resource
   private MQUnSendInfoService mqUnSendInfoService;
   @Resource
   private OrderMoneySettleService orderMoneySettleService;
   @Resource
   private CommonOrderService commonOrderService;
   // 团队奖励开始时间
   private static final long TEAM_REWARD_START_TIME = TimeUtil.convertToTimeTemp("2019-04-15", "yyyy-MM-dd");
   public InviteOrderSubsidyMessageListener() {
@@ -22,8 +64,55 @@
   @Override
   public Action consume(Message message, ConsumeContext context) {
      if (message.getTag().startsWith("")) {
      LogHelper.mqInfo("consumer:InviteOrderSubsidyMessageListener", message.getMsgID(), message.getTopic(),
            message.getTag(), new String(message.getBody()));
      String tag = message.getTag();
      if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
         if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())
               || tag.equalsIgnoreCase(OrderTopicTagEnum.orderUpdate.name())) {
            // 查询上级红包
            OrderMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
            if (dto != null) {
               // 查询出订单创建时间
               Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getType());
               if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
                  try {
                     teamSubsidyManager.addOrUpdateOrder(dto.getOrderId(), dto.getType());
                     return Action.CommitMessage;
                  } catch (InviteOrderSubsidyException e) {
                     e.printStackTrace();
                     LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
                  } catch (CommonOrderException e) {
                     e.printStackTrace();
                     LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
                  }
                  return Action.ReconsumeLater;
               } else {
                  try {
                     teamSubsidyManager.addOrUpdateOrder(dto.getOrderId(), dto.getType());
                  } catch (Exception e) {
                     LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
                     return Action.ReconsumeLater;
                  }
               }
            }
         } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.teamRewardPreRecieved.name())) {// 团队奖金预到账
            TeamRewardPreRecieveMQMsg dto = new Gson().fromJson(new String(message.getBody()),
                  TeamRewardPreRecieveMQMsg.class);
            try {
               teamSubsidyManager.addToTeamEincome(dto.getUid(), message.getKey(), dto.getPreGetTime());
               return Action.CommitMessage;
            } catch (OrderMoneySettleException e) {
               e.printStackTrace();
            } catch (TeamEincomeRecordException e) {
               e.printStackTrace();
            } catch (ParamsException e) {
               e.printStackTrace();
            }
            return Action.ReconsumeLater;
         }
      }
      return Action.CommitMessage;
   }