1. 项目背景与核心价值
巡逻管理是安保、物业、园区管理等场景中的高频刚需。传统纸质登记+人工巡查模式存在数据易丢失、实时性差、难以追溯等问题。基于微信小程序的巡逻管理平台,结合了移动端的便捷性和后台系统的数据处理能力,实现了巡逻任务的数字化全流程管理。
这个毕业设计项目采用SpringBoot+微信小程序的架构,具有典型性:
- 前端:微信小程序(触达用户成本低,无需安装)
- 后端:SpringBoot(快速构建RESTful API)
- 数据:MySQL(关系型数据存储)
- 特色功能:实时定位打卡、异常上报、数据可视化
提示:选择微信小程序而非原生App,主要考虑用户使用门槛和开发成本。安保人员可能使用不同品牌手机,小程序无需考虑系统兼容性问题。
2. 技术架构设计
2.1 整体技术栈
mermaid复制graph TD
A[微信小程序] --> B[SpringBoot后端]
B --> C[MySQL数据库]
B --> D[Redis缓存]
C --> E[数据可视化看板]
2.2 关键技术选型解析
SpringBoot优势:
- 自动配置:简化SSM框架整合
- 内嵌Tomcat:直接打包成可执行JAR
- Starter依赖:快速集成MyBatis、Redis等组件
- Actuator:提供健康检查等运维端点
微信小程序关键技术点:
- 获取用户唯一标识:
wx.login+code2Session - 位置服务:
wx.getLocation - 扫码功能:
wx.scanCode - 消息订阅:异常提醒模板消息
3. 数据库设计
3.1 核心表结构
| 表名 | 字段 | 说明 |
|---|---|---|
| patrol_task | id, name, route_id, start_time, end_time | 巡逻任务主表 |
| patrol_point | id, name, location, qr_code | 巡逻点信息 |
| patrol_record | id, task_id, user_id, point_id, check_time, image_url | 打卡记录 |
| exception_report | id, record_id, type, description, status | 异常上报 |
3.2 索引优化方案
sql复制-- 巡逻记录查询优化
CREATE INDEX idx_record_task ON patrol_record(task_id);
CREATE INDEX idx_record_user ON patrol_record(user_id);
-- 空间位置查询
ALTER TABLE patrol_point ADD SPATIAL INDEX(location);
4. 核心功能实现
4.1 实时定位打卡流程
- 小程序端调用
wx.getLocation获取坐标 - 计算与目标巡逻点的距离(Haversine公式)
java复制public static double calculateDistance(double lat1, double lon1,
double lat2, double lon2) {
final int R = 6371; // 地球半径(km)
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
// 计算公式...
}
- 距离<50米时开放打卡功能
- 提交打卡记录到后端
4.2 异常上报功能设计
java复制@PostMapping("/report")
public Result reportException(
@RequestHeader("token") String token,
@RequestBody ExceptionReport report) {
// 1. 验证token获取用户信息
// 2. 保存到数据库
// 3. 触发消息通知(WebSocket或模板消息)
}
5. 开发注意事项
5.1 微信小程序限制规避
- 域名备案:所有接口必须使用HTTPS且域名备案
- 图片存储:建议使用微信临时文件或云存储
- 定位精度:安卓/iOS表现差异需做兼容
5.2 性能优化方案
- 热点数据缓存:使用Redis缓存巡逻点信息
- 分页查询:MyBatis PageHelper实现
- 连接池配置:Druid连接池参数调优
properties复制# application.properties
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
6. 项目部署方案
6.1 基础环境准备
- JDK 1.8+
- MySQL 5.7+
- Redis 5.0+
- Nginx(前端部署)
6.2 微信小程序配置
- 开发设置→服务器域名配置
- 开发管理→消息推送配置
- 体验版添加测试人员
7. 常见问题排查
7.1 定位偏差问题
- 现象:iOS定位精度差
- 解决方案:调用
wx.startLocationUpdateBackground
7.2 扫码打卡失败
- 检查要点:
- 二维码内容是否为JSON格式
- 网络请求是否带token
- 后台接口跨域配置
7.3 并发问题处理
java复制@Transactional
public void handleCheckIn(CheckInDTO dto) {
// 使用乐观锁控制并发
patrolRecordMapper.updateStatusWithVersion(
dto.getRecordId(),
dto.getVersion());
}
8. 项目扩展方向
- 智能排班系统:结合历史数据自动生成巡逻计划
- AI图像识别:使用OpenCV分析上报图片
- 物联网集成:对接门禁、摄像头等设备
- 大数据分析:使用ELK分析巡逻异常模式
经验分享:在实际部署时,建议使用阿里云ECS+Redis的组合,实测可支持500+终端并发。小程序审核需提前准备《非个人主体认证》和《类目资质》。
