admin
2019-11-07 f3bcea3e6e9c8e93123487ec2ee0b33176bd8697
订单统计/订单到账消息通知修改
5个文件已修改
124 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/OrderTopicTagEnum.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/body/OrderMQMsg.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/HongBaoV2ServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/order/MQLocalTransactionChecker.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/OrderTopicTagEnum.java
@@ -1,16 +1,17 @@
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), // 订单到账延时消息
    banLiShopOrderDelay(BanLiShopOrderMQMsg.class),// 板栗商城下单
    banLiShopOrderRefund(BanLiShopOrderMQMsg.class),//板栗商城订单退款
    banLiShopOrderPaid(BanLiShopOrderMQMsg.class);//商城订单支付成功
    orderStatistic(OrderMQMsg.class), // 订单统计
    orderUpdate(OrderMoneyRecievedMQMsg.class), // 订单修改
    orderFanLiActual(OrderMoneyRecievedMQMsg.class), // 订单实时到账
    orderFanLiDelay(OrderMoneyRecievedMQMsg.class), // 订单到账延时消息
    banLiShopOrderDelay(BanLiShopOrderMQMsg.class), // 板栗商城下单
    banLiShopOrderRefund(BanLiShopOrderMQMsg.class), // 板栗商城订单退款
    banLiShopOrderPaid(BanLiShopOrderMQMsg.class);// 商城订单支付成功
    private final Class<?> clazz;
fanli/src/main/java/com/yeshi/fanli/dto/mq/order/body/OrderMQMsg.java
@@ -8,22 +8,29 @@
 * @author Administrator
 *
 */
public class OrderMQMsg extends BaseMQMsgBody{
    private String orderId;
    private Integer type;
    private Long uid;
public class OrderMQMsg extends BaseMQMsgBody {
    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,33 +1200,44 @@
     * @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);
                } 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;
    }
}
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