From 8b2191df2f7d94aa299bd43dcbe97c94e5a61bbd Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 十一月 2019 14:53:34 +0800 Subject: [PATCH] RocketMQ的消息整改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java | 101 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 70 insertions(+), 31 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java index 7816223..043ebc4 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java +++ b/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; @@ -56,6 +58,7 @@ import com.yeshi.fanli.exception.order.HongBaoException; import com.yeshi.fanli.exception.order.OrderItemException; import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException; +import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.elme.ElmeHongBaoOrderMapService; import com.yeshi.fanli.service.inter.elme.ElmeOrderService; @@ -85,6 +88,7 @@ import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; import com.yeshi.fanli.util.rocketmq.MQTagConstant; import com.yeshi.fanli.util.rocketmq.MQTopicName; @@ -150,6 +154,9 @@ @Resource(name = "orderTransactionProducer") private TransactionProducer orderTransactionProducer; + + @Resource(name = "producer") + private Producer producer; @Resource private OrderMoneySettleService orderMoneySettleService; @@ -391,11 +398,31 @@ return; } + // 鏌ヨ璇ヨ鍗曚箣鍓嶆槸鍚︽湁鍒拌处 + List<HongBaoOrder> list = hongBaoOrderMapper.listByOrderIdAndSourceType( + hongBaoOrder.getCommonOrder().getOrderNo(), hongBaoOrder.getCommonOrder().getSourceType()); + List<Long> hongBaoIdList = new ArrayList<>(); + if (list != null) { + for (HongBaoOrder ho : list) { + hongBaoIdList.add(ho.getHongBaoV2().getId()); + } + } + + List<HongBaoV2> allHongBaoList = hongBaoV2Mapper.listByIds(hongBaoIdList); + boolean first = true; + for (HongBaoV2 v2 : allHongBaoList) + if (v2.getState() == HongBaoV2.STATE_YILINGQU) { + first = false; + break; + } + // 鑷喘鍒拌处浜嬪姟娑堟伅 - 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()); - Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes()); + hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date(),0); + mqMsg.setOrderFirst(first); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiActual, + mqMsg); String key = mainUser.getId() + "-" + UUID.randomUUID().toString(); msg.setKey(key); try { @@ -503,7 +530,7 @@ } catch (OrderMoneySettleException e) { e.printStackTrace(); } - if(1>0) + if (1 > 0) return; try { @@ -710,7 +737,6 @@ public void processJDOrder(JDOrder order) { if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0) return; - // 鎷嗗崟鐨勪笉鍋氬鐞� if (order.getValidCode() == 2) return; @@ -1175,33 +1201,46 @@ * @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鎴朼ddHongBao鍑洪敊", "璁㈠崟鍙�:" + 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鎴朼ddHongBao鍑洪敊", "璁㈠崟鍙�:" + orderId); + } catch (Exception e1) { + e1.printStackTrace(); } - }, null); - System.out.println(result); + } catch (UserAccountException e) { + + } + if (resultCode == 1) {// 鍙彂閫佹柊澧炴秷鎭� + OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid, OrderMQMsg.HANDLE_TYPE_ADD, + isCommonOrderValid(coList),0,new Date()); + Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderStatistic, + mqMsg); + 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; + } + } -- Gitblit v1.8.0