diff --git a/backend/services/trading-service/src/api/controllers/market-maker.controller.ts b/backend/services/trading-service/src/api/controllers/market-maker.controller.ts index 54948e1d..42682da6 100644 --- a/backend/services/trading-service/src/api/controllers/market-maker.controller.ts +++ b/backend/services/trading-service/src/api/controllers/market-maker.controller.ts @@ -9,48 +9,117 @@ import { HttpStatus, } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse, ApiQuery } from '@nestjs/swagger'; +import { IsString, IsOptional, IsNumber } from 'class-validator'; import { MarketMakerService, LedgerType, AssetType } from '../../application/services/market-maker.service'; import { Public } from '../../shared/guards/jwt-auth.guard'; // DTO 定义 class InitializeMarketMakerDto { + @IsOptional() + @IsString() name?: string; + + @IsString() accountSequence: string; + + @IsOptional() + @IsString() initialCash?: string; + + @IsOptional() + @IsNumber() maxBuyRatio?: number; + + @IsOptional() + @IsNumber() minIntervalMs?: number; + + @IsOptional() + @IsNumber() maxIntervalMs?: number; } class DepositDto { + @IsString() amount: string; + + @IsOptional() + @IsString() memo?: string; } class WithdrawDto { + @IsString() amount: string; + + @IsOptional() + @IsString() memo?: string; } class UpdateConfigDto { + @IsOptional() + @IsNumber() maxBuyRatio?: number; + + @IsOptional() + @IsNumber() minIntervalMs?: number; + + @IsOptional() + @IsNumber() maxIntervalMs?: number; + + @IsOptional() + @IsString() priceStrategy?: string; + + @IsOptional() + @IsNumber() discountRate?: number; } class UpdateMakerConfigDto { + @IsOptional() bidEnabled?: boolean; + + @IsOptional() + @IsNumber() bidLevels?: number; + + @IsOptional() + @IsNumber() bidSpread?: number; + + @IsOptional() + @IsNumber() bidLevelSpacing?: number; + + @IsOptional() + @IsString() bidQuantityPerLevel?: string; + + @IsOptional() askEnabled?: boolean; + + @IsOptional() + @IsNumber() askLevels?: number; + + @IsOptional() + @IsNumber() askSpread?: number; + + @IsOptional() + @IsNumber() askLevelSpacing?: number; + + @IsOptional() + @IsString() askQuantityPerLevel?: string; + + @IsOptional() + @IsNumber() refreshIntervalMs?: number; }