编码注意

2020年2月4日 作者 刘剑

静态数组换成动态数组

Arrays.asList(oldBagIndex.split(",")); 
换成 Lists.newArrayList(oldBagIndex.split(","));

由于发送消息破坏了事务,所以在事务提交成功后再批量发送异步消息

    //1.支付掉FinanceOrder(临时的比如税费等,临时账单)
            List<FinanceOrder> financeOrderList = financeOrderDao.findPrePackFinanceOrdersVAT(wallet.getCustomerId());
            for (FinanceOrder financeOrder : financeOrderList) {
                //如果当前的金额够支付,那么就进行扣,否则进行退出,不继续下一个
                BigDecimal currentAmount = DataUtils.toBigDecimal(wallet.getCurrentAmount());
                BigDecimal totalPrice = DataUtils.toBigDecimal(financeOrder.getTotalPrice());
                if (currentAmount.compareTo(totalPrice) >=0 && currentAmount.compareTo(BigDecimal.ZERO) > 0) {
                    financeOrderPayed(customerId, wallet, payTime, financeOrder);

                    logger.debug("## 财务账单 {} 支付完成,发送JMS消息", financeOrder.getId());
                    RabbitMessage rabbitMessage = new RabbitMessage(RabbitMessageActionsConstant.FINANCE_ORDER_PAYED, financeOrder.getId());
                } else {
                    break;
                }
            }

            //事物提交好开始发送消息
            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
                @Override
                public void afterCommit() {
                    try {
                        for (FinanceOrder financeOrder : financeOrderList) {
                            //订单列表
                            RabbitMessage rabbitMessage = new RabbitMessage(RabbitMessageActionsConstant.FINANCE_ORDER_PAYED, financeOrder.getId());

                            rabbitMessageService.sendMessage(RabbitMessageQueueKeyConstant.FINANCE_SERVICE_QUEUEKEY,rabbitMessage);
                        }
                    }catch (Exception exception){
                        logger.error(exception.getMessage(),exception);
                    }
                }
            });