From 058849dc2c05da5c1540f98904e871df935e56a4 Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 27 Dec 2025 19:21:48 -0800 Subject: [PATCH] =?UTF-8?q?fix(admin-service):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=89=88=E6=9C=AC=E6=97=B6isForceUpdate?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BAtrue=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 改进Transform装饰器,正确处理FormData传递的字符串"false" - 添加调试日志用于排查问题 问题原因:FormData传递的布尔值会被转为字符串, 原来的Transform可能在某些情况下处理不正确 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/api/controllers/version.controller.ts | 3 +++ .../src/api/dto/request/upload-version.dto.ts | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/services/admin-service/src/api/controllers/version.controller.ts b/backend/services/admin-service/src/api/controllers/version.controller.ts index f79bdb93..45327daf 100644 --- a/backend/services/admin-service/src/api/controllers/version.controller.ts +++ b/backend/services/admin-service/src/api/controllers/version.controller.ts @@ -335,6 +335,9 @@ export class VersionController { file: Express.Multer.File, @Body() dto: UploadVersionDto, ): Promise { + // Debug: log isForceUpdate value + console.log('[VersionController] uploadVersion - dto.isForceUpdate:', dto.isForceUpdate, 'type:', typeof dto.isForceUpdate) + // Validate file extension const ext = file.originalname.toLowerCase().split('.').pop() if (dto.platform === Platform.ANDROID && ext !== 'apk') { diff --git a/backend/services/admin-service/src/api/dto/request/upload-version.dto.ts b/backend/services/admin-service/src/api/dto/request/upload-version.dto.ts index d64d71f9..d2918381 100644 --- a/backend/services/admin-service/src/api/dto/request/upload-version.dto.ts +++ b/backend/services/admin-service/src/api/dto/request/upload-version.dto.ts @@ -34,7 +34,13 @@ export class UploadVersionDto { @ApiPropertyOptional({ description: '是否强制更新', default: false }) @IsOptional() - @Transform(({ value }) => value === 'true' || value === true) + @Transform(({ value }) => { + // Handle string "true"/"false" from FormData + if (typeof value === 'string') { + return value.toLowerCase() === 'true' + } + return value === true + }) @IsBoolean() isForceUpdate?: boolean