2
0
Files
build.wfc/docs/99-reference/db.md
2025-02-26 11:10:52 +08:00

396 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WANFi Control and Billing System 数据库设计文档
## 1. 概述
本数据库设计文档描述了 WANFi Control and Billing System 的数据库结构。系统采用 MySQL 数据库,字符集为 utf8mb4主要涉及系统配置、部门、设备、数据字典、定时任务、日志、菜单、角色以及用户管理等模块。
## 2. 数据库架构
- **数据库名称**`wfc_system_db`
- **字符集**utf8mb4
- **校对规则**utf8mb4_general_ci
---
## 3. 表结构及说明
### 3.1 参数配置表 - `sys_config`
用于存储全局系统配置参数。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-----------------|------------------------------------------|
| config_id | int(11) | PRIMARY KEY<br/>AUTO_INCREMENT | 参数主键 |
| config_name | varchar(100) | DEFAULT '' | 参数名称 |
| config_key | varchar(100) | DEFAULT '' | 参数键名 |
| config_value | varchar(500) | DEFAULT '' | 参数键值 |
| config_type | char(1) | DEFAULT 'N' | 系统内置标识Y表示内置, N表示非内置 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | NULLABLE | 备注 |
记录示例:初始化账号密码、开启用户注册功能、设置登录 IP 黑名单等。
---
### 3.2 部门表 - `sys_dept`
存储各部门信息,支持层级结构。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|--------------------------------|
| dept_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 部门 ID |
| parent_id | bigint(20) | DEFAULT 0 | 父部门 ID |
| ancestors | varchar(50) | DEFAULT '' | 祖级列表 |
| dept_name | varchar(30) | DEFAULT '' | 部门名称 |
| order_num | int(11) | DEFAULT 0 | 显示顺序 |
| leader | varchar(20) | 可空 | 负责人 |
| phone | varchar(11) | 可空 | 联系电话 |
| email | varchar(50) | 可空 | 邮箱 |
| status | char(1) | DEFAULT '0' | 部门状态0正常、1停用 |
| del_flag | char(1) | DEFAULT '0' | 删除标志0存在2删除 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | NULLABLE | 备注 |
插入示例中创建了 ROOT 及其子部门。
---
### 3.3 设备表 - `sys_device`
存储客户平台中设备的各项信息。
| 列名 | 数据类型 | 约束 & 默认值 | 说明 |
|------------------|---------------|-----------------------|--------------------------|
| id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT | 主键 |
| site_id | varchar(64) | NULLABLE | 站点 ID |
| mac | varchar(64) | NULLABLE | MAC 地址 |
| name | varchar(64) | NULLABLE | 设备名称 |
| type | varchar(32) | NULLABLE | 类型 |
| subtype | varchar(32) | NULLABLE | 子类型 |
| device_series_type | varchar(32) | NULLABLE | 产品系列类型 |
| model | varchar(64) | NULLABLE | 设备型号 |
| ip | varchar(64) | NULLABLE | IP 地址 |
| ipv6s | varchar(255) | NULLABLE | IPv6 地址(可能多个) |
| uptime | varchar(64) | NULLABLE | 在线时长 |
| status | int(11) | NULLABLE | 状态 |
| last_seen | bigint(20) | NULLABLE | 最后在线时间 |
| cpu_util | int(11) | NULLABLE | CPU 利用率 |
| mem_util | int(11) | NULLABLE | 内存利用率 |
| sn | varchar(64) | NULLABLE | 序列号 |
| license_status | int(11) | NULLABLE | 授权状态 |
| ... | ... | ... | 其它详细字段 |
表中记录了设备相关信息及状态等。
---
### 3.4 字典数据表 - `sys_dict_data`
存储系统使用的字典数据,包含常用的选项列表。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|-----------------------------|
| dict_code | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 字典编码 |
| dict_sort | int(11) | DEFAULT 0 | 字典排序 |
| dict_label | varchar(100) | DEFAULT '' | 字典标签 |
| dict_value | varchar(100) | DEFAULT '' | 字典键值 |
| dict_type | varchar(100) | DEFAULT '' | 字典类型 |
| css_class | varchar(100) | 可为空 | 样式属性(扩展) |
| list_class | varchar(100) | 可为空 | 列表显示样式 |
| is_default | char(1) | DEFAULT 'Y' | 是否默认Y/N |
| status | char(1) | DEFAULT '0' | 状态0正常 1停用 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | 可空 | 备注 |
示例记录包括用户性别、菜单显示与隐藏、系统开关、操作类型等配置项。
---
### 3.5 字典类型表 - `sys_dict_type`
存放字典分组及类型定义。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|-------------------------------|
| dict_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 字典主键 |
| dict_name | varchar(100) | DEFAULT '' | 字典名称 |
| dict_type | varchar(100) | DEFAULT ''<br/>UNIQUE | 字典类型标识 |
| status | char(1) | DEFAULT '0' | 状态0正常 1停用 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | 可空 | 备注 |
示例记录包括“User Gender”、“Menu Status”、 “System Switch”等类型。
---
### 3.6 定时任务相关
#### 3.6.1 定时任务表 - `sys_job`
存储各定时任务的配置信息。
| 列名 | 数据类型 | 约束 | 说明 |
|------------------|----------------|-------------------------------|--------------------------------------------|
| job_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 任务ID |
| job_name | varchar(64) | NOT NULL, DEFAULT '' | 任务名称 |
| job_group | varchar(64) | NOT NULL, DEFAULT 'DEFAULT' | 任务组名称 |
| invoke_target | varchar(500) | NOT NULL | 调用目标字符串 |
| cron_expression | varchar(255) | DEFAULT '' | CRON 表达式 |
| misfire_policy | varchar(20) | DEFAULT '3' | 错误处理策略1立即执行 2执行一次 3放弃执行 |
| concurrent | char(1) | DEFAULT '1' | 是否并发执行0允许、1禁止 |
| status | char(1) | DEFAULT '0' | 任务状态0正常 1暂停 |
| ... | ... | ... | 其它字段,如创建与更新时间等 |
记录示例包括 Omada 同步任务及初始化任务。
#### 3.6.2 定时任务日志表 - `sys_job_log`
记录任务执行的日志信息。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|----------------|-------------------------------|-------------------------|
| job_log_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 任务日志ID |
| job_name | varchar(64) | NOT NULL | 任务名称 |
| job_group | varchar(64) | NOT NULL | 任务组名称 |
| invoke_target| varchar(500) | NOT NULL | 调用目标字符串 |
| job_message | varchar(500) | 可空 | 日志信息 |
| status | char(1) | DEFAULT '0' | 执行状态0成功、1失败 |
| exception_info | varchar(2000)| DEFAULT '' | 异常信息 |
| create_time | datetime | NULLABLE | 执行时间 |
---
### 3.7 系统访问记录 - `sys_logininfor`
记录系统用户的登录访问情况。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|--------------------------------|
| info_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 访问记录主键 |
| user_name | varchar(50) | DEFAULT '' | 用户账号 |
| ipaddr | varchar(128) | DEFAULT '' | 登录 IP 地址 |
| status | char(1) | DEFAULT '0' | 登录状态0成功1失败 |
| msg | varchar(255) | DEFAULT '' | 提示信息 |
| access_time | datetime | NULLABLE | 访问时间 |
辅助索引包括 status 及 access_time。
---
### 3.8 菜单权限表 - `sys_menu`
存储系统菜单信息以及相应的访问权限标识。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|-------------------------------------------------------------|
| menu_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 菜单 ID |
| menu_name | varchar(50) | NOT NULL | 菜单名称,如 'menu.system.management' |
| parent_id | bigint(20) | DEFAULT 0 | 父级菜单 ID |
| order_num | int(11) | DEFAULT 0 | 显示顺序 |
| path | varchar(200) | DEFAULT '' | 路由地址 |
| component | varchar(255) | DEFAULT NULL | 组件路径 |
| menu_type | char(1) | | 类型M:目录, C:菜单, F:按钮) |
| visible | char(1) | DEFAULT '0' | 菜单显示状态0显示1隐藏 |
| status | char(1) | DEFAULT '0' | 菜单状态0正常1停用 |
| perms | varchar(100) | DEFAULT NULL | 权限标识 |
| icon | varchar(100) | DEFAULT '#' | 菜单图标 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | DEFAULT '' | 备注 |
| name | varchar(30) | DEFAULT NULL | 菜单 key作为前端标识使用 |
记录插入部分展示了系统管理、工具、账户管理、角色管理、菜单管理、部门管理、岗位管理、字典管理以及多项操作权限的菜单。
---
### 3.9 操作日志记录 - `sys_oper_log`
记录用户在系统中的各项操作,用于安全审计。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|----------------------------------------------------|
| oper_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 日志主键 |
| title | varchar(50) | DEFAULT '' | 模块标题 |
| business_type| int(11) | DEFAULT 0 | 业务类型0其它、1新增、2修改、3删除 |
| method | varchar(100) | DEFAULT '' | 方法名称 |
| request_method | varchar(10) | DEFAULT '' | 请求方式 |
| oper_name | varchar(50) | DEFAULT '' | 操作人员 |
| dept_name | varchar(50) | DEFAULT '' | 部门名称 |
| oper_url | varchar(255) | DEFAULT '' | 请求 URL |
| oper_ip | varchar(128) | DEFAULT '' | IP 地址 |
| oper_location| varchar(255) | DEFAULT '' | 操作地点 |
| oper_param | varchar(2000) | DEFAULT '' | 请求参数 |
| json_result | varchar(2000) | DEFAULT '' | 返回结果 |
| status | int(11) | DEFAULT 0 | 操作状态0正常、1异常 |
| error_msg | varchar(2000) | DEFAULT '' | 错误消息 |
| oper_time | datetime | NULLABLE | 操作时间 |
| cost_time | bigint(20) | DEFAULT 0 | 消耗时间(毫秒) |
附带建立了 business_type、status 及 oper_time 的索引。
---
### 3.10 岗位信息表 - `sys_post`
记录系统中定义的岗位信息。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|---------------------------|
| post_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 岗位 ID |
| post_code | varchar(64) | NOT NULL | 岗位编码 |
| post_name | varchar(50) | NOT NULL | 岗位名称 |
| post_sort | int(11) | NOT NULL | 显示顺序 |
| status | char(1) | NOT NULL | 状态0正常、1停用 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | DEFAULT NULL | 备注 |
示例记录定义了 administrator、manager、hr 及 user 岗位。
---
### 3.11 用户信息表 - `sys_user`
存储用户账号及相关信息,实现系统登录和管理。
| 列名 | 数据类型 | 约束 | 说明 |
|--------------|---------------|-------------------------------|----------------------------------------|
| user_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 用户 ID |
| dept_id | bigint(20) | NULLABLE | 所属部门 ID |
| user_name | varchar(30) | NOT NULL | 用户账号 |
| nick_name | varchar(30) | NOT NULL | 用户昵称 |
| user_type | varchar(2) | DEFAULT '00' | 用户类型例如00系统用户 |
| email | varchar(50) | DEFAULT '' | 用户邮箱 |
| phonenumber | varchar(11) | DEFAULT '' | 手机号码 |
| sex | char(1) | DEFAULT '0' | 性别0男、1女、2未知 |
| avatar | varchar(100) | DEFAULT '' | 头像地址 |
| password | varchar(100) | DEFAULT '' | 密码(通常加密存储,如 bcrypt 结果) |
| status | char(1) | DEFAULT '0' | 帐号状态0正常、1停用 |
| del_flag | char(1) | DEFAULT '0' | 删除标志0存在、2删除 |
| login_ip | varchar(128) | DEFAULT '' | 最后登录IP |
| login_date | datetime | NULLABLE | 最后登录时间 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | DEFAULT NULL | 备注 |
系统默认记录了超级管理员super、管理员admin等用户信息。
---
### 3.12 用户与岗位关联表 - `sys_user_post`
用于关联用户与其所属岗位。
| 列名 | 数据类型 | 约束 | 说明 |
|----------|------------|-------------------------------|-------------------------|
| user_id | bigint(20) | PRIMARY KEY (联合主键) | 用户 ID |
| post_id | bigint(20) | PRIMARY KEY (联合主键) | 岗位 ID |
---
### 3.13 用户与角色关联表 - `sys_user_role`
用于关联用户与分配的角色,实现权限管理。
| 列名 | 数据类型 | 约束 | 说明 |
|----------|------------|-------------------------------|-------------------------|
| user_id | bigint(20) | PRIMARY KEY (联合主键) | 用户 ID |
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
插入示例中,用户 1 分配了角色 1Supervisor用户 2 分配了角色 2Administrator
---
### 3.14 角色信息表 - `sys_role`
定义系统内各角色及其基本属性。
| 列名 | 数据类型 | 约束 | 说明 |
|-------------|---------------|-------------------------------|--------------------------------------|
| role_id | bigint(20) | PRIMARY KEY<br/>AUTO_INCREMENT| 角色 ID |
| role_name | varchar(30) | NOT NULL | 角色名称 |
| role_key | varchar(100) | NOT NULL | 角色权限字符串(作为 RBAC 标识) |
| role_sort | int(11) | 可空 | 显示顺序 |
| data_scope | char(1) | DEFAULT '1' | 数据权限范围(例如全部、自定、部门等) |
| menu_check_strictly | tinyint(1)| DEFAULT 1 | 菜单树选择时是否关联显示 |
| dept_check_strictly | tinyint(1)| DEFAULT 1 | 部门树选择时是否关联显示 |
| status | char(1) | NOT NULL | 角色状态0正常、1停用 |
| del_flag | char(1) | DEFAULT '0' | 删除标志0存在、2删除 |
| create_by | varchar(64) | DEFAULT '' | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | DEFAULT '' | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | NULLABLE | 备注 |
示例中定义了 Supervisor、Administrator 及 User 角色。
---
### 3.15 角色与部门关联表 - `sys_role_dept`
用于关联角色和部门,控制数据权限。
| 列名 | 数据类型 | 约束 | 说明 |
|----------|------------|-------------------------------|-------------------------|
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
| dept_id | bigint(20) | PRIMARY KEY (联合主键) | 部门 ID |
---
### 3.16 角色与菜单关联表 - `sys_role_menu`
用于关联角色与菜单,实现系统权限的控制。
| 列名 | 数据类型 | 约束 | 说明 |
|----------|------------|-------------------------------|-------------------------|
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
| menu_id | bigint(20) | PRIMARY KEY (联合主键) | 菜单 ID |
示例中,角色 2Administrator关联了大量菜单权限。
---
## 4. 关系与数据流
- **用户-角色**:通过 `sys_user_role` 表实现,一个用户可以拥有多个角色。
- **角色-菜单**:通过 `sys_role_menu` 表关联角色与菜单,实现权限分配。
- **用户-岗位**:通过 `sys_user_post` 实现,方便对岗位信息管理。
- **角色-部门**:通过 `sys_role_dept` 表实现角色对部门数据的访问控制。
- **数据字典**`sys_dict_type` 定义字典类型,`sys_dict_data` 存储各字典项,系统中各模块均可引用以保证数据一致性。
---
## 5. 索引及性能优化
各表的主键和部分常用查询字段(如 `status``access_time``user_name` 等)均建立索引,确保数据查询速度满足系统需求。
---
## 6. 其他说明
- 表中的日期时间字段(如 `create_time``update_time` 等)建议统一使用 UTC+0 或转换为本地时区。
- 部分字段如密码应进行加密存储。
- 删除标志和状态字段为业务逻辑提供支持,后续可以根据需要进行索引和分区优化。
---
以上文档基于 SQL 脚本提取,适用于当前项目数据库设计说明。你可以进一步利用 ER 图工具生成图形化数据模型图,并补充业务流程说明。