fanli/src/main/java/com/yeshi/fanli/dto/mq/order/OrderTopicTagEnum.java
@@ -1,13 +1,14 @@ package com.yeshi.fanli.dto.mq.order; import com.yeshi.fanli.dto.mq.order.body.BanLiShopOrderMQMsg; import com.yeshi.fanli.util.annotation.UserActive; import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg; import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg; public enum OrderTopicTagEnum { orderStatistic(UserActive.class), // 订单统计 orderUpdate(UserActive.class), // 订单修改 orderFanLiActual(UserActive.class), // 订单实时到账 orderFanLiDelay(UserActive.class), // 订单到账延时消息 orderStatistic(OrderMQMsg.class), // 订单统计 orderUpdate(OrderMoneyRecievedMQMsg.class), // 订单修改 orderFanLiActual(OrderMoneyRecievedMQMsg.class), // 订单实时到账 orderFanLiDelay(OrderMoneyRecievedMQMsg.class), // 订单到账延时消息 banLiShopOrderDelay(BanLiShopOrderMQMsg.class),// 板栗商城下单 banLiShopOrderRefund(BanLiShopOrderMQMsg.class),//板栗商城订单退款 banLiShopOrderPaid(BanLiShopOrderMQMsg.class);//商城订单支付成功 fanli/src/main/java/com/yeshi/fanli/dto/mq/order/body/OrderMQMsg.java
@@ -9,21 +9,28 @@ * */ public class OrderMQMsg extends BaseMQMsgBody{ private String orderId; private Integer type; private Long uid; public OrderMQMsg(String orderId, Integer type, Long uid) { public static int HANDLE_TYPE_ADD = 1;// 新增 public static int HANDLE_TYPE_UPDATE = 2;// 修改 public static int HANDLE_TYPE_ADD_AND_UPDATE = 12;// 部分新增,部分修改 private String orderId; private Integer type;// 订单类型 private Long uid; private int handleType; // 操作类型 private boolean valid; public OrderMQMsg(String orderId, Integer type, Long uid, int handleType, boolean valid) { super(); this.orderId = orderId; this.type = type; this.uid = uid; this.handleType = handleType; this.valid = valid; } public OrderMQMsg() { super(); } public String getOrderId() { return orderId; @@ -48,4 +55,20 @@ public void setUid(Long uid) { this.uid = uid; } public int getHandleType() { return handleType; } public void setHandleType(int handleType) { this.handleType = handleType; } public boolean isValid() { return valid; } public void setValid(boolean valid) { this.valid = valid; } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java
@@ -145,6 +145,7 @@ return hongBaoV2Mapper.selectByPrimaryKey(id); } @Transactional @Override public int addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException { 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; @@ -151,6 +152,9 @@ @Resource(name = "orderTransactionProducer") private TransactionProducer orderTransactionProducer; @Resource(name = "producer") private Producer producer; @Resource private OrderMoneySettleService orderMoneySettleService; @@ -1196,16 +1200,11 @@ * @param sourceType * @param hongBaoType */ @Transactional private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid, int sourceType, int hongBaoType) { // TODO 区分添加与修改 final List<CommonOrder> coList = convertCommonOrder(commonOrderList); OrderMQMsg mqMsg = new OrderMQMsg(orderId, sourceType, uid); Message msg = new Message(MQTopicName.TOPIC_ORDER.name(), OrderTopicTagEnum.orderStatistic.name(), 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); @@ -1216,13 +1215,29 @@ e1.printStackTrace(); } } return TransactionStatus.CommitTransaction; // if (resultCode != 0) // return TransactionStatus.CommitTransaction; // else // return TransactionStatus.RollbackTransaction; 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); } }, null); System.out.println(result); } /** * 订单是否有效 * * @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; } } fanli/src/main/java/com/yeshi/fanli/util/rocketmq/order/MQLocalTransactionChecker.java
@@ -49,11 +49,7 @@ String tag = msg.getTag(); if (msg.getTopic().equalsIgnoreCase(MQTopicName.TOPIC_ORDER.name())) { if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())) { // TODO 加入成功标识 return TransactionStatus.CommitTransaction; } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderFanLiActual.name())) { if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderFanLiActual.name())) { if (hongBaoV2SettleTempService.countByKey(msg.getKey()) > 0) return TransactionStatus.CommitTransaction; else