1. 项目概述
校园跑腿系统是近年来在高校中兴起的一种便捷服务模式,它通过移动互联网技术连接有需求的同学和可以提供服务的同学。基于微信小程序的校园跑腿系统设计,主要解决了以下几个实际问题:
- 校园内短距离物品代取、快递代拿的需求
- 紧急文件传递、资料代印等学习相关服务
- 食堂代买、超市代购等生活服务需求
- 其他有偿或互助性质的校园内服务
这个毕设项目采用的技术栈是微信小程序前端+SpringBoot后端,是一个典型的全栈开发项目。微信小程序提供了便捷的用户入口和良好的移动端体验,而SpringBoot后端则负责业务逻辑处理和数据存储。
2. 系统架构设计
2.1 整体架构
系统采用前后端分离的架构设计:
微信小程序前端 -> HTTP/HTTPS -> SpringBoot后端 -> MySQL数据库前端主要负责用户交互界面,后端处理业务逻辑和数据持久化,两者通过RESTful API进行通信。
2.2 技术选型分析
前端技术选型:
- 微信小程序原生开发框架
- WXML/WXSS/JavaScript
- WeUI组件库(可选)
选择微信小程序原生框架而非uni-app等跨平台方案,主要考虑:
- 项目规模适中,不需要跨平台
- 原生框架性能更好
- 微信生态集成更顺畅
后端技术选型:
- SpringBoot 2.x
- MyBatis-Plus
- MySQL 5.7+
- Redis(缓存和会话管理)
选择SpringBoot的原因:
- 简化配置,快速开发
- 丰富的starter生态
- 良好的社区支持
- 适合作为毕设项目展示技术能力
3. 核心功能模块实现
3.1 用户系统
用户系统采用微信开放能力实现快速登录:
// SpringBoot后端示例代码 @RestController @RequestMapping("/api/auth") public class AuthController { @Autowired private WeChatService weChatService; @PostMapping("/login") public Result login(@RequestBody LoginDTO dto) { // 调用微信接口获取openid String openid = weChatService.getOpenid(dto.getCode()); // 查询或创建用户 User user = userService.getOrCreateUser(openid); // 生成token String token = jwtUtil.generateToken(user); return Result.success(token); } }注意事项:
- 微信登录需要配置合法域名
- 建议使用JWT作为认证方式
- 用户信息需要加密存储
3.2 订单系统
订单系统是核心业务模块,主要流程:
- 发布订单
- 接单处理
- 订单进行中
- 订单完成
- 评价
数据库设计示例:
CREATE TABLE `order` ( `id` bigint NOT NULL AUTO_INCREMENT, `order_no` varchar(32) NOT NULL COMMENT '订单编号', `user_id` bigint NOT NULL COMMENT '发布用户ID', `runner_id` bigint DEFAULT NULL COMMENT '接单用户ID', `title` varchar(100) NOT NULL COMMENT '订单标题', `content` text COMMENT '订单详情', `price` decimal(10,2) NOT NULL COMMENT '订单价格', `status` tinyint NOT NULL DEFAULT '0' COMMENT '订单状态', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;3.3 消息通知
使用WebSocket实现实时消息通知:
@ServerEndpoint("/ws/message") @Component public class MessageWebSocket { private static final Map<Long, Session> sessions = new ConcurrentHashMap<>(); @OnOpen public void onOpen(Session session, @PathParam("userId") Long userId) { sessions.put(userId, session); } @OnMessage public void onMessage(String message, Session session) { // 处理消息 } public static void sendMessage(Long userId, String message) { Session session = sessions.get(userId); if (session != null && session.isOpen()) { session.getAsyncRemote().sendText(message); } } }4. 关键技术点解析
4.1 微信支付集成
校园跑腿系统需要集成微信支付功能,主要步骤:
- 申请微信支付商户号
- 配置支付域名
- 实现统一下单接口
- 处理支付回调
核心代码示例:
public class WeChatPayService { public Map<String, String> createPayment(Order order, String openid) { Map<String, String> params = new HashMap<>(); params.put("body", order.getTitle()); params.put("out_trade_no", order.getOrderNo()); params.put("total_fee", order.getPrice().multiply(new BigDecimal(100)).intValue() + ""); params.put("openid", openid); // 其他必要参数... // 调用微信支付统一下单接口 return weChatPayClient.unifiedOrder(params); } }注意事项:
- 金额单位为分
- 需要处理重复通知
- 做好日志记录
4.2 位置服务
跑腿服务需要位置相关功能:
- 获取用户当前位置(小程序API)
- 计算距离
- 附近订单筛选
小程序端获取位置代码:
wx.getLocation({ type: 'gcj02', success(res) { const latitude = res.latitude const longitude = res.longitude // 上传到服务器 wx.request({ url: 'https://yourdomain.com/api/location/update', method: 'POST', data: { latitude, longitude } }) } })5. 系统安全设计
5.1 接口安全
- 所有API使用HTTPS
- 敏感接口增加权限校验
- 使用JWT进行身份认证
- 关键操作记录日志
Spring Security配置示例:
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/api/auth/**").permitAll() .anyRequest().authenticated() .and() .addFilter(new JwtAuthenticationFilter(authenticationManager())); } }5.2 数据安全
- 敏感信息加密存储
- 数据库定期备份
- 防止SQL注入
- 密码使用BCrypt加密
6. 项目部署
6.1 开发环境
- JDK 1.8+
- Maven 3.6+
- MySQL 5.7+
- Redis 5.0+
- 微信开发者工具
6.2 生产部署
推荐使用Docker容器化部署:
# SpringBoot应用Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/campus-helper.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]部署命令:
docker-compose up -d7. 常见问题解决
7.1 微信登录失败
可能原因:
- 域名未备案
- AppID/AppSecret配置错误
- 服务器时间不同步
解决方案:
- 检查微信开发者平台配置
- 同步服务器时间
- 检查网络连接
7.2 支付回调问题
常见问题:
- 回调通知未收到
- 签名验证失败
- 重复通知
处理建议:
- 检查支付配置
- 实现幂等处理
- 记录完整日志
8. 项目扩展方向
- 增加信用评价体系
- 实现智能派单算法
- 接入校园一卡通支付
- 开发管理后台
- 数据分析功能
这个校园跑腿系统毕设项目涵盖了微信小程序开发、SpringBoot后端开发、数据库设计、支付集成等多个实用技术点,是一个很好的全栈开发实践项目。在实际开发过程中,建议先从核心功能入手,逐步完善细节,最后再考虑性能优化和扩展功能。