dto.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { ApiProperty, ApiBody, PartialType } from '@nestjs/swagger';
  2. import { Exclude } from 'class-transformer';
  3. import {
  4. Allow,
  5. IsArray,
  6. IsBoolean,
  7. IsNotEmpty,
  8. IsNumber,
  9. IsOptional,
  10. IsString,
  11. Length,
  12. } from 'class-validator';
  13. import { User } from '../user/user.entity';
  14. export class CreateMenuDto {
  15. @ApiProperty()
  16. @IsString()
  17. @IsNotEmpty({ message: '标题不能为空' })
  18. @Length(1, 200, {
  19. message: `用户名长度必须大于$constraint1到$constraint2之间,当前传递的值是$value`,
  20. })
  21. title: string;
  22. @ApiProperty({ required: false })
  23. @IsString()
  24. @IsOptional()
  25. cover?: string;
  26. @ApiProperty({ required: true })
  27. @IsNumber()
  28. userId: number;
  29. @ApiProperty({ nullable: true, required: false, default: null })
  30. @IsNumber()
  31. @IsOptional()
  32. categoryId?: number;
  33. @ApiProperty({ required: false, default: true })
  34. @IsBoolean()
  35. @IsOptional()
  36. isPublish?: boolean;
  37. @ApiProperty({ required: false })
  38. @IsBoolean()
  39. @IsOptional()
  40. enable?: boolean;
  41. @ApiProperty({ nullable: true, required: false, default: null })
  42. @IsNumber()
  43. @IsOptional()
  44. parentId?: number;
  45. @ApiProperty({ nullable: true, required: false, default: 3 })
  46. @IsNumber()
  47. @IsOptional()
  48. grid?: number;
  49. @ApiProperty({ nullable: true, required: false, default: 0 })
  50. @IsNumber()
  51. @IsOptional()
  52. level?: number;
  53. @ApiProperty({ nullable: true, required: false, default: null })
  54. @IsNumber()
  55. @IsOptional()
  56. articleId?: number;
  57. }
  58. export class GetMenuDto {
  59. @ApiProperty({ required: false })
  60. @Allow()
  61. pageSize?: number;
  62. @ApiProperty({ required: false })
  63. @Allow()
  64. pageNo?: number;
  65. @ApiProperty({ required: false })
  66. @Allow()
  67. title?: string;
  68. @ApiProperty({ required: false })
  69. @Allow()
  70. enable?: boolean;
  71. }
  72. export class QueryMenuDto extends GetMenuDto {
  73. @ApiProperty({ required: false })
  74. @Allow()
  75. parentId?: number;
  76. }
  77. export class UpdateMenuDto extends PartialType(CreateMenuDto) {
  78. @Exclude()
  79. user?: User;
  80. }
  81. export class UploadCoverDto {
  82. @ApiProperty({ type: 'string', format: 'binary', required: true })
  83. file: Express.Multer.File;
  84. }