springboot校园跑腿小程序设计开发
·
技术栈分析
后端技术栈
- Spring Boot:快速构建后端服务,提供RESTful API。
- Spring Security:负责用户认证和授权。
- MySQL:关系型数据库,存储用户、订单等结构化数据。
- Redis:缓存高频访问数据,如验证码、session信息。
- MyBatis/MyBatis-Plus:ORM框架,简化数据库操作。
- Swagger:API文档生成工具。
前端技术栈
- 微信小程序:原生开发或使用uni-app跨平台框架。
- WXML/WXSS:小程序页面结构和样式。
- JavaScript/TypeScript:逻辑交互实现。
- Vant Weapp:UI组件库,快速搭建界面。
其他工具
- Git:版本控制。
- Maven/Gradle:依赖管理。
- Jenkins:持续集成与部署。
- Postman:API测试。
详细功能模块
用户模块
- 注册登录:支持手机号+验证码或微信授权登录。
- 个人信息管理:修改头像、昵称、联系方式。
- 钱包功能:余额查询、充值、提现。
订单模块
- 发布订单:填写跑腿内容、报酬、取送地点。
- 订单分类:代取快递、代买商品、文件送达等。
- 订单状态:待接单、进行中、已完成、已取消。
接单模块
- 订单匹配:附近订单推送、价格筛选。
- 接单流程:抢单或平台派单。
- 实时跟踪:GPS定位、进度更新。
支付模块
- 微信支付:集成微信支付接口。
- 保证金机制:接单者需缴纳保证金。
- 结算流程:任务完成后自动结算到钱包。
评价模块
- 双向评价:用户和跑腿员互评。
- 评分系统:五星制+文字评价。
- 投诉机制:违规行为举报。
通知模块
- 系统消息:订单状态变更提醒。
- 模板消息:微信服务通知。
- 聊天功能:用户与跑腿员实时沟通。
数据库设计
用户表(user)
CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`openid` varchar(64) DEFAULT NULL COMMENT '微信openid',
`phone` varchar(20) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
`avatar` varchar(255) DEFAULT NULL,
`balance` decimal(10,2) DEFAULT '0.00',
`user_type` tinyint DEFAULT '0' COMMENT '0-普通用户 1-跑腿员',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
订单表(order)
CREATE TABLE `order` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL COMMENT '发布人ID',
`runner_id` bigint DEFAULT NULL COMMENT '接单人ID',
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
`price` decimal(10,2) NOT NULL,
`status` tinyint DEFAULT '0' COMMENT '0-待接单 1-进行中 2-已完成 3-已取消',
`from_location` json DEFAULT NULL COMMENT '取件地点',
`to_location` json DEFAULT NULL COMMENT '送达地点',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
交易记录表(transaction)
CREATE TABLE `transaction` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL,
`amount` decimal(10,2) NOT NULL,
`type` tinyint NOT NULL COMMENT '1-充值 2-消费 3-收入',
`order_id` bigint DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
评价表(review)
CREATE TABLE `review` (
`id` bigint NOT NULL AUTO_INCREMENT,
`order_id` bigint NOT NULL,
`from_user_id` bigint NOT NULL,
`to_user_id` bigint NOT NULL,
`rating` tinyint NOT NULL,
`comment` varchar(255) DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
系统测试方案
单元测试
- 使用JUnit + Mockito测试Service层逻辑。
- 示例测试用例:
@Test
public void testPlaceOrder() {
OrderDTO orderDTO = new OrderDTO();
orderDTO.setUserId(1L);
orderDTO.setTitle("代取快递");
when(userRepository.findById(1L)).thenReturn(Optional.of(new User()));
Order order = orderService.createOrder(orderDTO);
assertNotNull(order.getId());
assertEquals("代取快递", order.getTitle());
}
接口测试
- Postman自动化测试集覆盖:
- 用户登录Token获取
- 订单创建/状态变更
- 支付回调验证
- 测试指标:响应时间<500ms,错误率<0.1%
压力测试
- JMeter模拟高并发场景:
- 100并发用户持续下单
- 数据库连接池监控
- Redis缓存命中率分析
- 预期指标:TPS>200,CPU利用率<80%
安全测试
- OWASP ZAP扫描漏洞:
- SQL注入检测
- XSS脚本攻击防护
- 敏感数据加密传输
- 修复方案:参数化查询、HTML实体编码
源码结构建议
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── campus/
│ │ ├── config/ # 安全/Redis配置
│ │ ├── controller/ # API接口层
│ │ ├── dto/ # 数据传输对象
│ │ ├── entity/ # 数据库实体
│ │ ├── repository/ # DAO层
│ │ ├── service/ # 业务逻辑
│ │ └── CampusApplication.java
│ └── resources/
│ ├── mapper/ # MyBatis映射文件
│ ├── application.yml
│ └── static/ # 小程序静态资源
└── test/ # 测试代码
小程序端建议采用模块化开发,分包加载提升性能。关键点包括:
- 使用wx.getLocation获取用户坐标
- websocket实现订单状态实时推送
- 自定义组件封装公共UI元素















更多推荐




所有评论(0)