技术栈分析

后端技术栈

  • 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元素

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐