校园代取快递、外卖的跑腿需求在高校中早已成为刚需。每到饭点或快递高峰期,宿舍区与快递站之间总能看到学生们来回奔波的身影。特别是在雨天、考试周或疫情期间,这种需求更加突出。传统的解决方式无非是同学间互相帮忙,或者通过微信群临时找人,但这种方式效率低下且存在安全隐患。
我们团队开发的这套基于Android的校园跑腿代取系统,正是为了解决这些痛点而生。系统采用SpringBoot+Vue3技术栈,实现了从发单、接单到配送、支付的全流程线上化。相比市面上通用的跑腿平台,我们的解决方案有三个独特优势:
后端采用SpringBoot 2.7 + MyBatis Plus框架组合,主要基于以下考虑:
前端选用Vue3 + Vant组件库,主要优势在于:
系统分为六个核心微服务:
特别注意:各服务间通过Spring Cloud OpenFeign进行通信,所有接口必须添加JWT鉴权
校园系统的特殊性要求必须进行严格的身份验证。我们设计了三级认证体系:
技术实现要点:
java复制// 示例:教务系统验证代码片段
public boolean verifyStudent(String studentId, String password) {
String loginUrl = "https://jwc.xxx.edu.cn/login";
HttpPost request = new HttpPost(loginUrl);
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("sid", studentId));
params.add(new BasicNameValuePair("pwd", password));
request.setEntity(new UrlEncodedFormEntity(params));
try (CloseableHttpResponse response = httpClient.execute(request)) {
return response.getStatusLine().getStatusCode() == 302
&& response.getFirstHeader("Location").getValue().contains("success");
}
}
订单分配是系统的核心逻辑,我们采用多因素加权算法:
mermaid复制graph TD
A[新订单] --> B{是否加急}
B -->|是| C[优先分配给信用分>90的跑腿员]
B -->|否| D[计算距离权重]
D --> E[计算历史完成率权重]
E --> F[计算当前负载权重]
F --> G[综合排序取Top3]
G --> H[推送抢单通知]
实际代码实现时需要注意:
与校园卡系统的对接需要特别注意资金安全:
关键配置示例:
yaml复制# application-payment.yml
alipay:
app-id: 202100xxxx
gateway: https://openapi.alipay.com/gateway.do
notify-url: /api/payment/callback
campus-card:
wsdl: http://card.xxx.edu.cn/service?wsdl
merchant-code: CAMPUS_RUNNER
针对校园内网络环境复杂的特点,我们做了这些优化:
定位功能实现中的几个关键点:
我们采用Docker Swarm集群部署,主要配置:
基于Prometheus+Grafana搭建监控体系,重点监控:
告警规则示例:
yaml复制- alert: HighOrderTimeout
expr: rate(order_timeout_total[5m]) > 0.05
for: 10m
labels:
severity: warning
annotations:
summary: "高订单超时率"
description: "当前订单超时率已达{{ $value }}"
敏感数据采用分层加密策略:
系统上线三个月后的关键数据:
| 指标 | 数值 | 同比变化 |
|---|---|---|
| 注册用户 | 12,458人 | +215% |
| 日均订单量 | 1,237单 | +183% |
| 平均配送时间 | 28分钟 | -22% |
| 投诉率 | 0.87% | -41% |
从数据可以看出:
现象:跑腿员位置显示偏差达500米以上
排查过程:
解决方案:
java复制// 添加机型特定配置
if (Build.MANUFACTURER.equalsIgnoreCase("huawei")) {
mLocationOption.setNeedAddress(false);
mLocationOption.setGpsFirst(true);
}
现象:约0.3%的订单支付成功但状态未更新
排查发现:
修复方案:
根据实际运营反馈,下一步计划:
在技术架构上,我们正在评估:
这个项目给我的最大启示是:校园场景的互联网产品需要特别注重安全性与便捷性的平衡。我们通过学号认证+信用体系的设计,既保证了平台的可信度,又维持了良好的用户体验。在实际开发中,支付对账和定位精度是两个需要特别关注的难点,建议后来的开发者在这两个模块投入更多测试资源。