# 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 图工具生成图形化数据模型图,并补充业务流程说明。