feat(challenges): 添加挑战源和分享代码字段,更新挑战详情和列表接口
This commit is contained in:
@@ -178,6 +178,8 @@ export class ChallengesService {
|
|||||||
isJoined: Boolean(participation),
|
isJoined: Boolean(participation),
|
||||||
type: challenge.type,
|
type: challenge.type,
|
||||||
badge: challenge.type === ChallengeType.SLEEP ? sleepBadge : undefined,
|
badge: challenge.type === ChallengeType.SLEEP ? sleepBadge : undefined,
|
||||||
|
source: challenge.source,
|
||||||
|
shareCode: challenge.shareCode,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -284,6 +286,9 @@ export class ChallengesService {
|
|||||||
unit: challenge.progressUnit,
|
unit: challenge.progressUnit,
|
||||||
type: challenge.type,
|
type: challenge.type,
|
||||||
badge,
|
badge,
|
||||||
|
creatorId: challenge.creatorId,
|
||||||
|
shareCode: challenge.shareCode,
|
||||||
|
source: challenge.source,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ChallengeProgressDto, RankingItemDto } from './challenge-progress.dto';
|
import { ChallengeProgressDto, RankingItemDto } from './challenge-progress.dto';
|
||||||
import { ChallengeType } from '../models/challenge.model';
|
import { ChallengeSource, ChallengeType } from '../models/challenge.model';
|
||||||
|
|
||||||
export interface BadgeInfoDto {
|
export interface BadgeInfoDto {
|
||||||
code: string;
|
code: string;
|
||||||
@@ -29,4 +29,7 @@ export interface ChallengeDetailDto {
|
|||||||
type: ChallengeType;
|
type: ChallengeType;
|
||||||
unit: string;
|
unit: string;
|
||||||
badge?: BadgeInfoDto;
|
badge?: BadgeInfoDto;
|
||||||
|
creatorId: string | null;
|
||||||
|
shareCode?: string | null;
|
||||||
|
source: ChallengeSource;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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';
|
import { ChallengeProgressDto } from './challenge-progress.dto';
|
||||||
|
|
||||||
export interface BadgeInfoDto {
|
export interface BadgeInfoDto {
|
||||||
@@ -30,6 +30,7 @@ export interface ChallengeListItemDto {
|
|||||||
type: ChallengeType;
|
type: ChallengeType;
|
||||||
unit: string;
|
unit: string;
|
||||||
badge?: BadgeInfoDto;
|
badge?: BadgeInfoDto;
|
||||||
|
source: ChallengeSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ChallengeListResponseDto {
|
export interface ChallengeListResponseDto {
|
||||||
|
|||||||
@@ -22,12 +22,10 @@ export class CreateCustomChallengeDto {
|
|||||||
|
|
||||||
@ApiProperty({ description: '开始时间戳(毫秒)', example: 1704067200000 })
|
@ApiProperty({ description: '开始时间戳(毫秒)', example: 1704067200000 })
|
||||||
@IsNumber()
|
@IsNumber()
|
||||||
@Min(Date.now())
|
|
||||||
startAt: number;
|
startAt: number;
|
||||||
|
|
||||||
@ApiProperty({ description: '结束时间戳(毫秒)', example: 1705881600000 })
|
@ApiProperty({ description: '结束时间戳(毫秒)', example: 1705881600000 })
|
||||||
@IsNumber()
|
@IsNumber()
|
||||||
@Min(Date.now() + 86400000) // 至少未来 1 天
|
|
||||||
endAt: number;
|
endAt: number;
|
||||||
|
|
||||||
@ApiProperty({ description: '每日目标值(如喝水8杯)', example: 8, minimum: 1, maximum: 1000 })
|
@ApiProperty({ description: '每日目标值(如喝水8杯)', example: 8, minimum: 1, maximum: 1000 })
|
||||||
|
|||||||
Reference in New Issue
Block a user