# 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
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
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
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
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
AUTO_INCREMENT| 字典主键 |
| dict_name | varchar(100) | DEFAULT '' | 字典名称 |
| dict_type | varchar(100) | DEFAULT ''
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
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
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
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
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
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
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
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 分配了角色 1(Supervisor),用户 2 分配了角色 2(Administrator)。
---
### 3.14 角色信息表 - `sys_role`
定义系统内各角色及其基本属性。
| 列名 | 数据类型 | 约束 | 说明 |
|-------------|---------------|-------------------------------|--------------------------------------|
| role_id | bigint(20) | PRIMARY KEY
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 |
示例中,角色 2(Administrator)关联了大量菜单权限。
---
## 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 图工具生成图形化数据模型图,并补充业务流程说明。