From 26e88ae6102dc87ad4d69dc7c57c796ca8530e92 Mon Sep 17 00:00:00 2001 From: richarjiang Date: Wed, 26 Nov 2025 17:26:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(challenges):=20=E6=B7=BB=E5=8A=A0=E6=8C=91?= =?UTF-8?q?=E6=88=98=E6=BA=90=E5=92=8C=E5=88=86=E4=BA=AB=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=9B=B4=E6=96=B0=E6=8C=91=E6=88=98?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=92=8C=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/challenges/challenges.service.ts | 5 +++++ src/challenges/dto/challenge-detail.dto.ts | 5 ++++- src/challenges/dto/challenge-list.dto.ts | 3 ++- src/challenges/dto/create-custom-challenge.dto.ts | 2 -- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/challenges/challenges.service.ts b/src/challenges/challenges.service.ts index fa50cda..e5978b4 100644 --- a/src/challenges/challenges.service.ts +++ b/src/challenges/challenges.service.ts @@ -178,6 +178,8 @@ export class ChallengesService { isJoined: Boolean(participation), type: challenge.type, badge: challenge.type === ChallengeType.SLEEP ? sleepBadge : undefined, + source: challenge.source, + shareCode: challenge.shareCode, }; }); } @@ -284,6 +286,9 @@ export class ChallengesService { unit: challenge.progressUnit, type: challenge.type, badge, + creatorId: challenge.creatorId, + shareCode: challenge.shareCode, + source: challenge.source, }; } diff --git a/src/challenges/dto/challenge-detail.dto.ts b/src/challenges/dto/challenge-detail.dto.ts index 7515657..70bf852 100644 --- a/src/challenges/dto/challenge-detail.dto.ts +++ b/src/challenges/dto/challenge-detail.dto.ts @@ -1,5 +1,5 @@ import { ChallengeProgressDto, RankingItemDto } from './challenge-progress.dto'; -import { ChallengeType } from '../models/challenge.model'; +import { ChallengeSource, ChallengeType } from '../models/challenge.model'; export interface BadgeInfoDto { code: string; @@ -29,4 +29,7 @@ export interface ChallengeDetailDto { type: ChallengeType; unit: string; badge?: BadgeInfoDto; + creatorId: string | null; + shareCode?: string | null; + source: ChallengeSource; } diff --git a/src/challenges/dto/challenge-list.dto.ts b/src/challenges/dto/challenge-list.dto.ts index ad16910..8d8def1 100644 --- a/src/challenges/dto/challenge-list.dto.ts +++ b/src/challenges/dto/challenge-list.dto.ts @@ -1,4 +1,4 @@ -import { ChallengeStatus, ChallengeType } from '../models/challenge.model'; +import { ChallengeSource, ChallengeStatus, ChallengeType } from '../models/challenge.model'; import { ChallengeProgressDto } from './challenge-progress.dto'; export interface BadgeInfoDto { @@ -30,6 +30,7 @@ export interface ChallengeListItemDto { type: ChallengeType; unit: string; badge?: BadgeInfoDto; + source: ChallengeSource; } export interface ChallengeListResponseDto { diff --git a/src/challenges/dto/create-custom-challenge.dto.ts b/src/challenges/dto/create-custom-challenge.dto.ts index 60037fd..23edd74 100644 --- a/src/challenges/dto/create-custom-challenge.dto.ts +++ b/src/challenges/dto/create-custom-challenge.dto.ts @@ -22,12 +22,10 @@ export class CreateCustomChallengeDto { @ApiProperty({ description: '开始时间戳(毫秒)', example: 1704067200000 }) @IsNumber() - @Min(Date.now()) startAt: number; @ApiProperty({ description: '结束时间戳(毫秒)', example: 1705881600000 }) @IsNumber() - @Min(Date.now() + 86400000) // 至少未来 1 天 endAt: number; @ApiProperty({ description: '每日目标值(如喝水8杯)', example: 8, minimum: 1, maximum: 1000 })