From 134e45e0bfa08f256baec33bc0ba93206bb69e10 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 22 Jan 2026 00:57:00 -0800 Subject: [PATCH] =?UTF-8?q?fix(mining-admin-service):=20=E5=AE=A1=E8=AE=A1?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=A4=B1=E8=B4=A5=E4=B8=8D=E5=BD=B1=E5=93=8D?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=A1=A5=E5=8F=91=E8=BF=94=E5=9B=9E=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 批量补发实际操作完成后,即使审计日志创建失败也应返回成功响应。 Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 3 +- .../services/batch-mining.service.ts | 36 +++++++++++-------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 45c10d10..f2d0948a 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -797,7 +797,8 @@ "Bash(npm run lint)", "Bash(ssh -o ProxyCommand=\"ssh -W %h:%p ceshi@103.39.231.231\" -o StrictHostKeyChecking=no ceshi@192.168.1.111 \"cat /home/ceshi/rwadurian/backend/services/mining-service/src/application/services/batch-mining.service.ts | head -250\")", "Bash(ssh -o ProxyCommand=\"ssh -W %h:%p ceshi@103.39.231.231\" -o StrictHostKeyChecking=no ceshi@192.168.1.111 \"docker logs rwa-mining-admin-service --tail 50 2>&1 | grep ''第一条数据\\\\|最后一条数据''\")", - "Bash(npx xlsx-cli 挖矿.xlsx)" + "Bash(npx xlsx-cli 挖矿.xlsx)", + "Bash(DATABASE_URL=\"postgresql://postgres:password@localhost:5432/mining_db?schema=public\" npx prisma migrate dev:*)" ], "deny": [], "ask": [] diff --git a/backend/services/mining-admin-service/src/application/services/batch-mining.service.ts b/backend/services/mining-admin-service/src/application/services/batch-mining.service.ts index 10118175..ddfc599d 100644 --- a/backend/services/mining-admin-service/src/application/services/batch-mining.service.ts +++ b/backend/services/mining-admin-service/src/application/services/batch-mining.service.ts @@ -167,23 +167,29 @@ export class BatchMiningService { // mining-service 使用 TransformInterceptor 包装响应为 { success, data, timestamp } const data = result.data || result; - // 记录审计日志 + // 记录审计日志(失败不影响返回结果,因为实际操作已完成) this.logger.log(`[execute] 记录审计日志...`); - await this.prisma.auditLog.create({ - data: { - adminId, - action: 'CREATE', - resource: 'BATCH_MINING', - resourceId: data.batchId, - newValue: { - totalUsers: data.totalUsers, - successCount: data.successCount, - failedCount: data.failedCount, - totalAmount: data.totalAmount, - reason: request.reason, + try { + await this.prisma.auditLog.create({ + data: { + adminId, + action: 'CREATE', + resource: 'BATCH_MINING', + resourceId: data.batchId, + newValue: { + totalUsers: data.totalUsers, + successCount: data.successCount, + failedCount: data.failedCount, + totalAmount: data.totalAmount, + reason: request.reason, + }, }, - }, - }); + }); + this.logger.log(`[execute] 审计日志记录成功`); + } catch (auditError) { + // 审计日志失败不应该影响返回结果,因为批量补发已经成功执行 + this.logger.error(`[execute] 审计日志记录失败(不影响返回结果):`, auditError); + } this.logger.log( `[execute] 批量补发执行成功: admin=${adminId}, total=${data.totalUsers}, success=${data.successCount}, amount=${data.totalAmount}`,