为新生提供便捷的手机号码选择服务,简化线下流程,提高工作效率
河北工程技术学院新生手机号选号系统是为新生提供手机号码选择服务的平台,系统分为管理后台和微信小程序两部分。
扫描二维码体验选号系统
| 学号 | 姓名 | 身份证后6位 | 预留手机号 |
|---|---|---|---|
| 000101 | 学生000101 | 000101 | 10000000101 |
| 000102 | 学生000102 | 000102 | 10000000102 |
| 000103 | 学生000103 | 000103 | 10000000103 |
| 000104 | 学生000104 | 000104 | 10000000104 |
| 000105 | 学生000105 | 000105 | 10000000105 |
注:如果验证所需信息不匹配实际需求(例如录取通知书中不包含学号、新生在入学前也没有渠道获知学号),系统中的"学号"和"身份证号后6位"可以比较容易地更改为其它信息,例如考生号。
通过此功能登录到系统后台管理界面。
默认用户名为HBGCxsxh-ADMIN123
默认密码为HBGCxsxh-PWD123
当前账号123
当前密码123
登录认证 - 管理员需要输入用户名和密码进行身份验证
控制页面切换与退出。
页面切换 - 点击侧边栏以切换页面
退出登录 - 点击右上角的退出按钮以退出
系统核心数据概览,实时展示关键指标和统计信息。
数据概览 - 显示学生总数、已验证学生数、已选号学生数等关键指标
选号趋势 - 以图表形式展示每日选号进度和趋势
号码状态分布 - 展示不同状态号码的分布情况
全屏模式 - 全屏展示各项选号数据
提供全面的数据分析和统计功能,帮助管理员了解系统使用情况。
选号操作统计 - 统计学生的选号行为数据
号码池分析 - 显示已选号码和可用号码的分布情况
用户行为分析 - 分析用户操作频率和模式
导入学生数据和查看格式要求。
学生信息导入 - 批量导入新生数据
导入号码数据和查看格式要求。
号码信息导入 - 批量导入号码数据
管理系统中的学生信息,包括查看、搜索和删除学生数据,解除学生选号。
搜索学生信息 - 在全部数据中模糊搜索
分页展示信息 - 点击按钮切换或直接输入页码
学生信息删除 - 删除单条学生信息
删除选中信息 - 批量删除学生信息
删除全部信息 - 直接重建数据表实现一秒删除全部数据
学生选号解除 - 解除单条学生选号
解除选中学生选号 - 批量解除学生选号
管理系统中的号码信息,包括查看、搜索和删除号码数据。
搜索号码信息 - 在全部数据中模糊搜索
分页展示信息 - 点击按钮切换或直接输入页码
号码信息删除 - 删除单条号码信息
删除选中信息 - 批量删除号码信息
删除全部信息 - 直接重建数据表实现一秒删除全部数据
设置和管理学生选号的时间规则和控制策略。
时间规则设置 - 配置选号时间段
全局控制 - 启用/禁用所有学生的选号功能
规则管理 - 添加、删除、激活选号控制规则
将系统中的选号结果导出为多种格式,方便后续处理和分析。
筛选条件 - 根据状态和时间范围筛选数据
字段选择 - 选择需要导出的数据字段
多格式支持 - 支持导出为Excel、CSV、JSON等共8种格式
前五条数据预览 - 预览5条将要导出的数据
导出记录 - 非持久化的导出记录,点击后再次执行相同的导出
查看系统操作日志的统计信息、选号操作的部分信息。
操作类型分析 - 统计各类系统操作的数量和比例
查看IP - 查看学生操作的IP地址分布
查看详细的学生选号操作和系统管理操作记录。
选号操作记录 - 查看学生选号过程中的所有操作
系统操作记录 - 查看管理员的系统管理操作
筛选与搜索 - 按类型、时间等条件筛选记录
微信授权 - 获取微信用户基本信息
学生信息验证 - 验证学号和身份证信息
号码浏览 - 查看系统提供的可选号码
随机刷新 - 刷新获取新一批可选号码(15秒间隔)
选号结果查看 - 显示已选号码
选号失败反馈 - 当号码已被抢选时,显示提示
取消选号 - 选号后可以取消,取消后30分钟内不允许选号
学生首次使用时需要通过身份验证才能使用选号功能。
学生可以浏览并选择合适的手机号码。
学生可以查看自己已选的号码信息及选号状态。
JDK 17+
MySQL 8.0+ (需要区分大小写,开发时使用8.4.5)
Linux (推荐Rocky Linux 9.0) 或 Windows Server 2008+
公网IP,开放80/443端口;微信小程序需HTTPS支持
多种配置方式示例(命令行参数、JVM参数、环境变量、配置文件):
展示参数使用,非实际参数格式
java -jar FMNS.jar \
# 后台账号密码配置与小程序配置
--login.name=admin \ # 管理员账号
--login.pwd=your_strong_password \ # 管理员密码
--wx.appid=your_wx_appid \ # 微信小程序APPID
--wx.secret=your_wx_secret \ # 微信小程序密钥
# 数据库连接
--spring.datasource.url=jdbc:mysql://localhost:3306/hbgcxsxh_demo \
--spring.datasource.username=dbuser \
--spring.datasource.password=dbpassword \
# 服务器配置
--server.port=8080 \ # 服务端口
--server.servlet.context-path=/ \ # 上下文路径
java \
# 应用配置参数
-Dlogin.name=admin \
-Dlogin.pwd=your_strong_password \
-Dwx.appid=your_wx_appid \
-Dwx.secret=your_wx_secret \
-jar FMNS.jar
# Linux/MacOS export LOGIN_NAME=admin export LOGIN_PWD=your_strong_password export WX_APPID=your_wx_appid export WX_SECRET=your_wx_secret export SPRING_DATASOURCE_PASSWORD=dbpassword java -jar FMNS.jar # Windows (CMD) set LOGIN_NAME=admin set LOGIN_PWD=your_strong_password set WX_APPID=your_wx_appid set WX_SECRET=your_wx_secret set SPRING_DATASOURCE_PASSWORD=dbpassword java -jar FMNS.jar # Windows (PowerShell) $env:LOGIN_NAME = "admin" $env:LOGIN_PWD = "your_strong_password" $env:WX_APPID = "your_wx_appid" $env:WX_SECRET = "your_wx_secret" $env:SPRING_DATASOURCE_PASSWORD = "dbpassword" java -jar FMNS.jar
docker run -d --name FMNS \
-p 8080:8080 \
-e LOGIN_NAME=admin \
-e LOGIN_PWD=your_strong_password \
-e WX_APPID=your_wx_appid \
-e WX_SECRET=your_wx_secret \
-e SPRING_DATASOURCE_PASSWORD=dbpassword \
-v /path/to/config:/config \
FMNS:latest
提示:
不配置账号密码则使用默认账号密码
默认用户名为HBGCxsxh-ADMIN123
默认密码为HBGCxsxh-PWD123
| 并发规模 | CPU要求 | 内存要求 | 磁盘要求 | 网络要求 |
|---|---|---|---|---|
| 1,000用户以下 | 2核 (Xeon E5 v4或同等性能) | 2GB (Java应用<0.8GB + MySQL<1.2GB) | 15GB SSD (IOPS 200+) | 8Mbps带宽 |
| 4,000-8,000用户 | 4核 (Xeon Silver 4210/AMD EPYC 7262) | 3GB (Java应用<1GB + MySQL<2GB) | 20GB SSD (IOPS 1,000+) | 24Mbps带宽 |
| 10,000用户峰值 | 4核 (Xeon Silver 4210/AMD EPYC 7262) | 3GB (Java应用<1GB + MySQL<2GB) | 20GB SSD (IOPS 1,500+) | 32Mbps带宽 |
测试结论:瓶颈主要出现在测试客户端而非服务端,高并发时可能导致管理面板响应缓慢(>5秒)
推荐使用高主频CPU(≥3.0GHz)提升单线程性能
为MySQL分配足够innodb_buffer_pool_size
使用SSD确保高IOPS(≥1,500),避免机械硬盘成为瓶颈
innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_io_capacity = 2000
| 文件类型 | 文件数 | 行数 | 大小 | 占比 |
|---|---|---|---|---|
| JAVA | 85 | 6,026 | 231.21 KB | 41.0% |
| HTML | 26 | 3,840 | 146.16 KB | 25.9% |
| JS | 19 | 3,231 | 109.21 KB | 19.4% |
| CSS | 25 | 3,149 | 60.06 KB | 10.7% |
| WXML | 2 | 154 | 4.36 KB | 0.8% |
| WXSS | 3 | 253 | 3.83 KB | 0.7% |
| XML | 1 | 107 | 3.43 KB | 0.6% |
| JSON | 6 | 126 | 3.27 KB | 0.6% |
| YML | 3 | 85 | 2.00 KB | 0.4% |
系统采用典型的三层架构设计:
表示层 (Presentation Layer)
├── 管理后台 (Thymeleaf)
└── 微信小程序
业务逻辑层 (Business Logic Layer)
├── 控制器 (Controllers)
├── 服务 (Services)
└── 数据访问对象 (DAOs)
数据访问层 (Data Access Layer)
├── MySQL 数据库
└── 数据映射 (MyBatis)
以下是系统的数据库表结构设计,包含主要表及其字段说明。
| 字段名 | 类型 | 说明 |
|---|---|---|
| student_id | varchar(20) | 学号 - 学生唯一标识 |
| name | varchar(50) | 姓名 - 学生姓名 |
| id_number | varchar(18) | 身份证号 - 取后几位 |
| open_id | varchar(64) | Open ID - 微信用户唯一标识 |
| status | enum | 状态 - 身份验证状态(未验证/已验证/冻结) |
| reserved_phone | varchar(11) | 预留号码 - 报考时预留的手机号 |
| allow_selection_time | datetime | 允许选号时间 |
| 字段名 | 类型 | 说明 |
|---|---|---|
| phone_number | varchar(11) | 号码 - 联通手机号 |
| status | enum | 状态 - 号码生命周期状态(未选/占用/已选/回收) |
| selected_time | datetime | 被选时间 - 号码被最终选中的时间 |
| refresh_count | int | 被抽次数 |
| occupied_time | datetime | 占用过期时间 |
| student_id | varchar(20) | 学号 - 关联学生(若被占用/已选) |
| 字段名 | 类型 | 说明 |
|---|---|---|
| log_id | varchar(32) | 记录ID - UUID格式唯一标识 |
| student_id | varchar(20) | 学号 - 关联学生 |
| operation_time | datetime | 操作时间 - 操作发生时间 |
| operation_type | varchar(20) | 操作类型 |
| affected_number | varchar(11) | 影响的号码 - 操作涉及的号码 |
| device_type | varchar(20) | 设备类型 - 如微信小程序-iOS、PC管理端 |
| ip_address | varchar(45) | IP地址 - 操作来源IP(IPv4/IPv6) |
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 自增ID |
| control_type | enum | 控制类型(每日/特定时间) |
| start_time | datetime | 开始时间 |
| end_time | datetime | 结束时间 |
| is_active | tinyint(1) | 是否激活 |
系统包含多个存储过程用于数据维护和统计:
以下是系统API接口概览:
| 所属功能 | 方法 | 路径 | 描述 |
|---|---|---|---|
| 仪表盘 | GET | /mt/dashboard |
获取仪表盘页面数据 |
| GET | /mt/dashboard/data |
获取仪表盘数据(JSON格式) | |
| 手机号管理 | GET | /mt/phone-data |
获取手机号数据列表(分页) |
| POST | /mt/phone-data/delete/{phoneNumber} |
删除单个手机号 | |
| POST | /mt/phone-data/delete |
批量删除手机号 | |
| POST | /mt/phone-data/delete-all |
清空所有手机号数据 | |
| GET | /mt/phone-import |
访问手机号导入页面 | |
| POST | /mt/phone-import/upload |
导入手机号数据文件 | |
| 学生管理 | GET | /mt/student-data |
获取学生数据列表(分页) |
| POST | /mt/student-data/delete/{studentId} |
删除单个学生 | |
| POST | /mt/student-data/delete |
批量删除学生 | |
| POST | /mt/student-data/delete-all |
清空所有学生数据 | |
| POST | /mt/student-data/release/{studentId} |
解除单个学生的选号 | |
| POST | /mt/student-data/release |
批量解除学生选号 | |
| POST | /mt/student-import/upload |
导入学生数据文件 | |
| 选号控制 | GET | /mt/selection-ctrl |
获取选号控制规则 |
| POST | /mt/selection-ctrl/add |
添加选号控制规则 | |
| POST | /mt/selection-ctrl/update |
更新选号控制规则 | |
| POST | /mt/selection-ctrl/delete/{id} |
删除选号控制规则 | |
| POST | /mt/selection-ctrl/disable-all |
禁用所有规则 | |
| POST | /mt/selection-ctrl/disable-selection |
禁止所有学生选号 | |
| POST | /mt/selection-ctrl/enable-selection |
允许所有学生选号 | |
| POST | /mt/selection-ctrl/apply-rules |
应用选号时间规则 | |
| POST | /mt/selection-ctrl/apply-rule/{id} |
应用指定规则 | |
| 日志统计 | GET | /mt/logs-stats |
获取日志统计数据 |
| GET | /mt/logs-stats/ip-details |
获取学生IP详情 | |
| POST | /mt/logs-stats/update-stats |
更新日志统计数据 | |
| GET | /mt/all-stats |
获取全局统计数据 | |
| 数据导出 | GET | /mt/data-export |
访问数据导出页面 |
| POST | /mt/data-export/preview |
更新导出预览 | |
| POST | /mt/data-export/export |
执行数据导出 | |
| GET | /mt/data-export/download/{fileName} |
下载导出的文件 | |
| POST | /mt/data-export/count |
统计导出记录数 | |
| 操作日志 | GET | /mt/sysop |
获取系统操作日志 |
| GET | /mt/stuop |
获取学生操作日志 | |
| 系统设置 | GET | /mt/login |
访问登录页面 |
| POST | /mt/login |
执行登录操作 | |
| POST | /mt/logout |
执行注销操作 | |
| POST | /mt/header/toggle |
切换页眉状态 |
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /stu/auth/wxLogin |
微信登录,获取openId并检查是否已绑定学生信息 |
| POST | /stu/auth/verify |
验证学生信息并绑定微信 |
| GET | /stu/auth/info |
获取已绑定的学生信息(脱敏) |
| GET | /stu/phone/random |
获取随机号码列表(开始选号) |
| POST | /stu/phone/confirm |
确认选号 |
| POST | /stu/phone/cancel |
取消选号 |
| GET | /stu/phone/selected |
获取已选号码 |
| GET | /stu/phone/stats |
获取号码池统计信息 |