diff --git a/src/mine-core/src/Annotation/Transaction.php b/src/mine-core/src/Annotation/Transaction.php index 81f03566..f8092c25 100644 --- a/src/mine-core/src/Annotation/Transaction.php +++ b/src/mine-core/src/Annotation/Transaction.php @@ -32,5 +32,5 @@ class Transaction extends AbstractAnnotation /** * @param int $retry 重试次数 */ - public function __construct(public int $retry = 1) {} + public function __construct(public int $retry = 1, public ?string $connection = null) {} } diff --git a/src/mine-core/src/Aspect/TransactionAspect.php b/src/mine-core/src/Aspect/TransactionAspect.php index 73f3b798..e5fd4dbc 100644 --- a/src/mine-core/src/Aspect/TransactionAspect.php +++ b/src/mine-core/src/Aspect/TransactionAspect.php @@ -48,7 +48,8 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint) $transaction = $proceedingJoinPoint->getAnnotationMetadata()->method[Transaction::class]; } try { - Db::beginTransaction(); + $connection = $transaction->connection; + Db::connection($connection)->beginTransaction(); $number = 0; $retry = intval($transaction->retry); do { @@ -58,9 +59,9 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint) } ++$number; } while ($number < $retry); - Db::commit(); + Db::connection($connection)->commit(); } catch (\Throwable $e) { - Db::rollBack(); + Db::connection($connection)->rollBack(); throw new MineException($e->getMessage(), 500); } return $result;