从多个service层调用不同的方法,处理可能造成发生事务的处理,手动抛出异常
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    1. /**
    2. * 资金调拨单
    3. */
    4. @PostMapping(value = "transfer")
    5. @Transactional
    6. public String transfer(Integer resource_dept_id, Integer target_dept_id,
    7. BigDecimal amount, String remark) {
    8. Transfer transfer = new Transfer();
    9. transfer.setAmount(amount);
    10. transfer.setRemark(remark);
    11. transfer.setResourceDeptId(resource_dept_id);
    12. try {
    13. transfer.setTargetDeptId(target_dept_id);
    14. //部门减钱
    15. Boolean b1 = balanceService.updata(transfer.getResourceDeptId(),
    16. new Integer(0), transfer.getAmount());
    17. //部门价钱
    18. Boolean b2 = balanceService.updata(transfer.getTargetDeptId(),
    19. new Integer(1), transfer.getAmount());
    20. //记录明细
    21. Boolean b3 = transferService.upData(transfer);
    22. if (b1 && b2 && b3)
    23. return "资金调拨成功。";
    24. else throw new CheckedException("false");
    25. } catch (CheckedException e) {
    26. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    27. return "请检查参数";
    28. }
    29. }