From ca527e997db10f9a86005fe02d6bd80a2793ef46 Mon Sep 17 00:00:00 2001 From: tone Date: Wed, 17 Dec 2025 23:02:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8E=E7=AB=AF=E8=BF=98=E6=9C=89?= =?UTF-8?q?=E4=BF=A9=E6=96=87=E4=BB=B6=E8=90=BD=E4=B8=8B=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/src/sms/dto/send-login-sms.dto.ts | 6 ++++ .../src/sms/entity/sms-record.entity.ts | 30 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 apps/backend/src/sms/dto/send-login-sms.dto.ts create mode 100644 apps/backend/src/sms/entity/sms-record.entity.ts diff --git a/apps/backend/src/sms/dto/send-login-sms.dto.ts b/apps/backend/src/sms/dto/send-login-sms.dto.ts new file mode 100644 index 0000000..d0373bb --- /dev/null +++ b/apps/backend/src/sms/dto/send-login-sms.dto.ts @@ -0,0 +1,6 @@ +import { IsPhoneNumber } from "class-validator"; + +export class SendLoginSmsDto { + @IsPhoneNumber('CN', { message: '请输入有效的中国大陆手机号' }) + phone: string; +} \ No newline at end of file diff --git a/apps/backend/src/sms/entity/sms-record.entity.ts b/apps/backend/src/sms/entity/sms-record.entity.ts new file mode 100644 index 0000000..4786632 --- /dev/null +++ b/apps/backend/src/sms/entity/sms-record.entity.ts @@ -0,0 +1,30 @@ +import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +@Index('IDX_SMS_PHONE_TYPE', ['phone', 'type']) +@Index('IDX_SMS_EXPIRED', ['expiredAt']) +export class SmsRecord { + @PrimaryGeneratedColumn('identity') + id: number; + + @Column() + phone: string; + + @Column() + type: string; + + @Column() + code: string; + + @Column({ type: 'smallint', default: 0 }) + tryCount: number; + + @CreateDateColumn({ precision: 3 }) + createdAt: Date; + + @Column({ type: 'timestamp with time zone', precision: 3 }) + expiredAt: Date; + + @Column({ type: 'timestamp with time zone', precision: 3, nullable: true }) + usedAt: Date; +} \ No newline at end of file