# 数据模型文档 ## 概述 本文档描述了 188-179 招聘系统的数据模型设计。系统采用 TypeORM 作为 ORM,PostgreSQL 作为数据库。 ## 核心实体 ### 用户与认证 #### User (用户表) ```typescript { id: number // 主键 username: string // 用户名(唯一) email: string | null // 邮箱 password: string // 加密密码 roles: Role[] // 用户角色(多对多) createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` #### Role (角色表) ```typescript { id: number // 主键 name: string // 角色名称(唯一) permissions: string[] // 权限列表 users: User[] // 用户列表(多对多) createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` ### 文件管理 #### File (文件表) ```typescript { id: number // 主键 name: string // 文件名 path: string // MinIO存储路径 size: number // 文件大小(字节) type: string // 文件类型 uploadUserId: number // 上传用户ID uploadUser: User // 上传用户(多对一) uploadTime: Date // 上传时间 lastUpdated: Date // 最后更新时间 } ``` ## 业务模块实体 ### 订单管理 #### Order (订单表) ```typescript { id: number // 主键 orderNo: string // 订单号(唯一) orderType: string // 订单类型 status: number // 状态:1-正常,0-禁用 amount: number // 订单金额 createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` ### 企业管理 #### Company (公司表) ```typescript { id: number // 主键 companyName: string // 公司名称 companyId: string // 企业ID(唯一) status: number // 状态:1-正常,0-禁用 createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` #### Platform (平台表) ```typescript { id: number // 主键 platformName: string // 平台名称 companyId: number // 所属公司 company: Company // 公司关联(多对一) status: number // 状态:1-正常,0-禁用 createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` ### 渠道管理 #### Channel (渠道表) ```typescript { id: number // 主键 channelName: string // 渠道名称(唯一) channelType: string // 渠道类型 contactPerson: string // 联系人 contactPhone: string // 联系电话 status: number // 状态:1-正常,0-禁用 createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` ### 残疾人员管理 #### DisabledPerson (残疾人员表) ```typescript { id: number // 主键 name: string // 姓名 idCard: string // 身份证号 disabilityType: string // 残疾类型 disabilityLevel: string // 残疾等级 disabilityCardNo: string // 残疾证号 phone: string // 联系电话 address: string // 地址 avatarFileId: number // 头像文件ID avatarFile: File // 头像文件(多对一) status: number // 状态:1-正常,0-禁用 createTime: Date // 创建时间 updateTime: Date // 更新时间 } ``` ## 数据库设计规范 ### 命名规范 | 类型 | 规范 | 示例 | |------|------|------| | 表名 | 小写下划线 | `user_info`, `order_detail` | | 字段名 | 小写下划线 | `user_name`, `create_time` | | 主键 | `id` 或 `{table}_id` | `id`, `user_id` | | 外键 | `{referenced_table}_id` | `user_id`, `order_id` | | 索引 | `idx_{column}_{purpose}` | `idx_user_name`, `idx_order_status` | | 唯一索引 | `unique_{column}` | `unique_username` | ### 字段类型规范 | 数据类型 | PostgreSQL类型 | TypeORM类型 | 用途 | |----------|----------------|-------------|------| | 主键 | `int unsigned` | `int` | 自增主键 | | 字符串(短) | `varchar(n)` | `varchar` | 用户名、名称等 | | 字符串(长) | `text` | `text` | 描述、内容等 | | 金额 | `decimal(10,2)` | `decimal` | 订单金额等 | | 时间戳 | `timestamp` | `timestamp` | 创建时间、更新时间 | | 状态 | `int` | `int` | 状态枚举 | | 布尔 | `boolean` | `boolean` | 开关状态 | ### 时间戳字段 所有表都应包含时间戳字段: ```typescript @Column({ name: 'create_time', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', comment: '创建时间' }) createTime!: Date; @Column({ name: 'update_time', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP', comment: '更新时间' }) updateTime!: Date; ``` ### 软删除字段 使用 `status` 字段实现软删除: ```typescript @Column({ name: 'status', type: 'int', default: 1, comment: '状态:1-正常,0-禁用' }) status!: number; ``` ## 关联关系 ### 一对多 (OneToMany) ```typescript // Company 拥有多个 Platform @OneToMany(() => Platform, platform => platform.company) platforms!: Platform[]; ``` ### 多对一 (ManyToOne) ```typescript // Platform 属于一个 Company @ManyToOne(() => Company, { eager: false }) @JoinColumn({ name: 'company_id', referencedColumnName: 'id' }) company!: Company; ``` ### 多对多 (ManyToMany) ```typescript // User 拥有多个 Role @ManyToMany(() => Role, role => role.users) @JoinTable({ name: 'user_roles', joinColumn: { name: 'user_id', referencedColumnName: 'id' }, inverseJoinColumn: { name: 'role_id', referencedColumnName: 'id' } }) roles!: Role[]; ``` ## 迁移策略 ### 创建迁移 ```bash cd packages/core-module pnpm typeorm migration:generate -d src/data-source.ts src/migrations/MigrationName ``` ### 运行迁移 ```bash pnpm db:migrate ``` ### 回滚迁移 ```bash pnpm db:migrate:revert ``` ## 相关文档 - [后端模块开发规范](../standards/backend-module-standards.md) - [API设计](./api-design.md) --- **文档版本**: 1.0 **最后更新**: 2026-01-07