Thanks to visit codestin.com
Credit goes to github.com

Skip to content

后端对事务控制的部分是不是有点问题 #93

@qw19696

Description

@qw19696
    Boolean execute = transactionTemplate.execute(e -> {
        updateById(storeOrder);
        if (storeOrder.getPayType().equals(Constants.PAY_TYPE_YUE)) {
            //新增日志
            request.setOrderId(storeOrder.getId());
            userBillService.saveRefundBill(request, user);

            // 更新用户金额
            userService.operationNowMoney(user.getUid(), request.getAmount(), user.getNowMoney(), "add");

            // 退款task
            redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId());
        }
        if (storeOrder.getPayType().equals(Constants.PAY_TYPE_WE_CHAT) && request.getAmount().compareTo(BigDecimal.ZERO) == 0) {
            //新增日志
            userBillService.saveRefundBill(request, user);

            // 退款task
            redisUtil.lPush(Constants.ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER, storeOrder.getId());
        }
        return Boolean.TRUE;
    });
    if (!execute) {
        storeOrderStatusService.saveRefund(storeOrder.getId(), request.getAmount(), "失败");
        throw new CrmebException("订单更新失败");
    }
    
    比如这里,如果execute方法里面执行抛出了异常,这里也没有捕获,整个方法直接就被返回了 
    下面整个记录报错的部分根本就没机会进去
    if (!execute) {
        storeOrderStatusService.saveRefund(storeOrder.getId(), request.getAmount(), "失败");
        throw new CrmebException("订单更新失败");
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions