From 78d4cd20dedbeed17fd8ea0fc3dab04e1a46d450 Mon Sep 17 00:00:00 2001 From: minorcell Date: Mon, 21 Apr 2025 01:22:27 +0800 Subject: [PATCH] Add email and phone fields to recruitment entity --- src/recruitment/dto/create-recruitment.dto.ts | 16 ++++++++++++++++ src/recruitment/dto/query-recruitment.dto.ts | 17 +++++++++++++++++ .../dto/recruitment-response.dto.ts | 12 ++++++++++++ src/recruitment/entities/recruiment.entity.ts | 18 ++++++++++++++++++ src/recruitment/recruitment.controller.ts | 2 ++ src/recruitment/recruitment.service.ts | 12 ++++++++++++ 6 files changed, 77 insertions(+) diff --git a/src/recruitment/dto/create-recruitment.dto.ts b/src/recruitment/dto/create-recruitment.dto.ts index 1b74396..55ad9ee 100644 --- a/src/recruitment/dto/create-recruitment.dto.ts +++ b/src/recruitment/dto/create-recruitment.dto.ts @@ -3,6 +3,7 @@ import { IsNotEmpty, IsOptional, IsString, + IsEmail, } from 'class-validator'; /** @@ -15,6 +16,21 @@ export class CreateRecruitmentDto { @IsNotEmpty({ message: '用户ID不能为空' }) userId: number; + /** + * 邮件地址 + */ + @IsString({ message: '邮件地址必须是字符串' }) + @IsNotEmpty({ message: '邮件地址不能为空' }) + @IsEmail({}, { message: '邮件地址格式不正确' }) + email: string; + + /** + * 电话号 + */ + @IsString({ message: '手机号必须是字符串' }) + @IsNotEmpty({ message: '手机号不能为空' }) + phone: string; + /** * 求职类型 * 1: 前端部门, 2: UI部门, 3: 办公部门 diff --git a/src/recruitment/dto/query-recruitment.dto.ts b/src/recruitment/dto/query-recruitment.dto.ts index 30b628e..20b0dae 100644 --- a/src/recruitment/dto/query-recruitment.dto.ts +++ b/src/recruitment/dto/query-recruitment.dto.ts @@ -4,6 +4,8 @@ import { Min, Max, IsDateString, + IsString, + IsEmail, } from 'class-validator'; import { Type } from 'class-transformer'; @@ -65,4 +67,19 @@ export class QueryRecruitmentDto { @IsOptional() @IsDateString({}, { message: '结束时间格式不正确,应为ISO格式的日期字符串' }) endTime?: string; + + /** + * 邮件地址(支持模糊查询) + */ + @IsOptional() + @IsString({ message: '邮件地址必须是字符串' }) + @IsEmail({}, { message: '邮件地址格式不正确' }) + email?: string; + + /** + * 电话号码(支持模糊查询) + */ + @IsOptional() + @IsString({ message: '电话号码必须是字符串' }) + phone?: string; } diff --git a/src/recruitment/dto/recruitment-response.dto.ts b/src/recruitment/dto/recruitment-response.dto.ts index 781d926..c851b70 100644 --- a/src/recruitment/dto/recruitment-response.dto.ts +++ b/src/recruitment/dto/recruitment-response.dto.ts @@ -56,6 +56,16 @@ export class RecruitmentResponseDto { */ updateTime: Date; + /** + * 邮件地址 + */ + email: string; + + /** + * 电话号码 + */ + phone: string; + constructor(recruitment: RecruitmentEntity) { this.officialResumeId = recruitment.officialResumeId; this.userId = recruitment.userId; @@ -67,6 +77,8 @@ export class RecruitmentResponseDto { this.resumeFilePath = recruitment.resumeFilePath; this.createTime = recruitment.createTime; this.updateTime = recruitment.updateTime; + this.email = recruitment.email; + this.phone = recruitment.phone; } /** diff --git a/src/recruitment/entities/recruiment.entity.ts b/src/recruitment/entities/recruiment.entity.ts index e50fafe..23b58c7 100644 --- a/src/recruitment/entities/recruiment.entity.ts +++ b/src/recruitment/entities/recruiment.entity.ts @@ -49,6 +49,24 @@ export class RecruitmentEntity { }) officialFeedbackInfromation: string; + // email + @Column({ + name: "email", + nullable: true, + type: "varchar", + default: "", + }) + email: string; + + // 电话号 + @Column({ + name: "phone", + nullable: true, + type: "varchar", + default: "", + }) + phone: string; + // 简历文件地址 @Column({ name: "resume_file_path", diff --git a/src/recruitment/recruitment.controller.ts b/src/recruitment/recruitment.controller.ts index 3f34933..944bf0a 100644 --- a/src/recruitment/recruitment.controller.ts +++ b/src/recruitment/recruitment.controller.ts @@ -42,6 +42,8 @@ export class RecruitmentController { * Body: { * "userId": 1, * "recrType": 1, + * "email": "example@example.com", + * "phone": "13800138000", * "resumeFilePath": "/uploads/resumes/resume.pdf" * } */ diff --git a/src/recruitment/recruitment.service.ts b/src/recruitment/recruitment.service.ts index bfad9b0..96b74a9 100644 --- a/src/recruitment/recruitment.service.ts +++ b/src/recruitment/recruitment.service.ts @@ -55,6 +55,8 @@ export class RecruitmentService { status, startTime, endTime, + email, + phone, } = query; const skip = (page - 1) * limit; @@ -71,6 +73,16 @@ export class RecruitmentService { queryBuilder.andWhere('recruitment.officialResumeStatus = :status', { status }); } + // 根据邮箱过滤 + if (email) { + queryBuilder.andWhere('recruitment.email LIKE :email', { email: `%${email}%` }); + } + + // 根据电话过滤 + if (phone) { + queryBuilder.andWhere('recruitment.phone LIKE :phone', { phone: `%${phone}%` }); + } + // 根据时间范围过滤 if (startTime && endTime) { queryBuilder.andWhere(