小柒校园-需求明确与项目架构

一、项目介绍

小柒校园是一款专为大学生打造的便捷服务平台,提供取餐、代购、代拿快递等日常跑腿服务,帮助同学们节省时间、提升校园生活效率。平台通过智能下单与实时跟踪,让服务更加透明、安全、可靠。

未来,校园跑腿将逐步扩展至二手书交易、闲置物品交换、校园互助等功能,打造集便利、交易与共享于一体的校园综合服务平台,为同学们带来更高效、丰富的校园生活体验。

项目目标:

  • 搭建完整的校园多功能系统
  • 基于 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
导航页 GitHub