From 05f98def6d9eed3f46ebf8be5a0e4c3e4d290bf8 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 11 Jan 2026 21:47:32 -0800 Subject: [PATCH] =?UTF-8?q?fix(sync):=20=E4=BF=AE=E5=A4=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=90=8C=E6=AD=A5=20API=20=E8=AE=A4=E8=AF=81=E5=92=8C?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 contribution/mining/trading 服务的 AdminController 添加 @Public 装饰器 - 修复 initialization.service.ts 中响应格式解析,支持 { data: { ... } } 格式 Co-Authored-By: Claude Opus 4.5 --- .claude/settings.local.json | 10 +++++++++- .../src/api/controllers/admin.controller.ts | 2 ++ .../application/services/initialization.service.ts | 12 ++++++++---- .../src/api/controllers/admin.controller.ts | 2 ++ .../src/api/controllers/admin.controller.ts | 2 ++ 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 3abdb4a3..943be414 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -704,7 +704,15 @@ "Bash(user \")", "mcp__UIPro__getCodeFromUIProPlugin", "Bash(flutter create:*)", - "Bash(DATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/rwa_auth?schema=public\" npx prisma migrate dev:*)" + "Bash(DATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/rwa_auth?schema=public\" npx prisma migrate dev:*)", + "Bash(curl -s http://103.118.40.14:8001/routes/contribution-v2-api)", + "Bash(curl -s http://103.118.40.14:8001/services/contribution-service-v2)", + "Bash(ssh ceshi@103.39.231.231 \"cd /data/rwadurian/backend/api-gateway && git pull origin main && docker-compose restart kong\")", + "Bash(ssh ceshi@103.39.231.231 \"ls -la /data/ 2>/dev/null || ls -la / | grep -E ''data|home|opt''\")", + "Bash(TOKEN=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJEMjUxMjI3MDAwMjIiLCJwaG9uZSI6IjE4OTI2NzYyNzIxIiwic291cmNlIjoiVjEiLCJpYXQiOjE3NjgxODM5NTIsImV4cCI6MTc2ODc4ODc1Mn0.Uq6TCFWHO64fD_MUP2IoBJzaXo99HDcp0H5s5A14EXQ\")", + "Bash(ssh ceshi@103.39.231.231 \"ssh ceshi@192.168.1.111 ''cd /home/durian/rwadurian && git pull && cd backend/services && ./deploy.sh rebuild auth-service''\")", + "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat\\(mining-admin-web\\): 复用admin-web用户管理功能\n\n- 更新用户列表:添加头像、个人/团队认种、推荐人、状态徽章\n- 更新用户详情:添加头像、KYC状态、认种统计卡片\n- 新增引荐关系Tab:展示引荐人链和直推下级树\n- 新增认种信息Tab:认种汇总和认种分类账明细\n- 新增钱包信息Tab:钱包汇总和钱包分类账明细\n- 更新类型定义和API hooks\n\nCo-Authored-By: Claude Opus 4.5 \nEOF\n\\)\")", + "Bash(ssh ceshi@14.215.128.96 \"cd /home/ceshi/rwadurian/frontend/mining-admin-web && git pull && ls -la deploy.sh\")" ], "deny": [], "ask": [] diff --git a/backend/services/contribution-service/src/api/controllers/admin.controller.ts b/backend/services/contribution-service/src/api/controllers/admin.controller.ts index 1ce2b958..6bd0a042 100644 --- a/backend/services/contribution-service/src/api/controllers/admin.controller.ts +++ b/backend/services/contribution-service/src/api/controllers/admin.controller.ts @@ -1,6 +1,7 @@ import { Controller, Get } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; import { PrismaService } from '../../infrastructure/persistence/prisma/prisma.service'; +import { Public } from '../../shared/guards/jwt-auth.guard'; @ApiTags('Admin') @Controller('admin') @@ -8,6 +9,7 @@ export class AdminController { constructor(private readonly prisma: PrismaService) {} @Get('accounts/sync') + @Public() @ApiOperation({ summary: '获取所有贡献值账户用于同步' }) async getAllAccountsForSync() { const accounts = await this.prisma.contributionAccount.findMany({ diff --git a/backend/services/mining-admin-service/src/application/services/initialization.service.ts b/backend/services/mining-admin-service/src/application/services/initialization.service.ts index fb80013f..66a33147 100644 --- a/backend/services/mining-admin-service/src/application/services/initialization.service.ts +++ b/backend/services/mining-admin-service/src/application/services/initialization.service.ts @@ -106,7 +106,8 @@ export class InitializationService { throw new Error(`Failed to fetch users: ${response.statusText}`); } - const { users } = await response.json(); + const responseData = await response.json(); + const users = responseData.data?.users || responseData.users || []; let syncedCount = 0; for (const user of users) { @@ -155,7 +156,8 @@ export class InitializationService { throw new Error(`Failed to fetch accounts: ${response.statusText}`); } - const { accounts } = await response.json(); + const responseData = await response.json(); + const accounts = responseData.data?.accounts || responseData.accounts || []; let syncedCount = 0; for (const account of accounts) { @@ -209,7 +211,8 @@ export class InitializationService { throw new Error(`Failed to fetch accounts: ${response.statusText}`); } - const { accounts } = await response.json(); + const responseData = await response.json(); + const accounts = responseData.data?.accounts || responseData.accounts || []; let syncedCount = 0; for (const account of accounts) { @@ -255,7 +258,8 @@ export class InitializationService { throw new Error(`Failed to fetch accounts: ${response.statusText}`); } - const { accounts } = await response.json(); + const responseData = await response.json(); + const accounts = responseData.data?.accounts || responseData.accounts || []; let syncedCount = 0; for (const account of accounts) { diff --git a/backend/services/mining-service/src/api/controllers/admin.controller.ts b/backend/services/mining-service/src/api/controllers/admin.controller.ts index 4b8daf61..8cf0694f 100644 --- a/backend/services/mining-service/src/api/controllers/admin.controller.ts +++ b/backend/services/mining-service/src/api/controllers/admin.controller.ts @@ -1,6 +1,7 @@ import { Controller, Get } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; import { PrismaService } from '../../infrastructure/persistence/prisma/prisma.service'; +import { Public } from '../../shared/guards/jwt-auth.guard'; @ApiTags('Admin') @Controller('admin') @@ -8,6 +9,7 @@ export class AdminController { constructor(private readonly prisma: PrismaService) {} @Get('accounts/sync') + @Public() @ApiOperation({ summary: '获取所有挖矿账户用于同步' }) async getAllAccountsForSync() { const accounts = await this.prisma.miningAccount.findMany({ diff --git a/backend/services/trading-service/src/api/controllers/admin.controller.ts b/backend/services/trading-service/src/api/controllers/admin.controller.ts index 56450b1f..d5821d3a 100644 --- a/backend/services/trading-service/src/api/controllers/admin.controller.ts +++ b/backend/services/trading-service/src/api/controllers/admin.controller.ts @@ -1,6 +1,7 @@ import { Controller, Get } from '@nestjs/common'; import { ApiTags, ApiOperation } from '@nestjs/swagger'; import { PrismaService } from '../../infrastructure/persistence/prisma/prisma.service'; +import { Public } from '../../shared/guards/jwt-auth.guard'; @ApiTags('Admin') @Controller('admin') @@ -8,6 +9,7 @@ export class AdminController { constructor(private readonly prisma: PrismaService) {} @Get('accounts/sync') + @Public() @ApiOperation({ summary: '获取所有交易账户用于同步' }) async getAllAccountsForSync() { const accounts = await this.prisma.tradingAccount.findMany({