diff --git a/src/usercenter/dto/create-usercenter.dto.ts b/src/usercenter/dto/create-usercenter.dto.ts index 22977e7..a0c835c 100644 --- a/src/usercenter/dto/create-usercenter.dto.ts +++ b/src/usercenter/dto/create-usercenter.dto.ts @@ -1,4 +1,4 @@ -import { IsEmail, IsString, Length, Matches } from 'class-validator'; +import { IsEmail, IsString, Length, Matches, IsOptional, IsInt, Min, Max } from 'class-validator'; export class CreateUsercenterDto { @IsString() @@ -18,4 +18,10 @@ export class CreateUsercenterDto { @IsEmail({}, { message: '无效的邮箱格式' }) userEmail: string; // 用户邮箱 + + @IsOptional() + @IsInt({ message: '性别必须是整数' }) + @Min(0, { message: '性别值必须大于等于0' }) + @Max(2, { message: '性别值必须小于等于2' }) + sex?: number; // 性别,0未知,1男,2女 } diff --git a/src/usercenter/dto/query-usercenter.dto.ts b/src/usercenter/dto/query-usercenter.dto.ts index 5c1acc4..a5eea7b 100644 --- a/src/usercenter/dto/query-usercenter.dto.ts +++ b/src/usercenter/dto/query-usercenter.dto.ts @@ -39,4 +39,15 @@ export class QueryUsercenterDto { @Min(1, { message: '用户角色最小值为1' }) @Max(2, { message: '用户角色最大值为2' }) role?: number; + + /** + * 性别 + * 0: 未知, 1: 男, 2: 女 + */ + @IsOptional() + @Type(() => Number) + @IsInt({ message: '性别必须是整数' }) + @Min(0, { message: '性别值最小为0' }) + @Max(2, { message: '性别值最大为2' }) + sex?: number; } diff --git a/src/usercenter/entities/usercenter.entity.ts b/src/usercenter/entities/usercenter.entity.ts index 22f3bda..d8499db 100644 --- a/src/usercenter/entities/usercenter.entity.ts +++ b/src/usercenter/entities/usercenter.entity.ts @@ -109,6 +109,14 @@ export class UserEntity { }) userName: string; // 用户名 + @Column({ + type: 'int', + name: 'sex', + nullable: false, + default: 0, // 默认0未知,1男,2女 + }) + sex: number; // 性别 + @Column({ type: 'varchar', length: 30, diff --git a/src/usercenter/usercenter.service.ts b/src/usercenter/usercenter.service.ts index e93c1c9..c1b1313 100644 --- a/src/usercenter/usercenter.service.ts +++ b/src/usercenter/usercenter.service.ts @@ -46,6 +46,7 @@ export class UsercenterService { ...userData, userAuth: 1, // 默认为普通用户 userStatus: 1, // 默认为正常状态 + sex: userData.sex || 0, // 默认为0(未知) createTime: new Date(), updateTime: new Date(), createBy: createUsercenterDto.userName, // 创建人为用户自己 @@ -83,8 +84,8 @@ export class UsercenterService { * @param query 查询参数,包含页码、每页条数和角色 * @returns 返回用户列表和总数 */ - async findUsersByRole(query: { page: number; limit: number; role?: number }) { - const { page, limit, role } = query; + async findUsersByRole(query: { page: number; limit: number; role?: number; sex?: number }) { + const { page, limit, role, sex } = query; const skip = (page - 1) * limit; // 计算跳过的记录数 // 创建查询构建器 @@ -95,6 +96,11 @@ export class UsercenterService { queryBuilder.andWhere('user.userAuth = :role', { role }); } + // 如果指定了性别,添加性别筛选条件 + if (sex !== undefined) { + queryBuilder.andWhere('user.sex = :sex', { sex }); + } + // 执行查询并获取结果 const [data, total] = await queryBuilder .orderBy('user.createTime', 'DESC')