一、项目介绍
小柒校园是一款专为大学生打造的便捷服务平台,提供取餐、代购、代拿快递等日常跑腿服务,帮助同学们节省时间、提升校园生活效率。平台通过智能下单与实时跟踪,让服务更加透明、安全、可靠。
未来,校园跑腿将逐步扩展至二手书交易、闲置物品交换、校园互助等功能,打造集便利、交易与共享于一体的校园综合服务平台,为同学们带来更高效、丰富的校园生活体验。
项目目标:
- 搭建完整的校园多功能系统
- 基于 SmartAdmin 框架二次开发
- 提供用户端 & 跑腿员端 API
二、系统架构
三、技术选型
3.1 前端
- 基于SmartAdmin框架
- vue3+vite
- pinia全局状态管理
- TypeScript
- Ant Design Vue
- ECharts 用于数据统计
3.2 后端
- Java21
- SpringBoot3
- Sa Token
- Mybatis-plus
3.3 移动端
- uniapp (vue3版本)
- uni-ui (同时支持APP、小程序、H5)
数据库
- MySQL
- Redis
- Caffeine(本地缓存)
部署方式
- 云服务器 + 1Panel
- Docker
- Nginx
四、功能模块设计
| 角色 | 功能分类 | 功能点 |
|---|---|---|
| 管理端 | 用户管理 | 用户查询、禁用、查看记录 |
| 管理端 | 跑腿员管理 | 认证审核、状态管理、查看任务 |
| 管理端 | 订单管理 | 查看、搜索、人工处理 |
| 管理端 | 数据统计 | 订单统计、跑腿员统计 |
| 管理端 | 系统设置 | 规则配置、公告管理 |
| 用户端 | 注册登录 | 注册、登录、忘记密码 |
| 用户端 | 下单 | 发布跑腿订单 |
| 用户端 | 订单流程 | 查询、取消、查看状态 |
| 用户端 | 支付 | 模拟支付 |
| 用户端 | 通知 | 状态更新消息 |
| 用户端 | 历史订单 | 历史记录、评价 |
| 跑腿员端 | 认证 | 上传资料、审核查看 |
| 跑腿员端 | 抢单 | 可抢订单列表、抢单功能 |
| 跑腿员端 | 执行订单 | 确认取件、送达 |
| 跑腿员端 | 收益 | 收益统计、明细 |
| 跑腿员端 | 历史任务 | 任务列表、评价 |
| 跑腿员端 | 个人信息 | 修改资料、接单状态 |
五、数据库设计
5.1 用户表(user)
CREATE TABLE `tb_run_user` (
`user_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
`phone` VARCHAR(20) NOT NULL COMMENT '手机号',
`password` VARCHAR(255) NOT NULL COMMENT '密码(加密后)',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '用户状态:1=正常,0=禁用',
`avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='普通用户表';
5.2 跑腿员表(runner)
CREATE TABLE `tb_run_runner` (
`runner_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '跑腿员ID',
`user_id` BIGINT NOT NULL COMMENT '关联 user 表',
`real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名',
`student_id` VARCHAR(20) NOT NULL COMMENT '学号',
`id_card` VARCHAR(30) DEFAULT NULL COMMENT '身份证号码',
`cert_photo` VARCHAR(255) DEFAULT NULL COMMENT '认证照片(学生证/身份证)',
`cert_status` TINYINT NOT NULL DEFAULT 0 COMMENT '认证状态:0=待审核,1=通过,2=驳回',
`reject_reason` VARCHAR(255) DEFAULT NULL COMMENT '驳回原因',
`credit_score` INT DEFAULT 100 COMMENT '信誉分 0-100',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='跑腿员认证表';
5.3 管理员表(admin)
CREATE TABLE `tb_admin` (
`admin_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '管理员ID',
`username` VARCHAR(50) NOT NULL COMMENT '账号',
`password` VARCHAR(255) NOT NULL COMMENT '密码(加密)',
`role` TINYINT NOT NULL DEFAULT 1 COMMENT '角色:1=超级管理员, 2=普通管理员',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=启用, 0=禁用',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='后台管理员表';
5.4 订单表(order)
订单涉及多个枚举,此处全部标注。
CREATE TABLE `tb_run_order` (
`order_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
`user_id` BIGINT NOT NULL COMMENT '下单用户ID',
`runner_id` BIGINT DEFAULT NULL COMMENT '接单跑腿员ID',
`title` VARCHAR(100) NOT NULL COMMENT '订单标题',
`remark` VARCHAR(255) DEFAULT NULL COMMENT '订单备注',
`price` DECIMAL(10,2) NOT NULL COMMENT '订单金额',
`service_type` TINYINT NOT NULL COMMENT '服务类型:1=代取件, 2=代购买, 3=代送, 4=代排队',
`address_from` VARCHAR(255) NOT NULL COMMENT '取件/出发地点',
`address_to` VARCHAR(255) NOT NULL COMMENT '送达地点',
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态:0=待接单, 1=已接单, 2=进行中, 3=已完成, 4=用户取消, 5=管理员取消',
`pay_status` TINYINT NOT NULL DEFAULT 0 COMMENT '支付状态:0=未支付, 1=已支付(模拟)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX (`user_id`),
INDEX (`runner_id`),
INDEX (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单主表';
5.5 订单日志表(order_log)
日志表无需 update_time
CREATE TABLE `tb_run_order_log` (
`log_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
`order_id` BIGINT NOT NULL COMMENT '订单ID',
`old_status` TINYINT NOT NULL COMMENT '原订单状态:参考 order.status 的所有枚举',
`new_status` TINYINT NOT NULL COMMENT '新订单状态:参考 order.status 的所有枚举',
`remark` VARCHAR(255) DEFAULT NULL COMMENT '变更说明',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
INDEX (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单状态变更日志';
5.6 跑腿员收益表(runner_income)
用于统计收入
CREATE TABLE `tb_run_runner_income` (
`income_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '收益记录ID',
`runner_id` BIGINT NOT NULL COMMENT '跑腿员ID',
`order_id` BIGINT NOT NULL COMMENT '订单ID',
`income_amount` DECIMAL(10,2) NOT NULL COMMENT '收益金额',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收益生成时间',
INDEX (`runner_id`),
INDEX (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='跑腿员收益记录表';
5.7 消息通知表(notify)
CREATE TABLE `tb_run_notify` (
`notify_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '消息ID',
`user_id` BIGINT DEFAULT NULL COMMENT '接收用户ID(用户端消息)',
`runner_id` BIGINT DEFAULT NULL COMMENT '接收跑腿员ID(跑腿端消息)',
`order_id` BIGINT DEFAULT NULL COMMENT '关联订单',
`type` TINYINT NOT NULL COMMENT '消息类型:1=系统通知, 2=订单通知, 3=审核通知',
`content` VARCHAR(255) NOT NULL COMMENT '消息内容',
`is_read` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已读:0=未读,1=已读',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
INDEX (`user_id`),
INDEX (`runner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统通知/订单通知表';
六、需求明确
6.1 用户端模块(学生)
6.1.1 用户注册 / 登录
业务需求:
- 用户可通过手机号/学号登录
- 支持密码登录
- 支持验证码登录(可选)
数据需求:
- 用户基本信息:姓名、学号、手机号
- 认证状态(是否跑腿员)
6.1.2 发布跑腿订单
业务需求:
- 用户填写任务内容:
- 任务标题
- 任务描述
- 取件地址
- 送达地址
- 期望完成时间
- 报酬金额
- 提交后进入订单“待接单”状态
规则:
- 金额不可为 0
- 地址必须为校园内位置
6.1.3 查看订单列表
业务需求:
- 查看自己发布的订单
- 查看订单状态(待接单、进行中、完成)
- 可取消订单(状态必须为待接单)
6.1.4 消息提醒
- 接收到跑腿员接单、订单完成等通知
6.2 跑腿员端模块
6.2.1 跑腿员申请认证
业务需求:
- 用户填写真实姓名、学号、身份证、学生证照片
- 上传后进入后台审核
6.2.2 跑腿大厅(抢单功能)
业务需求:
- 查看所有“待接单”订单
- 跑腿员可执行“抢单”
- 成功后进入“进行中”状态
抢单规则:
- 一个订单只能被一个跑腿员抢到
- 跑腿员不能抢自己发布的订单
6.2.3 我的任务
业务需求:
- 查看正在执行的任务
- 完成后点击“完成订单”
- 上传送达证明(可选)
6.3 后台管理端
6.3.1 管理员登录
- 账号密码登录
- Token 鉴权
- 拥有最高权限
6.3.2 用户管理
- 查看所有用户资料
- 搜索:学号、手机号
- 冻结 / 启用用户
- 查看用户发布记录
6.3.3 跑腿员审核模块
- 审核跑腿员申请
- 查看证件信息
- 通过/拒绝
- 管理跑腿员状态
6.3.4 订单管理
- 查看所有订单
- 按状态筛选
- 修改订单状态(异常处理)
- 查看订单日志
6.3.5 Dashboard 数据统计
- 今日订单量
- 跑腿员人数
- 用户人数
- 月度订单趋势折线图
- 校园区域热力图(可选)
6.4 系统模块
6.4.1 权限系统
- 后台管理员使用 RBAC
- 控制 API 访问权限
6.4.2 日志系统
- 操作日志
- 登录日志
- 订单状态变更日志
6.4.3 通知系统
- 订单状态推送
- 系统消息
欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1701220998@qq.com