
1. 项目背景与意义随着城市化进程加快公园河道的水环境治理与生态保护日益受到重视。传统巡河工作依赖人工巡查、纸质记录存在巡查效率低、问题上报不及时、数据难以追溯等痛点。智慧巡河小程序以移动互联网和信息化手段赋能河道巡护工作能够实现巡查任务数字化、问题上报实时化、处置流程闭环化有效提升公园河道管理的精细化水平。本项目以公园河道巡护为业务场景设计并实现一款智慧巡河小程序覆盖巡河任务派发、现场巡查记录、问题拍照上报、整改跟踪闭环等核心环节为河道管理人员提供便捷高效的移动工作平台。2. 技术栈选型本系统采用前后端分离架构前端以微信小程序为载体后端提供 RESTful API 服务整体技术栈如下层次技术选型说明前端框架微信小程序原生框架 WXML / WXSS / JS轻量、易上手适合快速迭代UI 组件库Vant Weapp提供表单、弹窗、上传等常用组件后端框架Spring Boot 2.7成熟稳定生态丰富持久层MyBatis-Plus简化 CRUD 开发内置分页插件数据库MySQL 8.0存储用户、任务、巡查记录等业务数据缓存Redis缓存登录态、热点数据文件存储阿里云 OSS存储巡查照片、问题附件接口文档Swagger / Knife4j自动生成在线接口文档3. 系统总体设计3.1 功能模块划分智慧巡河小程序主要包含以下功能模块用户登录与权限管理支持微信授权登录按角色区分巡河员、管理员等权限。巡河任务管理管理员创建并派发巡河任务巡河员查看待办任务。现场巡查记录巡河员按任务路线巡查记录巡查时间、位置、河道状况。问题上报发现河道污染、设施损坏等问题时拍照上传并填写问题描述。整改跟踪管理员查看上报问题派发整改任务跟踪整改进度并闭环归档。数据统计按时间、区域统计巡查次数、问题数量、整改完成率等指标。3.2 数据库设计核心数据表包括用户表、巡河任务表、巡查记录表、问题上报表和整改记录表。以下为问题上报表的主要字段设计CREATE TABLE patrol_issue ( id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键, task_id bigint(20) DEFAULT NULL COMMENT 巡河任务ID, reporter_id bigint(20) DEFAULT NULL COMMENT 上报人ID, issue_type varchar(32) DEFAULT NULL COMMENT 问题类型污染/设施/绿化/其他, description varchar(500) DEFAULT NULL COMMENT 问题描述, photo_urls varchar(1000) DEFAULT NULL COMMENT 照片URL多个用逗号分隔, longitude decimal(10,6) DEFAULT NULL COMMENT 经度, latitude decimal(10,6) DEFAULT NULL COMMENT 纬度, status tinyint(4) DEFAULT 0 COMMENT 状态0待处理/1整改中/2已闭环, create_time datetime DEFAULT NULL COMMENT 上报时间, update_time datetime DEFAULT NULL COMMENT 更新时间, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT问题上报表;4. 核心功能实现4.1 微信登录与鉴权小程序端通过wx.login获取临时凭证 code后端调用微信接口换取 openid并生成自定义登录态 token 返回给前端。核心代码如下RestController RequestMapping(/api/auth) public class AuthController { Autowired private AuthService authService; PostMapping(/login) public ResultLoginVO login(RequestBody LoginDTO dto) { String openid authService.getOpenid(dto.getCode()); String token authService.createToken(openid); return Result.success(new LoginVO(token, openid)); } }4.2 巡河任务派发管理员在小程序管理端创建巡河任务指定巡河员、巡查区域和截止时间。后端保存任务并推送通知。核心代码如下Service public class PatrolTaskServiceImpl implements PatrolTaskService { Autowired private PatrolTaskMapper taskMapper; Override Transactional(rollbackFor Exception.class) public void createTask(PatrolTask task) { task.setStatus(0); task.setCreateTime(new Date()); taskMapper.insert(task); // 推送通知给指定巡河员 notifyPatroller(task); } private void notifyPatroller(PatrolTask task) { // 调用微信订阅消息或站内信接口 log.info(已向巡河员推送任务通知任务ID{}, task.getId()); } }4.3 问题拍照上报巡河员在巡查过程中发现问题可调用小程序相机拍照并上传至 OSS同时记录地理位置。前端核心代码如下Page({ data: { photos: [], description: , location: null }, onLoad() { this.getLocation(); }, getLocation() { wx.getLocation({ type: gcj02, success: (res) { this.setData({ location: res }); } }); }, choosePhoto() { wx.chooseMedia({ count: 6, mediaType: [image], success: (res) { this.uploadPhotos(res.tempFiles); } }); }, uploadPhotos(files) { const tasks files.map(file this.uploadOne(file.tempFilePath)); Promise.all(tasks).then(urls { this.setData({ photos: this.data.photos.concat(urls) }); }); }, uploadOne(filePath) { return new Promise((resolve, reject) { wx.uploadFile({ url: https://api.example.com/api/upload, filePath: filePath, name: file, success: (res) { const data JSON.parse(res.data); resolve(data.url); }, fail: reject }); }); }, submitIssue() { const { photos, description, location } this.data; wx.request({ url: https://api.example.com/api/issue/report, method: POST, data: { photos, description, longitude: location.longitude, latitude: location.latitude }, success: () { wx.showToast({ title: 上报成功, icon: success }); } }); } });4.4 问题整改闭环管理员查看上报问题后可派发整改任务并跟踪进度。后端提供问题列表查询和状态流转接口核心代码如下Service public class IssueServiceImpl implements IssueService { Autowired private IssueMapper issueMapper; Override public PageResultIssueVO queryIssuePage(IssueQuery query) { PageIssue page new Page(query.getPageNum(), query.getPageSize()); LambdaQueryWrapperIssue wrapper new LambdaQueryWrapper() .eq(query.getStatus() ! null, Issue::getStatus, query.getStatus()) .orderByDesc(Issue::getCreateTime); PageIssue result issueMapper.selectPage(page, wrapper); return PageResult.of(result.getRecords(), result.getTotal()); } Override Transactional(rollbackFor Exception.class) public void updateStatus(Long issueId, Integer status) { Issue issue new Issue(); issue.setId(issueId); issue.setStatus(status); issue.setUpdateTime(new Date()); issueMapper.updateById(issue); } }5. 系统测试与部署系统开发完成后对登录鉴权、任务派发、问题上报、整改闭环等核心流程进行了功能测试并针对高并发场景进行了基础性能验证。测试结果表明各模块功能符合预期接口响应时间满足日常使用需求。部署方面后端服务打包为 Docker 镜像部署在云服务器上数据库使用云数据库 MySQL小程序端通过微信公众平台提交审核后发布上线。6. 总结与展望本文设计并实现了基于公园河道巡护的智慧巡河小程序通过数字化手段提升了河道巡护工作的效率和管理水平。系统实现了巡河任务管理、现场巡查记录、问题拍照上报、整改跟踪闭环等核心功能具有良好的实用价值。后续可从以下方向持续优化一是引入图像识别技术自动识别河道漂浮物、水质异常等问题二是结合 IoT 传感器实现水位、水质等指标的实时监测三是完善数据分析能力为河道治理决策提供数据支撑。