2
0

Deliverable for WANFi

This commit is contained in:
zhangsz
2025-02-26 11:10:52 +08:00
parent 69d4a61177
commit 780a39ad43
24 changed files with 1787 additions and 73 deletions

View File

@@ -27,7 +27,7 @@ latest_deb_file=$(ls -t ${local_debs_rel_dir}/*${rel_date}* 2>/dev/null | head -
# Use expect to automatically answer yes and input password for SCP commands # Use expect to automatically answer yes and input password for SCP commands
expect <<EOF expect <<EOF
set timeout 120 set timeout 180
EOF EOF
if [ -n "${latest_deb_file}" ]; then if [ -n "${latest_deb_file}" ]; then

View File

@@ -0,0 +1,995 @@
**修订记录**
| 修订日期 | 版本号 | 修订内容 | 修订人 | 备注 |
| ---------- | ------ | --------------------------- | ------------------ | ---- |
| 2024/11/13 | V1.0 | 初稿 | 张树忠/李昌/蔡育超 | |
| 2024/11/13 | V1.1 | 完善架构设计和描述 | 张树忠 | |
| 2024/11/30 | V1.2 | 增加计费和套餐设计 | 张树忠 | |
| 2025/02/17 | V1.3 | 架构修改,去掉多余微服务 | 张树忠 | |
| 2025/02/24 | V1.4 | 增加数据库表设计,业务流程图 | 张树忠 | |
---
# **WANFi软件系统设计文档**
# 1. 需求分析
WANFi控制平台用于提供给运营商用于AP设备的管理监控并对终端用户进行管理和计费管理。具体的业务需求概括如下
## 1.1. 使用对象定义
> a) "客户"指购买AP设备的B端公司或组织包含有多个管理和运维人员
>
> b) "用户"指使用改B端提供的的WiFi服务的C端用户一个用户只有一个账号一个账号可以使用多个终端设备
## 1.2. 平台需求定义
> a) 客户平台为B端客户提供的控制和费用管理界面用于AP的远程管理配置运行检测根据API 文档逐一实现 Omada平台上的功能管理用户数据、设备信息和计费信息
> b) 用户平台为C端客户提供的个人信息管理用于C端用户缴费以及个人信息管理终端设备管理
> c) 客户平台包含用户平台的信息,但用户平台无法获取客户平台信息
## 1.3. 商业模式定义
> a. 客户服务用户(比如运营商):包含完整的客户平台和用户平台功能
> b. 客户服务设备(比如农场采购,直接用于农场智能设备,没有用户参与):只需要开发客户平台,以及客户平台中的设备信息管理,无需用户信息管理以及缴费系统
> c. 二者在开发系统上和数据库结构上尽可能兼容,保证一套系统可以为二者服务
> d. 费用以设备为维度进行管理,即通过数据库管理每一个设备的流量,使用时长等该需求是指一个用户/账号下的多个设备可以单独计费??
> e. 费用以用户为维度进行收费,每个用户会收到一个账单,包含账户下设备数量,使用流量,使用时长等
![客户平台和用户平台数据库关系图](image/admin-user-portal.png)
# 2. 系统架构设计
![](image/WANFi-Architecture.png)
## 2.1. 架构说明
> a) 微服务架构
> b) B/S模式
> c) 支持本地和云部署
## 2.2. 开发运行环境和技术栈
> a) 操作系统:
Ubuntu 22.04
> b) 数据库:
MySQL 5.7
Redis 7.4.2
MongoDB 7.0.15 用于Omada SDN Controller
ElasticsSearch 7.1 用于大数据文本的查询 (暂未使用)
> c) 后端开发语言:
Java 1.8
SprintgBoot 2.7
SpringCloud 2021.0.8
SpringCloudAlibaba 2021.0.5.0
> d) 前端开发语言:
HTML+CSS,
Vue.js 3.4.27
AntD 4.2.2
# 3. 业务流程
## 3.1. 用户登录注册
* 用户注册,需填写个人信息,邮箱,手机号,实名认证等
* 用户连接WANFi时通过网页进行登录
* 登陆后后端API获取当前连接设备的MAC地址如果该设备未被绑定到数据库中则由后端API将当前设备绑定到数据库中
![](image/user-login-register-1.png)
## 3.2. 终端设备访问控制
* 终端设备连接AP热点门户拦截
* 用户登录判断是否充值有效套餐或者余额是否为0
* 如果存在套餐流量不为0或者余额部位0则授权终端设备Internet连接准入
* 用户平台定时监测终端设备上网流量并实时计算套餐流量或余额
* 如果套餐流量为0且余额为0则去授权终端设备Internet接入权限
![](image/client-auth-p1.png)
# 4. 数据库设计
## 4.1. 客户数据库表设计
系统采用 MySQL 数据库,字符集为 utf8mb4主要涉及系统配置、部门、设备、数据字典、定时任务、日志、菜单、角色以及用户管理等模块。
### 4.1.1. 数据库架构
- **数据库名称**`wfc_system_db`
- **字符集**utf8mb4
- **校对规则**utf8mb4_general_ci
### 4.1.2. 客户平台表总览
| 表名 | 主键 | 备注说明 | 说明 |
| -------------- | ---------------- | ------------------ | ------------------------ |
| sys_config | config_id | 参数配置表 | 存储系统参数配置信息 |
| sys_dept | dept_id | 部门表 | 存储部门信息 |
| sys_device | id | 客户平台-设备表 | 存储设备信息 |
| sys_dict_data | dict_code | 字典数据表 | 存储字典数据 |
| sys_dict_type | dict_id | 字典类型表 | 存储字典类型 |
| sys_job | job_id | 定时任务调度表 | 存储定时任务调度信息 |
| sys_job_log | job_log_id | 定时任务调度日志表 | 存储定时任务调度日志信息 |
| sys_logininfor | info_id | 系统访问记录 | 存储系统访问记录 |
| sys_menu | menu_id | 菜单权限表 | 存储菜单权限信息 |
| sys_oper_log | oper_id | 操作日志记录 | 存储操作日志记录 |
| sys_post | post_id | 岗位信息表 | 存储岗位信息 |
| sys_role | role_id | 角色信息表 | 存储角色信息 |
| sys_role_dept | role_id, dept_id | 角色和部门关联表 | 存储角色和部门的关联信息 |
| sys_role_menu | role_id, menu_id | 角色和菜单关联表 | 存储角色和菜单的关联信息 |
| sys_user | user_id | 用户信息表 | 存储用户信息 |
| sys_user_post | user_id, post_id | 用户与岗位关联表 | 存储用户与岗位的关联信息 |
| sys_user_role | user_id, role_id | 用户和角色关联表 | 存储用户和角色的关联信息 |
---
### 4.1.3 表结构设计
#### 参数配置表 - 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 | 备注 |
---
#### 部门表 - 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) | NULLABLE | 负责人 |
| phone | varchar(11) | NULLABLE | 联系电话 |
| email | varchar(50) | NULLABLE | 邮箱 |
| 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 | 备注 |
---
#### 系统设备表 - 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 | 授权状态 |
| tag_name | varchar(64) | NULLABLE | Tag Name |
| uplink_device_mac | varchar(64) | NULLABLE | Uplink Device Mac |
| uplink_device_name | varchar(64) | NULLABLE | Uplink Device Name |
| uplink_device_port | varchar(64) | NULLABLE | Uplink Device Port |
| link_speed | int(11) | NULLABLE | Link Speed |
| duplex | int(11) | NULLABLE | Duplex |
| switch_consistent | tinyint(1) | NULLABLE | Switch Consistent |
| public_ip | varchar(64) | NULLABLE | Public IP |
| firmware_version | varchar(64) | NULLABLE | Firmware Version |
| del_flag | tinyint(1) | NULLABLE | 删除标志0存在 1删除 |
| create_by | bigint(20) | NULLABLE | 创建人 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | bigint(20) | NULLABLE | 更新人 |
| update_time | datetime | NULLABLE | 更新时间 |
#### 字典相关
##### 字典数据表 - 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) | NULLABLE | 样式属性(扩展) |
| list_class | varchar(100) | NULLABLE | 列表显示样式 |
| 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) | NULLABLE | 备注 |
---
##### 字典类型表 - 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) | NULLABLE | 备注 |
---
#### 定时任务相关
##### 定时任务表 - 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暂停 |
| create_by | varchar(64) | NULLABLE | 创建者 |
| create_time | datetime | NULLABLE | 创建时间 |
| update_by | varchar(64) | NULLABLE | 更新者 |
| update_time | datetime | NULLABLE | 更新时间 |
| remark | varchar(500) | NULLABLE | 备注信息 |
记录示例包括 Omada 同步任务及初始化任务。
##### 定时任务日志表 - 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 | 执行时间 |
---
#### 系统访问记录 - 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。
---
#### 菜单权限表 - 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作为前端标识使用 |
记录插入部分展示了系统管理、工具、账户管理、角色管理、菜单管理、部门管理、岗位管理、字典管理以及多项操作权限的菜单。
---
#### 操作日志记录 - 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 的索引。
---
#### 岗位信息表 - 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 岗位。
---
#### 用户信息表 - 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等用户信息。
---
#### 用户与岗位关联表 - sys_user_post
用于关联用户与其所属岗位。
| 列名 | 数据类型 | 约束 | 说明 |
| ------- | ---------- | ---------------------- | ------- |
| user_id | bigint(20) | PRIMARY KEY (联合主键) | 用户 ID |
| post_id | bigint(20) | PRIMARY KEY (联合主键) | 岗位 ID |
---
#### 用户与角色关联表 - sys_user_role
用于关联用户与分配的角色,实现权限管理。
| 列名 | 数据类型 | 约束 | 说明 |
| ------- | ---------- | ---------------------- | ------- |
| user_id | bigint(20) | PRIMARY KEY (联合主键) | 用户 ID |
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
插入示例中,用户 1 分配了角色 1Supervisor用户 2 分配了角色 2Administrator
---
#### 角色信息表 - 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 角色。
---
#### 角色与部门关联表 - sys_role_dept
用于关联角色和部门,控制数据权限。
| 列名 | 数据类型 | 约束 | 说明 |
| ------- | ---------- | ---------------------- | ------- |
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
| dept_id | bigint(20) | PRIMARY KEY (联合主键) | 部门 ID |
---
#### 角色与菜单关联表 - `sys_role_menu`
用于关联角色与菜单,实现系统权限的控制。
| 列名 | 数据类型 | 约束 | 说明 |
| ------- | ---------- | ---------------------- | ------- |
| role_id | bigint(20) | PRIMARY KEY (联合主键) | 角色 ID |
| menu_id | bigint(20) | PRIMARY KEY (联合主键) | 菜单 ID |
### 4.1.4. 关系与数据流
- **用户-角色**:通过 `sys_user_role` 表实现,一个用户可以拥有多个角色。
- **角色-菜单**:通过 `sys_role_menu` 表关联角色与菜单,实现权限分配。
- **用户-岗位**:通过 `sys_user_post` 实现,方便对岗位信息管理。
- **角色-部门**:通过 `sys_role_dept` 表实现角色对部门数据的访问控制。
- **数据字典**`sys_dict_type` 定义字典类型,`sys_dict_data` 存储各字典项,系统中各模块均可引用以保证数据一致性。
## 4.2. 用户平台数据库表设计
### 4.2.1. 数据库架构
- **数据库名称**`wfc_user_db`
- **字符集**utf8mb4
- **校对规则**utf8mb4_general_ci
### 4.2.2. 用户平台表总览
---
| 表名 | 主键 | 备注说明 | 说明 |
| ----------------- | ----------- | ------------------- | ------------------------------------------------------- |
| u_account | id | 用户平台-账户表 | 存储用户账户信息(余额、套餐、流量、时长等) |
| u_account_package | id | 用户平台-账户套餐表 | 存储账户对应的套餐信息,如套餐流量、时长、有效期等 |
| u_bill | id | 用户平台-账单表 | 存储账单记录,包括金额、状态、支付信息等 |
| u_bill_rule | id | 用户平台-计费规则表 | 存储计费规则,包括价格、流量、单位及状态等 |
| u_cdr | id | 用户平台_用户话单表 | 存储用户话单数据,如流量、速率、数据包信息等 |
| u_cdr_history | id | 用户平台_话单历史表 | 存储详细话单历史记录,包括时长、流量等 |
| u_client | id | 用户平台_用户设备表 | 存储用户设备信息如设备名称、mac 地址、设备类型等 |
| u_device | id | 用户平台_AP设备表 | 存储 AP无线接入点设备信息 |
| u_order | id | 用户平台-订单表 | 存储订单信息,包括订单编号、订单金额及状态等 |
| u_package | id | 用户平台-套餐表 | 存储套餐信息,如套餐价格、流量、时长、设备数等 |
| u_payment | id | 用户平台-支付表 | 存储支付相关信息,包括支付名称、类型、网关、证书等 |
| u_rate_limit | id | 用户平台-带宽限速表 | 存储限速设置,如下行/上行限速及启用状态 |
| u_recharge | recharge_id | 用户平台_用户信息表 | 存储充值信息,关联 u_user 表;外键约束确保用户存在 |
| u_user | user_id | 用户平台_用户信息表 | 存储用户基本信息,包括用户名、昵称、邮件、密码等 |
| u_kyc | kyc_id | 用户平台_用户信息表 | 存储实名认证信息KYC包括真实姓名、证件类型、状态等 |
### 4.2.2. 表结构设计
---
#### 用户账号信息 - u_account
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ----------------- | ------------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| user_id | bigint(20) | YES | NULL | | 用户ID |
| balance | decimal(18,4) | YES | NULL | | 余额 |
| balance_used | decimal(18,4) | YES | NULL | | 余额已使用 |
| package_id | bigint(20) | YES | NULL | | 套餐ID |
| start_time | datetime | YES | NULL | | 开始时间 |
| end_time | datetime | YES | NULL | | 结束时间 |
| traffic | bigint(20) | YES | NULL | | 流量 |
| traffic_used | bigint(20) | YES | NULL | | 流量已使用 |
| duration | bigint(20) | YES | NULL | | 时长 |
| duration_used | bigint(20) | YES | NULL | | 时长已使用 |
| client_num | int(11) | YES | NULL | | 在线设备数 |
| client_num_used | int(11) | YES | NULL | | 在线设备数已使用 |
| expired_time | datetime | YES | NULL | | 失效时间 |
| package_name | varchar(64) | YES | NULL | | 套餐名称 |
| period_num | int(11) | YES | NULL | | 有效期数 |
| period_type | tinyint(4) | YES | NULL | | 有效期类型 |
| price | decimal(18,4) | YES | NULL | | 价格 |
| remark | varchar(500) | YES | NULL | | 备注 |
| rate_limit_enable | tinyint(1) | YES | 0 | | 带宽是否限制 |
| traffic_enable | tinyint(1) | YES | 0 | | 流量是否限制 |
| duration_enable | tinyint(1) | YES | 0 | | 时长是否限制 |
| client_num_enable | tinyint(1) | YES | 0 | | 在线设备数是否限制 |
| rate_limit_name | varchar(32) | YES | NULL | | 限速名称 |
| down_limit | bigint(20) | YES | NULL | | 下行限速 |
| down_limit_enable | tinyint(1) | YES | 0 | | 下行限速启用 |
| up_limit | bigint(20) | YES | NULL | | 上行限速 |
| up_limit_enable | tinyint(1) | YES | 0 | | 上行限速启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 账号与套餐关系表 - u_account_package
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ----------------- | ------------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| account_id | bigint(20) | YES | NULL | | 账户ID |
| package_id | bigint(20) | YES | NULL | | 套餐ID |
| traffic | bigint(20) | YES | NULL | | 流量 |
| duration | bigint(20) | YES | NULL | | 时长 |
| client_num | int(11) | YES | NULL | | 在线设备数 |
| expired_time | datetime | YES | NULL | | 失效时间 |
| package_name | varchar(64) | YES | NULL | | 套餐名称 |
| period_num | int(11) | YES | NULL | | 有效期数 |
| period_type | tinyint(4) | YES | NULL | | 有效期类型 |
| price | decimal(18,4) | YES | NULL | | 价格 |
| remark | varchar(500) | YES | NULL | | 备注 |
| rate_limit_enable | tinyint(1) | YES | 0 | | 带宽是否限制 |
| traffic_enable | tinyint(1) | YES | 0 | | 流量是否限制 |
| duration_enable | tinyint(1) | YES | 0 | | 时长是否限制 |
| client_num_enable | tinyint(1) | YES | 0 | | 在线设备数是否限制 |
| rate_limit_name | varchar(32) | YES | NULL | | 限速名称 |
| down_limit | bigint(20) | YES | NULL | | 下行限速 |
| down_limit_enable | tinyint(1) | YES | 0 | | 下行限速启用 |
| up_limit | bigint(20) | YES | NULL | | 上行限速 |
| up_limit_enable | tinyint(1) | YES | 0 | | 上行限速启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 账单表 - u_bill
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| -------------- | ------------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| user_id | bigint(20) | YES | NULL | | 用户ID |
| cdr_history_id | bigint(20) | YES | NULL | | 话单记录ID |
| type | tinyint(4) | YES | NULL | | 类型 |
| amount | decimal(18,4) | YES | NULL | | 金额 |
| status | tinyint(4) | YES | NULL | | 状态 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 计费规则表 - u_bill_rule
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ----------- | ------------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| price | decimal(18,4) | YES | NULL | | 价格 |
| traffic | bigint(20) | YES | NULL | | 流量 |
| unit | tinyint(4) | YES | NULL | | 单位 |
| enable | tinyint(1) | YES | NULL | | 是否启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 话单表 - u_cdr
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| --------------------- | ----------- | ------------- | ------ | -------------- | --------------------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | CDR ID |
| user_id | bigint(20) | YES | NULL | | User ID link to u_user |
| client_id | bigint(20) | YES | NULL | | Client ID |
| device_id | bigint(20) | YES | NULL | | Device ID |
| ssid | varchar(64) | YES | NULL | | Wireless SSID name |
| rx_rate | bigint(20) | YES | NULL | | rx rate |
| tx_rate | bigint(20) | YES | NULL | | tx rate |
| down_packet | bigint(20) | YES | NULL | | Number of downstream packets |
| up_packet | bigint(20) | YES | NULL | | Number of upstream packets |
| traffic_down | bigint(20) | YES | NULL | | Downstream traffic (Byte) |
| traffic_up | bigint(20) | YES | NULL | | Upstream traffic (Byte) |
| rate_limit_profile_id | varchar(16) | YES | NULL | | Rate limit profile ID |
| up_time | bigint(20) | YES | NULL | | Up time (unit: s) |
| last_seen_time | bigint(20) | YES | NULL | | Last found time, timestamp (ms) |
| activity | bigint(20) | YES | NULL | | Activity download speed (Bytes/s) |
| del_flag | char(1) | YES | '0' | | delete flag |
| create_by | bigint(20) | YES | NULL | | creater |
| create_time | datetime | YES | NULL | | create time |
| update_by | bigint(20) | YES | NULL | | updater |
| update_time | datetime | YES | NULL | | update time |
---
#### 历史话单表 - u_cdr_history
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ------------ | ---------- | ------------- | ------ | -------------- | ------------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | CDR Detail ID |
| cdr_id | bigint(20) | YES | NULL | | CDR ID |
| traffic_down | bigint(20) | YES | NULL | | Downstream traffic (Byte) |
| traffic_up | bigint(20) | YES | NULL | | Upstream traffic (Byte) |
| start_time | bigint(20) | YES | NULL | | Start time |
| end_time | bigint(20) | YES | NULL | | End time |
| duration | bigint(20) | YES | NULL | | Duration(s) |
| del_flag | char(1) | YES | '0' | | delete flag |
| create_by | bigint(20) | YES | NULL | | creater |
| create_time | datetime | YES | NULL | | create time |
| update_by | bigint(20) | YES | NULL | | updater |
| update_time | datetime | YES | NULL | | update time |
---
#### 终端信息表 - u_client
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ------------------ | ----------- | ------------- | ------ | -------------- | ---------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | Client ID |
| user_id | bigint(20) | YES | NULL | | User ID link to u_user |
| site_id | varchar(64) | YES | NULL | | Site ID |
| client_name | varchar(64) | YES | NULL | | Client Name |
| client_device_type | varchar(16) | YES | NULL | | Client device type |
| client_mac | varchar(32) | YES | NULL | | Client mac address |
| del_flag | char(1) | YES | '0' | | delete flag |
| create_by | bigint(20) | YES | NULL | | creater |
| create_time | datetime | YES | NULL | | create time |
| update_by | bigint(20) | YES | NULL | | updater |
| update_time | datetime | YES | NULL | | update time |
---
#### 设备表 - u_device
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ------------ | ----------- | ------------- | ------ | -------------- | ---------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | Device ID |
| user_id | bigint(20) | YES | NULL | | User ID link to u_user |
| device_name | varchar(64) | YES | NULL | | Device Name |
| device_ip | varchar(16) | YES | NULL | | Device ip |
| device_mac | varchar(32) | YES | NULL | | Device mac |
| device_model | varchar(32) | YES | NULL | | Device model |
| del_flag | char(1) | YES | '0' | | delete flag |
| create_by | bigint(20) | YES | NULL | | creater |
| create_time | datetime | YES | NULL | | create time |
| update_by | bigint(20) | YES | NULL | | updater |
| update_time | datetime | YES | NULL | | update time |
---
#### 订单表 - u_order
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ------------ | ------------- | ------------- | ------ | -------------- | --------------------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| user_id | bigint(20) | YES | NULL | | 用户ID |
| package_id | bigint(20) | YES | NULL | | 套餐ID |
| payment_id | bigint(20) | YES | NULL | | 支付ID |
| order_no | varchar(64) | YES | NULL | | 订单编号 |
| type | tinyint(4) | YES | NULL | | 订单类型0套餐 1充值 |
| order_amount | decimal(18,4) | YES | NULL | | 订单金额 |
| status | tinyint(4) | YES | NULL | | 订单状态(0待支付 1已支付 2已取消) |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 套餐表 - u_package
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ----------------- | ------------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| rate_limit_id | bigint(20) | YES | NULL | | 带宽限速ID |
| package_name | varchar(64) | YES | NULL | | 套餐名称 |
| period_num | int(11) | YES | NULL | | 有效期数 |
| period_type | tinyint(4) | YES | NULL | | 有效期类型 |
| price | decimal(18,4) | YES | NULL | | 价格 |
| traffic | bigint(20) | YES | NULL | | 流量 |
| duration | bigint(20) | YES | NULL | | 时长 |
| client_num | int(11) | YES | NULL | | 在线设备数 |
| remark | varchar(500) | YES | NULL | | 备注 |
| rate_limit_enable | tinyint(1) | YES | 0 | | 带宽是否限制 |
| traffic_enable | tinyint(1) | YES | 0 | | 流量是否限制 |
| duration_enable | tinyint(1) | YES | 0 | | 时长是否限制 |
| client_num_enable | tinyint(1) | YES | 0 | | 在线设备数是否限制 |
| package_enable | tinyint(1) | YES | 0 | | 套餐是否启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 支付表 - u_payment
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| -------------- | ------------ | ------------- | ------ | -------------- | ----------------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| name | varchar(32) | YES | NULL | | 支付名称 |
| type | tinyint(4) | YES | NULL | | 类型0支付宝 1微信 2信用卡 |
| appId | varchar(32) | YES | NULL | | 应用编号 |
| server_url | varchar(32) | YES | NULL | | 支付网关 |
| domain | varchar(32) | YES | NULL | | 外网访问项目的域名 |
| private_key | varchar(128) | YES | NULL | | 应用私钥 |
| public_key | varchar(128) | YES | NULL | | 应用公钥 |
| app_cert_path | varchar(64) | YES | NULL | | 应用公钥证书 |
| cert_path | varchar(64) | YES | NULL | | 公钥证书 |
| root_cert_path | varchar(64) | YES | NULL | | 根证书 |
| enable | tinyint(1) | YES | NULL | | 是否启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | NULL | | 创建人 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | bigint(20) | YES | NULL | | 更新人 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
#### 限速表 - u_rate_limit
| 字段名称 | 数据类型 | 是否允许 NULL | 默认值 | 额外属性 | 注释 |
| ----------------- | ----------- | ------------- | ------ | -------------- | ----------------------- |
| id | bigint(20) | NO | | AUTO_INCREMENT | 主键 |
| rate_limit_name | varchar(32) | YES | NULL | | 限速名称 |
| down_limit | bigint(20) | YES | NULL | | 下行限速 |
| down_limit_enable | tinyint(1) | YES | 0 | | 下行限速启用 |
| up_limit | bigint(20) | YES | NULL | | 上行限速 |
| up_limit_enable | tinyint(1) | YES | 0 | | 上行限速启用 |
| del_flag | tinyint(1) | YES | 0 | | 删除标志0存在 1删除 |
| create_by | bigint(20) | YES | | | |
---
#### 充值表 - u_recharge
| 字段名称 | 数据类型 | 允许 NULL | 默认值 | 自增 | 注释 |
| ----------- | --------------------- | --------- | -------- | -------------- | ---------------------- |
| recharge_id | bigint(20) | NO | — | AUTO_INCREMENT | Recharge ID |
| user_id | bigint(20) | YES | NULL | | User ID link to u_user |
| fee | double | YES | NULL | | — |
| status | enum('unpaid','paid') | YES | 'unpaid' | | — |
| create_by | varchar(32) | YES | '' | | create name |
| create_time | datetime | YES | NULL | | create time |
---
#### 用户信息表 - u_user
| 字段名称 | 数据类型 | 允许 NULL | 默认值 | 自增 | 注释 |
| ----------- | ------------ | --------- | ------ | -------------- | ------------------------------- |
| user_id | bigint(20) | NO | — | AUTO_INCREMENT | 用户ID |
| dept_id | bigint(20) | YES | NULL | | 部门ID |
| user_name | varchar(30) | NO | — | | 用户账号 |
| nick_name | varchar(30) | NO | — | | 用户昵称 |
| full_name | varchar(64) | YES | NULL | | 用户姓名 |
| user_type | varchar(2) | YES | '00' | | 用户类型00系统用户 |
| email | varchar(50) | YES | '' | | 用户邮箱 |
| phonenumber | varchar(15) | YES | '' | | 手机号码 |
| sex | char(1) | YES | '0' | | 用户性别0男 1女 2未知 |
| avatar | varchar(100) | YES | '' | | 头像地址 |
| password | varchar(100) | YES | '' | | 密码 |
| age | int(11) | YES | NULL | | 年龄 |
| birth_date | date | YES | NULL | | 出生日期 |
| address | varchar(255) | YES | NULL | | 地址 |
| status | char(1) | YES | '0' | | 帐号状态0正常 1停用 |
| del_flag | char(1) | YES | '0' | | 删除标志0代表存在 2代表删除 |
| login_ip | varchar(128) | YES | '' | | 最后登录IP |
| login_date | datetime | YES | NULL | | 最后登录时间 |
| create_by | varchar(64) | YES | '' | | 创建者 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | varchar(64) | YES | '' | | 更新者 |
| update_time | datetime | YES | NULL | | 更新时间 |
| remark | varchar(500) | YES | NULL | | 备注 |
---
#### KYC表 - u_kyc
| 字段名称 | 数据类型 | 允许 NULL | 默认值 | 自增 | 注释 |
| ---------------- | ------------ | --------- | --------- | -------------- | --------------------------------------------------------------------------------------------------------------- |
| kyc_id | bigint(20) | NO | — | AUTO_INCREMENT | ID |
| user_id | bigint(20) | YES | NULL | | link to user_id of u_user |
| real_name | varchar(64) | YES | NULL | | — |
| birth_date | date | YES | NULL | | — |
| id_type | enum | YES | NULL | | identify type('DRIVERS_LICENSE','PASSPORT','RESIDENCE_PERMIT','STUDENT_ID','MEDICARE_CARD','BIRTH_CERTIFICATE') |
| id_file | varchar(128) | YES | '' | | ID file |
| identify_picture | varchar(128) | YES | NULL | | identify picture |
| status | enum | YES | 'PENDING' | | KYC Status: 1-VERIFIED/2-UNVERIFIED/3-PENDING/4-REJECTED |
| description | varchar(255) | YES | NULL | | — |
| del_flag | char(1) | YES | '0' | | 删除标志0代表存在 2代表删除 |
| create_by | varchar(64) | YES | '' | | 创建者 |
| create_time | datetime | YES | NULL | | 创建时间 |
| update_by | varchar(64) | YES | '' | | 更新者 |
| update_time | datetime | YES | NULL | | 更新时间 |
---
# 5. 功能模块设计
## 5.1. 客户平台
1. **Dashboard**:主控制面板,提供系统概览。
2. **设备管理**
- **AP设备管理**:管理接入点设备。
- **无线网络**:配置和管理无线网络。
- **门户**:管理门户设置。
- **终端设备管理**:管理连接的终端设备。
- **监控/配置/启停/移除/纳管**:对设备进行监控、配置、启动、停止、移除和纳管操作。
3. **用户管理**
- **用户信息**:查看和管理用户信息。
- **KYC状态**管理用户的KYC了解你的客户状态包括未KYC和已KYC。
- **MAC**管理设备的MAC地址。
- **话单管理**:查询通话记录,包括时长和流量。
4. **账单管理**
- **查询**:查询账单信息。
- **KYC审核**审核用户的KYC信息包括批准和拒绝操作。
5. **计费管理**
- **计费规则**:设置计费规则。
- **限速设置**:配置网络限速。
- **套餐管理**:管理计费套餐,包括查询、增加、修改和删除操作。
6. **系统管理**
- **账号管理**:管理系统账号。
- **角色管理**:管理用户角色。
- **菜单管理**:管理系统菜单。
- **字典管理**:管理系统字典。
- **日志管理**:管理系统日志。
- **任务管理**:管理系统任务。
这些功能模块共同构成了一个全面的管理门户,支持设备、用户、账单和系统的综合管理。
![](image/admin-portal-features-2.png)
## 5.2 用户平台
1. **账号注册**
- **个人信息填写**:包括账户名、姓名、年龄、性别、电话、邮箱、地址等信息。
- **协议声明和签署**:用户需同意相关协议。
- **获取验证码**:通过邮箱获取验证码进行验证。
2. **登录**
- **忘记密码**:提供找回密码功能,通过邮箱重置密码。
3. **用户平台**
- **主页/仪表盘**:用户主界面,提供系统概览。
- **套餐购买**:提供套餐购买功能,支持多种支付方式,包括支付宝和微信支付。
- **余额充值**:提供余额充值功能,支持多种支付方式,包括支付宝和微信支付。
4. **终端设备**
- **当前设备**:查询当前连接的设备。
- **历史设备**:查询历史连接的设备。
5. **充值服务**
- **余额充值**:提供余额充值功能。
- **套餐办理**:办理新的套餐。
6. **账单**
- **充值记录**:查询充值记录。
- **上网记录**:查询上网记录。
- **套餐记录**:查询套餐记录。
7. **个人信息**
- **修改信息**:修改个人信息。
- **修改密码**:修改账户密码。
- **KYC认证**进行KYC认证需人工审核。
这些功能模块共同构成了一个全面的用户平台,支持用户注册、登录、套餐购买、设备管理、充值服务、账单查询和个人信息管理等功能。
![](image/user-portal-features-1.png)
# 6. 计费和套餐设计
1. **计算周期**
- 支持小时、天、月、年等不同的计算周期。
2. **时间限制**
- 时段限制:支持小时、天或不限。
- 计算差值:根据时间限制计算差值。
3. **流量限制**
- 支持设置不同的流量限制流量1、流量2等或不限。
4. **设备数据限制**
- 支持设置不同的设备数量限制数量1、数量2等或不限。
5. **带宽限制**
- 支持设置不同的带宽限制带宽1、带宽2等或不限。
6. **计算规则**
- **计时**:支持按秒、分钟、小时、天或不限进行计时。
- **计算类型**当前仅支持预付费单位可以是KB、MB等。
- **等头流量处理**:支持向上取整或四舍五入。
- **价格**:支持按天或月设置价格周期。
7. **封闭设置**
- 支持设置封闭金额和期初限制。
8. **规则设置**
- 当前仅支持单一规则规则1不支持多种规则选择。
9. **备注**
- 当前仅支持预付费模式。
- 标注“NA”的选项当前不支持。
计费套餐和计费规则共同构成了一个灵活的计费套餐和规则配置系统,支持根据时间、流量、设备和带宽等不同维度进行计费规则的定制。
![](image/billing-package-1.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View File

@@ -18,11 +18,13 @@ Storage:
```text ```text
Linux >= Ubuntu 22.04 Linux >= Ubuntu 22.04
JDK >= 1.8 (Recommended version 1.8) (用于Omada SDN Controller) JDK >= 1.8 (Recommended version 1.8) (用于Omada SDN Controller)
Omada SDN Controller > 5.15.6.7
docker >= 24.0.7, build 24.0.7-0ubuntu2~22.04.1 docker >= 24.0.7, build 24.0.7-0ubuntu2~22.04.1
docker-compose >= v2.10.0 docker-compose >= v2.10.0
``` ```
* 安装docker和docker-compose * 安装docker和docker-compose
```sh ```sh
sudo apt-get update sudo apt-get update
sudo apt-get install -y docker.io sudo apt-get install -y docker.io
@@ -31,6 +33,7 @@ docker-compose >= v2.10.0
``` ```
* 请确认docker和docker-compose的版本是否符合要求 * 请确认docker和docker-compose的版本是否符合要求
```sh ```sh
docker -v docker -v
docker-compose -v docker-compose -v
@@ -198,96 +201,95 @@ docker-compose >= v2.10.0
* 从Omada服务中获取门户平台整合连接参数如下图 * 从Omada服务中获取门户平台整合连接参数如下图
![Omada platform integration configuration screenshot](wfc-omada-integration.png) ![Omada platform integration configuration screenshot](media/wfc-omada-integration.png)
注意连接的MODE采用Client 具体的配置方式可参考Omada的相关文档 注意连接的MODE采用Client 具体的配置方式可参考Omada的相关文档
* 修改配置文件 * 修改配置文件
* 修改如下omada的配置项, 用于与Omada进行平台整合 * 修改如下omada的配置项, 用于与Omada进行平台整合
```sh ```sh
cd /opt/wfc/docker/conf cd /opt/wfc/docker/conf
cat application-common.yml cat application-common.yml
... ...
# Omada config
omada:
# web url or host exp: 'https://192.168.2.249:8043'
omada-url: 'https://aps1-omada-northbound.tplinkcloud.com'
omadac-id: 'c4decbf73f80094019d664506ec9b4d4'
client-id: '6110a77822234243a033e652d1e8a3ae'
client-secret: '651957da95f14f45b719876bb68bd6f5'
... # Omada config
``` omada:
# web url or host exp: 'https://192.168.2.249:8043'
omada-url: 'https://aps1-omada-northbound.tplinkcloud.com'
omadac-id: 'c4decbf73f80094019d664506ec9b4d4'
client-id: '6110a77822234243a033e652d1e8a3ae'
client-secret: '651957da95f14f45b719876bb68bd6f5'
* 修改如下email的配置项, 用于发送邮箱验证码 ...
```
```sh * 修改如下email的配置项, 用于发送邮箱验证码
cd /opt/wfc/docker/conf
cat application-common.yml
... ```sh
cd /opt/wfc/docker/conf
mail: cat application-common.yml
enabled: true
host: mail.agrandtech.com
port: 25
# Enable authentication
auth: true
# Sender, follows RFC-822 standard
from: smtpext <smtpext@agrandtech.com>
# User name
user: smtpext
# Password
pass: Smtp123@agt
# Use TLS security connection
starttlsEnable: false
# Use SSL security connection
sslEnable: false
# Timeout value for sending mail, in milliseconds
timeout: 0
# Connection timeout value, in milliseconds
connectionTimeout: 0
... ...
```
* 修改支付配置项 mail:
enabled: true
host: mail.agrandtech.com
port: 25
# Enable authentication
auth: true
# Sender, follows RFC-822 standard
from: smtpext <smtpext@agrandtech.com>
# User name
user: smtpext
# Password
pass: Smtp123@agt
# Use TLS security connection
starttlsEnable: false
# Use SSL security connection
sslEnable: false
# Timeout value for sending mail, in milliseconds
timeout: 0
# Connection timeout value, in milliseconds
connectionTimeout: 0
```sh ...
cd /opt/wfc/docker/wfc/modules/payment/conf/ ```
cat application.yml
... * 修改支付配置项
# payment configuration,
# alipay configuration
alipay:
appId: 9021000122699258
privateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7YAcIXV5GJlTWBOoBcrVG1zKxHunznSjYXwTS2DM3YgloxzKye4apfcmBDVnoL93m4QrJTtbiHYvu4yJjJfJsQEY+Wo44IczhDypyu+Il6JpQOwylTs94/+3aaQ1wThsDaGs8edaFGteuw+1pUVl4nxF00fS1VoIR30riqAGFAXrPhcSA6Y9c8HK1htxCelICnPzjpqC4s8ZjrjS7FoyHP2ZAay5fx1VEtah30E4RvycFfV/i2+k3JGFOSeevdCx6Ufu+9Y/RaG4Sh84QuYRQUhAHUswlFDHpRrAnxHzt0zDkOkg3BrCT7vMtBbSOP9BdIhpVTaZm4diQdNbLSl4hAgMBAAECggEAKb1Xc7aQ1KGfTlmj4xSxawlvImOXjAwbWC+6fFlq91BgdjXBhl7b/Y+mvpfBymY3UUIaTAPC/HXGgT2ZoGqImTKsMyGrArgM0qm1M//EfdtV3L96rqxirTqduoSiWL0daWHuWXduoRH8r9K3ZTmY67TLh7FpiKevq9mI7fqs8/qgq5QAN4UPFb3Cq9hDNTU4l6+Bywdg1KkwJ2Jc98SlrIdVl+1eCMAgueLR0aNHTobyPBZ/KfwGRV0OQ3QqjLVgL3zlbzuylYhaZqPgxxd46vgWwkyMiiv7u2OyCetq4LFd+tcNDz0Yqk6rK9/S0oxbN8NM5DLkpwFh/433BoPS3QKBgQD/dsxNr2PYdPLp6pOvw7H2AFMH8CkwTlRg+2f/0fgQF14rJwZgEU6fL5A2JvQeRRC5mCff2m5tDqrS321JNyH/JIKJ+4J8I34GEo/kSCHL3RmyvJGQOQ/EpEyxvP8BV3ob6UO3LR58DOGlJr8eTsr3Y8o9cAMuknCNxvsd2LvybwKBgQC7xKkx4KIPBny6sCOtChOkgIrY3hOCi+ZsHQVESXKzeku0NkH/qrAG+S9pb1XCzXdM2HrzkMeuz6tqi+2TY8nORyY2DZHNW7FqzkAiZ/NO2AgGIlALq1ZfJZke2MxgtBnxSsQ03gfXP9opu/FsLH9a+s6edfHPvKD4kHxlLBfAbwKBgQDYvr6QmuKn4HHJLZGoau0uvw+ziHwp1AubTTLrxgYmAO2Qx0eNcqG2RfChQWOV2xtZnFMYhodyWCNvTsm2eOSLSTrIP3ByStq95DnZganLAgivsXX/W6qZOJ0poCTryoB79enSHKHktjksmjdFS6zBQRVyEvtgJDcC03Rz2lN8WQKBgQCCoJE4otb7bv7s/ccEBeOeaNKvhue5xUwbYKEeXZ6PYAA0sh5+GCf34flq90qJiFl7u4rl0Y4pfk35hLlV9XEasYLSzePmIuktrakOhpTNABus8MgRJjSjYsvAmwCsMf9uTx5qzSBVThWfPSH6qIY9LAj8Un9UjxzJb/Mqi19GvwKBgQC0/KB+3robTqy9KOV4iEKJ4kmnXDRu7ecpMyc8k5HzpolIHcXLZHkBK9pMCXBQ9Kwy6BjRGNnUZOahS+tvnMcjHpwdhu90r7D51GXW/+PeFtphYTscFhHv1yuWbbojzhKf69pZnsVmyllIBqRgtbkS2WNHxWo/peCg47TcLaQNMA==
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhBZoE6p1TKpd/WsAJRTA2D6yUTzqLmZ73scxbPxxKwPIg2ys2Ap21u/lVmqBWO9Wf2Z7wUwr/6BP1PQqVpg0GAqU3yjjZ0LGfBitzMBMbGrlOLqJQ3PKgnUNmnOdLR4FlHCAjKtuyxjHkxBTHg/L4punk4lkFJQD8YvzFrYalS6WYw5j1/oq080NbcjPirPCRlsU7MRraQuUqSTdPwm2iHkroKwCEbGv+RtNJCfOkKNQVtRFFgPGMhU4nQ620gdfzsGJsNFKVJnD5SjeDWniBAbaGaVF4rEfKJPe6+XrcMg3h+9Fz+A2IU1KCCoth2neEZEaU1t0KBGxXIuo4efi/QIDAQAB
appCertPath: \u5E94\u7528\u516C\u94A5\u8BC1\u4E66
aliPayCertPath: \u652F\u4ED8\u5B9D\u516C\u94A5\u8BC1\u4E66
aliPayRootCertPath: \u652F\u4ED8\u5B9D\u6839\u8BC1\u4E66
serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
domain: http://192.168.2.249
testDomain: http://129.204.171.210:8085
# wxpay configuration ```sh
wxpay: cd /opt/wfc/docker/wfc/modules/payment/conf/
appId: cat application.yml
appSecret:
mchId:
partnerKey:
certPath:
domain: http://192.168.2.249/u
... ...
```
# payment configuration,
# alipay configuration
alipay:
appId: 9021000122699258
privateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7YAcIXV5GJlTWBOoBcrVG1zKxHunznSjYXwTS2DM3YgloxzKye4apfcmBDVnoL93m4QrJTtbiHYvu4yJjJfJsQEY+Wo44IczhDypyu+Il6JpQOwylTs94/+3aaQ1wThsDaGs8edaFGteuw+1pUVl4nxF00fS1VoIR30riqAGFAXrPhcSA6Y9c8HK1htxCelICnPzjpqC4s8ZjrjS7FoyHP2ZAay5fx1VEtah30E4RvycFfV/i2+k3JGFOSeevdCx6Ufu+9Y/RaG4Sh84QuYRQUhAHUswlFDHpRrAnxHzt0zDkOkg3BrCT7vMtBbSOP9BdIhpVTaZm4diQdNbLSl4hAgMBAAECggEAKb1Xc7aQ1KGfTlmj4xSxawlvImOXjAwbWC+6fFlq91BgdjXBhl7b/Y+mvpfBymY3UUIaTAPC/HXGgT2ZoGqImTKsMyGrArgM0qm1M//EfdtV3L96rqxirTqduoSiWL0daWHuWXduoRH8r9K3ZTmY67TLh7FpiKevq9mI7fqs8/qgq5QAN4UPFb3Cq9hDNTU4l6+Bywdg1KkwJ2Jc98SlrIdVl+1eCMAgueLR0aNHTobyPBZ/KfwGRV0OQ3QqjLVgL3zlbzuylYhaZqPgxxd46vgWwkyMiiv7u2OyCetq4LFd+tcNDz0Yqk6rK9/S0oxbN8NM5DLkpwFh/433BoPS3QKBgQD/dsxNr2PYdPLp6pOvw7H2AFMH8CkwTlRg+2f/0fgQF14rJwZgEU6fL5A2JvQeRRC5mCff2m5tDqrS321JNyH/JIKJ+4J8I34GEo/kSCHL3RmyvJGQOQ/EpEyxvP8BV3ob6UO3LR58DOGlJr8eTsr3Y8o9cAMuknCNxvsd2LvybwKBgQC7xKkx4KIPBny6sCOtChOkgIrY3hOCi+ZsHQVESXKzeku0NkH/qrAG+S9pb1XCzXdM2HrzkMeuz6tqi+2TY8nORyY2DZHNW7FqzkAiZ/NO2AgGIlALq1ZfJZke2MxgtBnxSsQ03gfXP9opu/FsLH9a+s6edfHPvKD4kHxlLBfAbwKBgQDYvr6QmuKn4HHJLZGoau0uvw+ziHwp1AubTTLrxgYmAO2Qx0eNcqG2RfChQWOV2xtZnFMYhodyWCNvTsm2eOSLSTrIP3ByStq95DnZganLAgivsXX/W6qZOJ0poCTryoB79enSHKHktjksmjdFS6zBQRVyEvtgJDcC03Rz2lN8WQKBgQCCoJE4otb7bv7s/ccEBeOeaNKvhue5xUwbYKEeXZ6PYAA0sh5+GCf34flq90qJiFl7u4rl0Y4pfk35hLlV9XEasYLSzePmIuktrakOhpTNABus8MgRJjSjYsvAmwCsMf9uTx5qzSBVThWfPSH6qIY9LAj8Un9UjxzJb/Mqi19GvwKBgQC0/KB+3robTqy9KOV4iEKJ4kmnXDRu7ecpMyc8k5HzpolIHcXLZHkBK9pMCXBQ9Kwy6BjRGNnUZOahS+tvnMcjHpwdhu90r7D51GXW/+PeFtphYTscFhHv1yuWbbojzhKf69pZnsVmyllIBqRgtbkS2WNHxWo/peCg47TcLaQNMA==
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhBZoE6p1TKpd/WsAJRTA2D6yUTzqLmZ73scxbPxxKwPIg2ys2Ap21u/lVmqBWO9Wf2Z7wUwr/6BP1PQqVpg0GAqU3yjjZ0LGfBitzMBMbGrlOLqJQ3PKgnUNmnOdLR4FlHCAjKtuyxjHkxBTHg/L4punk4lkFJQD8YvzFrYalS6WYw5j1/oq080NbcjPirPCRlsU7MRraQuUqSTdPwm2iHkroKwCEbGv+RtNJCfOkKNQVtRFFgPGMhU4nQ620gdfzsGJsNFKVJnD5SjeDWniBAbaGaVF4rEfKJPe6+XrcMg3h+9Fz+A2IU1KCCoth2neEZEaU1t0KBGxXIuo4efi/QIDAQAB
appCertPath: \u5E94\u7528\u516C\u94A5\u8BC1\u4E66
aliPayCertPath: \u652F\u4ED8\u5B9D\u516C\u94A5\u8BC1\u4E66
aliPayRootCertPath: \u652F\u4ED8\u5B9D\u6839\u8BC1\u4E66
serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
domain: http://192.168.2.249
testDomain: http://129.204.171.210:8085
# wxpay configuration
wxpay:
appId:
appSecret:
mchId:
partnerKey:
certPath:
domain: http://192.168.2.249/u
...
```
* 启动/查看/停止/版本软件 * 启动/查看/停止/版本软件
```sh ```sh

Binary file not shown.

View File

@@ -0,0 +1,321 @@
# WANFi软件编译手册
## 项目介绍
WANFi远距离WiFi产品设计软件服务和计费系统主要用于WiFi AP设备管理、用户管理及费用管理系统包含客户平台和用户平台客户平台包含设备管理和用户套餐计费管理及系统管理等功能用户平台主要面向终端用户终端用户可通过充值和购买流量套餐实现互联网接入服务。WANFi控制平台目前基于TPLINK Omada平台API实现。
本项目基于Spring Cloud、Ant Design Vue的前后端分离的开发平台 采用微服务解决方案,包括核心模块:角色用户、菜单权限、网关路由、数据权限等,使用中间件:日志脱敏、任务调度、短信邮箱等。
## 软件工程项目目录树
```sh
tree -L 1 wfc.git
wfc.git
├── be.wfc # 后端模块目录
├── build.wfc # 系统构建目录
├── fe.wfc # 客户平台前端目录
└── fe.wfc.user # 用户平台前端目录
```
## 后端模块编译说明
**工程目录树**
```sh
tree -L 2 be.wfc/
be.wfc/
├── LICENSE
├── README.md
├── bin
│   ├── clean.bat
│   ├── package.bat
│   ├── run-auth.bat
│   ├── run-gateway.bat
│   ├── run-modules-file.bat
│   ├── run-modules-gen.bat
│   ├── run-modules-job.bat
│   ├── run-modules-system.bat
│   └── run-monitor.bat
├── docker
│   ├── copy.bat
│   ├── copy.sh
│   ├── deploy.bat
│   ├── deploy.sh
│   ├── docker-compose.yml
│   ├── mysql
│   ├── nacos
│   ├── nginx
│   ├── redis
│   ├── start-backend.bat
│   ├── start-backend.sh
│   ├── start-frontend.bat
│   ├── start-frontend.sh
│   └── wfc
├── pom.xml
├── sql # 数据库脚本
│   ├── upgrade
│   ├── wfc_config_db # nacos配置数据库
│   ├── wfc_system_db # 客户平台数据库
│   └── wfc_user_db # 用户平台数据库
├── wfc-api # API接口模块
│   ├── pom.xml
│   ├── wfc-api-omada # Omada API接口
│   ├── wfc-api-system # 客户平台 API接口
│   └── wfc-api-user # 用户平台 API接口
├── wfc-auth # 认证中心 [8081]
│   ├── pom.xml
│   ├── src
│   └── target
├── wfc-common # 通用模块
│   ├── pom.xml
│   ├── wfc-common-core # 核心模块
│   ├── wfc-common-datascope # 权限范围
│   ├── wfc-common-datasource # 多数据源
│   ├── wfc-common-log # 日志记录
│   ├── wfc-common-mail # 邮件服务
│   ├── wfc-common-mybatis # 数据操作
│   ├── wfc-common-redis # 缓存服务
│   ├── wfc-common-seata # 分布式事务
│   ├── wfc-common-security # 安全模块
│   ├── wfc-common-sensitive # 数据脱敏
│   └── wfc-common-swagger # 系统接口
├── wfc-gateway # 网关模块 [8080]
│   ├── pom.xml
│   ├── src
│   └── target
├── wfc-modules # 业务模块
│   ├── pom.xml
│   ├── wfc-file # 文件服务 [9201]
│   ├── wfc-gen # 代码生成 (未启用)
│   ├── wfc-job # 定时任务 [9203]
│   ├── wfc-payment # 支付服务 [9204]
│   ├── wfc-system # 客户平台模块 [9205]
│   └── wfc-user # 用户平台模块 [9206]
└── wfc-visual # 系统监控 (未启用)
├── pom.xml
└── wfc-visual-monitor
```
**环境部署**
```
JDK >= 1.8 (推荐1.8版本)
Maven >= 3.6.3
Mysql >= 5.7.0 (推荐5.7版本)
Redis >= 7.4.2
nacos >= v2.5.0
sentinel >= 1.6.0 (optional)
```
**编译系统**
```sh
cd be.wfc
mvn clean package -P prod -DskipTests
```
## 客户平台前端编译说明
**工程目录树**
```sh
tree -L 1 fe.wfc
fe.wfc
├── README.md
├── build
├── dist
├── env.config.ts
├── eslint.config.js
├── index.html
├── node_modules
├── package.json
├── packages
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── public
├── src
├── tsconfig.json
├── uno.config.ts
├── vite.config.ts
└── vitest.config.ts
```
**环境准备**
确保你的环境满足以下要求:
- **NodeJS**: >=18.12.0,推荐 18.19.0 或更高。
- **pnpm**: >= 8.7.0,推荐 8.14.0 或更高。
**安装依赖**
npm install -g pnpm
```bash
npm install -g pnpm
pnpm i
```
> 由于本项目采用了 pnpm monorepo 的管理方式,因此请不要使用 npm 或 yarn 来安装依赖。
**启动项目**
```bash
pnpm dev
```
**构建项目**
```bash
pnpm build
```
## 用户平台前端编译说明
**工程目录树**
```sh
tree -L 1 fe.wfc.user
fe.wfc.user
├── README.md
├── build
├── dist
├── env.config.ts
├── eslint.config.js
├── index.html
├── node_modules
├── package.json
├── packages
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── public
├── src
├── tsconfig.json
├── uno.config.ts
├── vite.config.ts
└── vitest.config.ts
```
**环境准备**
确保你的环境满足以下要求:
- **NodeJS**: >=18.12.0,推荐 18.19.0 或更高。
- **pnpm**: >= 8.7.0,推荐 8.14.0 或更高。
**安装依赖**
npm install -g pnpm
```bash
npm install -g pnpm
pnpm i
```
> 由于本项目采用了 pnpm monorepo 的管理方式,因此请不要使用 npm 或 yarn 来安装依赖。
**启动项目**
```bash
pnpm dev
```
**构建项目**
```bash
pnpm build
```
## 安装包构建说明
**工程目录树**
```text
build.wfc/
├── bin # build binary file
├── build # build directory
│   ├── bin
│   ├── docker # docker compose root directory
│   │   ├── env
│   │   ├── mysql
│   │   │   ├── conf
│   │   │   ├── data
│   │   │   ├── db
│   │   │   └── logs
│   │   ├── nacos
│   │   │   ├── conf
│   │   │   └── logs
│   │   ├── nginx
│   │   │   ├── conf
│   │   │   ├── conf.d
│   │   │   ├── html
│   │   │   └── logs
│   │   ├── redis
│   │   │   ├── conf
│   │   │   └── data
│   │   └── wfc
│   │   ├── auth
│   │   │   └── jar
│   │   ├── gateway
│   │   │   └── jar
│   │   ├── modules
│   │   │   ├── file
│   │   │   │   └── jar
│   │   │   ├── gen
│   │   │   │   └── jar
│   │   │   ├── job
│   │   │   │   └── jar
│   │   │   ├── payment
│   │   │   │   └── jar
│   │   │   ├── system
│   │   │   │   └── jar
│   │   │   └── user
│   │   │   └── jar
│   │   ├── upload
│   │   └── visual
│   │   └── monitor
│   │   └── jar
│   └── systemd # system service daemon file saved here
│   └── system
├── debbuild # deb build directory
│   ├── DEBIAN
│   ├── etc
│   └── opt
│   └── wfc
├── docs
│   ├── 01-requirement
│   ├── 02-design
│   └── 03-configuration
└── release
├── debs # deb package release, n/a
└── tars # tar package release
```
**准备工作**
```text
JDK >= 1.8 (推荐1.8版本)
Maven >= 3.0
Mysql >= 5.7.0 (推荐5.7版本) # docker内部构建
Redis >= 7.4.2 # docker内部构建
nacos >= v2.5.0 # docker内部构建
sentinel >= 1.6.0 (optional)
```
**构建发布包**
> 如果不同步拉取git仓库带-g
- TAR发布包
```sh
cd wfc.git/build.wfc/bin
./build.sh -g tar
```
- DEB发布包
```sh
cd wfc.git/build.wfc/bin
./build.sh -g deb
```

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/99-reference/db.docx Normal file

Binary file not shown.

396
docs/99-reference/db.md Normal file
View File

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

BIN
docs/99-reference/db.pdf Normal file

Binary file not shown.