yujian
2019-11-11 3ce9e928e082ff8abf697dba560cbfbb412e89f8
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -19,6 +19,7 @@
import org.yeshi.utils.NumberUtil;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
import com.aliyun.openservices.ons.api.SendResult;
import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter;
import com.aliyun.openservices.ons.api.transaction.TransactionProducer;
@@ -30,9 +31,10 @@
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.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg;
import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
import com.yeshi.fanli.dto.order.OrderMQMsgDTO;
import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
@@ -150,6 +152,9 @@
   @Resource(name = "orderTransactionProducer")
   private TransactionProducer orderTransactionProducer;
   @Resource(name = "producer")
   private Producer producer;
   @Resource
   private OrderMoneySettleService orderMoneySettleService;
@@ -410,11 +415,12 @@
         }
      // 自购到账事务消息
      OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU,
      OrderMoneyRecievedMQMsg mqMsg = new OrderMoneyRecievedMQMsg(OrderMoneyRecievedMQMsg.TYPE_ZIGOU,
            mainUser.getId(), hongBaoOrder.getCommonOrder().getSourceType(),
            hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date());
      mqMsg.setOrderFirst(first);
      Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
      Message msg = new Message(MQTopicName.TOPIC_ORDER.name(), OrderTopicTagEnum.orderFanLiActual.name(),
            new Gson().toJson(mqMsg).getBytes());
      String key = mainUser.getId() + "-" + UUID.randomUUID().toString();
      msg.setKey(key);
      try {
@@ -1194,33 +1200,44 @@
    * @param sourceType
    * @param hongBaoType
    */
   @Transactional
   private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid,
         int sourceType, int hongBaoType) {
      final List<CommonOrder> coList = convertCommonOrder(commonOrderList);
      OrderMQMsgDTO mqMsg = new OrderMQMsgDTO(orderId, sourceType, uid);
      Message msg = new Message(MQTopicName.TOPIC_ORDER.name(),
            String.format(MQTagConstant.TAG_ORDER_STATISTIC_PREFIX + "%s-%s", sourceType, hongBaoType),
            new Gson().toJson(mqMsg).getBytes());
      SendResult result = orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
         @Override
         public TransactionStatus execute(Message arg0, Object arg1) {
            int resultCode = 0;
            try {
               resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType);
            } catch (HongBaoException e) {
               try {
                  LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + orderId);
               } catch (Exception e1) {
                  e1.printStackTrace();
               }
            }
            return TransactionStatus.CommitTransaction;
            // if (resultCode != 0)
            // return TransactionStatus.CommitTransaction;
            // else
            // return TransactionStatus.RollbackTransaction;
      int resultCode = 0;
      try {
         resultCode = hongBaoV2Service.addHongBao(coList, hongBaoType);
      } catch (HongBaoException e) {
         try {
            LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + orderId);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
      }, null);
      System.out.println(result);
      }
      if (resultCode == 1) {// 只发送新增消息
         OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD,
               isCommonOrderValid(coList));
         Message msg = new Message(MQTopicName.TOPIC_ORDER.name(), OrderTopicTagEnum.orderStatistic.name(),
               new Gson().toJson(mqMsg).getBytes());
         producer.send(msg);
      }
   }
   /**
    * 订单是否有效
    *
    * @param coList
    * @return
    */
   private boolean isCommonOrderValid(List<CommonOrder> coList) {
      for (CommonOrder commonOrder : coList) {
         if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_FK
               || commonOrder.getState() == CommonOrder.STATE_WQ) {
            return true;
         }
      }
      return false;
   }
}