# 翼云Hub · 产品文档(PRD) > **Slogan**:全链路低空体系聚合,打破供需两端信息壁垒。 > **版本 v1.0** · 待开发 > **主色**:`#5E46F6`(深紫主色)/ `#7C6AF8`(辅)/ `#F2EFFE`(底)/ `#FFFFFF`(卡)/ `#F59E0B`(金色点缀) > **导航**:4 个底部一级 Tab(**首页 / 任务中心 / 研学与课程 / 个人中心**) > **参考原型**:图2(首页结构)· 图3(个人中心结构)· 图1(功能菜单来源) --- ## 0. 修订记录 | 版本 | 日期 | 主要变更 | |------|------|----------| | v1.0 | 待开发 | 初版产品需求文档,以图 1 功能菜单为蓝本,4 Tab 结构(首页 / 任务中心 / 研学与课程 / 个人中心) | --- ## 1. 背景与机会 ### 1.1 背景 国内民用无人机产业进入"持证合规 + 商业落地"双驱动的爆发期。CAAC(民用无人驾驶航空器综合管理平台)2024 年起强制要求超 250g 机型实名注册、操控员持证;植保、巡检、航拍、表演四大场景的商业订单快速放量,但供需两端存在明显错配。 - **需求侧(商家/客户)**:临时用机、航拍交付、植保作业、应急巡检,缺可信飞手,缺合同/合规保障 - **供给侧(飞手)**:持证后无稳定接单渠道,资质难被看见 - **服务端(培训机构、维修点、保险公司、租赁商)**:缺精准流量 行业缺少一个"**开放聚合 + 资质可信 + 交易闭环**"的信息平台。 ### 1.2 目标(北极星指标) | 阶段 | 目标 | 北极星指标 | |------|------|------------| | M3 | 上线跑通 | 认证飞手数 ≥ 3,000;认证商家数 ≥ 500 | | M6 | 双边活跃 | 月成交任务数 ≥ 2,000;月活飞手 ≥ 5,000 | | M12 | 行业心智 | CAAC 报名转化率行业第一;"找飞手"心智占位 | ### 1.3 用户角色 | 角色 | 占比 | 核心诉求 | 关键场景 | |------|------|----------|----------| | **C1 飞手** | 50% | 接单变现、资质展示、考证指引 | 任务中心接单、飞手中心、刷题 | | **C2 商家/客户** | 30% | 发布需求、找可信飞手、合规交付 | 任务中心发单、查附近、CAAC 报名 | | **C3 培训机构** | 10% | 招生、课程展示、品牌曝光 | 商家认证、题库合作 | | **C4 服务商** | 10% | 流量、订单分发 | 商家认证 | --- ## 2. 导航与功能架构 ### 2.1 底部 Tab(4 个) | 序号 | Tab | 定位 | 核心目的 | |------|-----|------|----------| | ① | **首页** | 流量分发中枢 | 黄金位 + 9 宫格 + 供需双广场 + 优质任务 1 条 | | ② | **任务中心** | 交易主战场 | 任务列表 + 多维度筛选 + 抢单 | | ③ | **研学与课程** | 内容/服务留存 | 课程展示 + 预约 | | ④ | **个人中心** | 身份与认证 | 我的任务 + 飞手/商家双身份认证 + 推广 | ### 2.2 全量功能清单(按图 1 + 业务扩展) | 一级 Tab | 二级入口 | 三级 / 页面 | 价值 | 优先级 | |----------|----------|-------------|------|--------| | **首页** | 城市定位 | 定位选择 | LBS 入口 | P0 | | | 顶部轮播 | CAAC 报名 / 招商 / 表演 | 运营位 | P0 | | | 公告条 | 最新政策 / 新闻 | 内容置顶 | P0 | | | 9 宫格金刚区(详见 2.3) | 9 个入口 | 流量分发 | P0 | | | **供需双广场**(独立菜单) | 商家发单 · 飞手接单 | **核心交易入口** | **P0** | | | **优质任务**(仅 1 张) | 首页露出 1 张顶部任务 | 转化错点 | P0 | | **任务中心** | 筛选按钮 | 推荐 / 附近 / 高价 / 长期 | 排序入口 | P0 | | | **⚙ 筛选按钮** | 7 组 / 55 个筛选项(右侧抽屉) | 精准筛选 | P0 | | | 任务列表(横向大卡) | 1 优质 + 多普通任务 | 抢单入口 | P0 | | | 任务详情 | 详情页 + IM + 接单 | 成交 | P0 | | **研学与课程** | 分类 Tab | 全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导 | 内容导航 | P0 | | | 课程列表 | 卡片列表(6门真实案例课程) | 内容/服务留存 | **P0** | | | 课程详情 | 课程信息 + 预约入口 | 深度了解 | P0 | | | 研学预约 | 填写信息提交预约 | 核心转化 | **P0** | | **个人中心** | 我的任务(3 态) | 待接单 / 进行中 / 已完成 | 任务管理 | **P0** | | | 飞手推广 | 老带新得积分 | 拉新 | P0 | | | 认证与工具 | 飞手认证 / 商家认证 / 我的发布 / 实名认证 | **身份门槛** | **P0** | | | | 飞手中心 / 商家中心 | 身份聚合 | P0 | ### 2.3 首页 9 宫格金刚区(9 个入口) | # | 入口 | 跳转 | 备注 | |---|------|------|------| | 1 | CAAC 报名 | 报名页 | 强引流,潜在客转化 | | 2 | 无人机表演 | 表演列表 | 高客单 | | 3 | 实力商家 | 商家列表 | 信任锚点 | | 4 | 本地飞手 | 飞手列表 | 信任锚点 | | 5 | 培训考试 | 培训模块 | 留存 + 引流 | | 6 | 发布任务 | 发布任务页(需商家认证) | 商家侧入口 | | 7 | 我要接单 | 任务中心(需飞手认证) | 飞手侧入口 | | 8 | 飞手推广 | 推广页(带 HOT 角标) | 拉新 | | 9 | **滴滴打无人机** | 调度页(类打车模式) | **新功能·核心亮点** | --- ## 3. 功能关联分析(核心) ### 3.1 三大 Tab 关联总览 ``` ┌──────────────────────────────────────────────────────────┐ │ 首页(流量分发中枢) │ │ 轮播位 ─→ 强运营:CAAC报名 / 表演 / 招商 │ │ 公告 ─→ 政策更新、行业新闻(点击跳行业动态详情) │ │ 金刚区(9 宫格) ─→ 功能分发 │ │ ├─ CAAC报名 ──→ 飞手认证 ──→ 训练题库 │ │ ├─ 无人机表演 ──→ 任务中心(高客单任务) │ │ ├─ 实力商家 ──→ 商家认证入口(个人中心) │ │ ├─ 本地飞手 ──→ 飞手认证入口(个人中心) │ │ ├─ 培训考试 ──→ 附近商家 + 题库刷题 │ │ ├─ 发布任务 ──→ 商家认证校验(个人中心) │ │ └─ 我要接单 ──→ 飞手认证校验(个人中心) │ └──────────────────────────────────────────────────────────┘ │ │ ▼ ▼ 研学与课程 个人中心 · 身份 (内容留存) 飞手 ←─→ 商家 │ │ └──────────┬────────────┘ ▼ ┌─────────────────┐ │ 任务中心 │ │ 商家发单/飞手接单│ │ (需对应身份认证)│ └─────────────────┘ ``` ### 3.2 关键功能关联(10 条) | # | 触发点 | 关联点 | 业务价值 | |---|--------|--------|----------| | 1 | CAAC 报名点击 | → 飞手认证引导页 | 流量 → 认证漏斗 | | 2 | 实力商家 / 本地飞手 | → 详情页 + IM + 收藏 | 信任 → 咨询 → 成交 | | 3 | 培训考试题库 | → 错题 → 课程推荐 | 学习 → 报名 → 机构 | | 4 | 商家发单 | → 校验商家认证状态 | 未认证阻断 + 引导 | | 5 | 飞手接单 | → 校验飞手认证 + 保险 | 风控前置 | | 6 | 任务中心"优质任务"标签 | → 付费订阅 / 会员 | GMV 提升 | | 7 | 飞手推广 | → 老带新积分 | 拉新 | | 8 | 附近商家 | → 定位授权 + 商家详情 | LBS 转化 | | 9 | 研学课程详情 | → 相关任务 / 商家挂载 | 内容 → 交易 | | 11 | 滴滴打无人机 | → 无人机飞手网络 → 配送任务派单 | 新增核心功能 | | 10 | 资质中心 | → 过期提醒 + 续期 | 长期留存 | ### 3.3 首页信息流(自上而下) ``` 1. 状态栏 2. 城市定位(如:全国 / 上海)+ 消息/设置 3. 轮播图(CAAC 报名 / 招商 / 表演) 4. 公告条(最新政策 / 新闻) 5. 9 宫格金刚区(9 个入口,详见 2.3) 6. 供需双广场(独立菜单 · 仿图 1) 左卡:📤 商家发单 │ 右卡:🛩 飞手接单 7. 滴滴打无人机(同城即时配送) 地图动画示意(无人机飞手轨迹) 配送流程 4 步:骑手取货 → 无人机起飞 → 配送中 → 预计到达 底部快捷下单栏:30 分钟必达 · 支持紧急件 8. 研学体系(首页展示课程 · 2~3 张横向卡) ① [两天一晚世园无人机研学课程] ¥1,388/期 ② [无人机技能进阶营(3-5天)] ¥2,680/期 ③ [鄂尔多斯雏鹰计划] ¥3,200/期 ``` ### 3.4 任务中心 Tab ``` 顶部筛选按钮栏: [⚙ 筛选▾] [📍 附近] ← 推荐/高价/长期 已合并到筛选面板 点击 [⚙ 筛选] → 右侧抽屉式筛选面板(7 组 / 55 个筛选项): · 任务分类(7) 全部 / 植保 / 航拍 / 巡检 / 表演 / 吊运 / 测绘 · 任务状态(5) 全部 / 待接单 / 已接单 / 执行中 / 已完成 · 价格预算(5+输入)不限 / 0-3千 / 3-10千 / 1-5万 / 5万以上 + 自定义 · 所在地区(9) 全国 + 8 省市 · 人员数量(5) 不限 / 1人 / 2人 / 3-5人 / 5人以上 · 发布时间(5) 全部 / 今天 / 3天内 / 本周内 / 本月内 · 其他筛选(5) 优质任务 / 含飞手险 / 长期合作 / 急单 / 团队单 主体任务卡(仿图 1 横向大卡): · 头部:标签(分类 + 优质 + 状态)+ 地点 · 标题:粗体任务名 · 左图右信息卡:地点 / 人数 / 时间 · 底部:价格(左侧大字号)+ 操作按钮(查看附近飞手 / 去抢单) · 描述:飞手险 + 任务详情(实景文字) 优质任务强化(仅首卡): · 金色边框 + 米黄渐变背景 + 金色 ★ 徽标 · 金色价格 + 金色 CTA 按钮 · 右上角金色光晕 ``` ### 3.5 滴滴打无人机 Tab(独立 Tab) > 核心定位:同城即时配送平台,配送端为无人机(类比美团/闪送,骑手换无人机) ``` 核心业务流程: 用户下单 → 系统派单给附近无人机 → 无人机取货起飞 → 配送中(实时轨迹)→ 送达 功能清单: · 一键下单:填写取货/收货地址 + 物品重量/类型 → 生成订单 · 配送地图:无人机轨迹实时展示(起飞点→配送中→到达) · 配送流程:4 步追踪(骑手取货 / 无人机起飞 / 配送中 / 预计到达) · 计价规则:按距离 + 重量 + 时效(普通件/加急件) · 配送范围:同城 30 分钟必达,支持紧急件 · 飞手/商家入驻:认证后接入配送网络 展示 4 步配送流程示例(首页版): ① ✓ 骑手取货 09:14 ② ✓ 无人机起飞 09:16 [T100 起飞] ③ 🚁 配送中 09:17 [飞行高度 120m · 时速 60km/h] ④ ◎ 预计到达 09:25 [送货上门] 底部下单栏:30 分钟内送达 · 支持紧急件 [立即下单] ``` ### 3.6 研学与课程 Tab ``` 分类 Tab:全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导 课程卡片字段: · 标签(热门/推荐/新开)+ 分类标签 + 对象年龄 · 课程名 + 地点 + 时长 · 课程亮点(3项展开) · 价格 + [立即预约] 按钮 展示 6 门真实课程案例: ① 两天一晚世园无人机研学课程(北京)¥1,388/期 [热门·青少年·认知启蒙] ② 无人机技能进阶营(3-5天)¥2,680/期 [技能进阶·初中生] ③ 鄂尔多斯科技馆「雏鹰计划」(8天16课)¥3,200 [创新应用·高中生] ④ 「越州蒲公英计划」青少年无人机研学(绍兴)¥680 [竞赛辅导·青少年] ⑤ 「智趣少年营」无人机兴趣课程(社区)¥380 [趣味科普·零基础] ⑥ 「小小农发人」无人机农业研学之旅(简阳)¥280 [农业应用·亲子] 预约交互:[立即预约] → 弹出预约表单(姓名/手机/人数/备注)→ 提交成功提示 ``` ### 3.6 个人中心信息流(自上而下) ``` 1. 顶部渐变区(无右上角图标): 👤 头像 + 登录/注册按钮 2. 我的任务(3 态): [📋 待接单 2] [🛩 进行中 1] [✓ 已完成] 3. 飞手推广 Banner: 📢 邀请飞手认证 · 认证得积分 · 积分可提现 [去推广 ›] 4. 认证与工具: 上排 4:[飞手认证] [商家认证] [我的发布] [实名认证] 下排 2:[🏆飞手中心] [🏬商家中心] ``` > ❌ 已删除模块:我的服务(优惠券/商家发货/分销绑定/收货地址)、信息完善、飞手资质、商家资质、功能关联导览、个人中心右上角 3 图标(App/消息/设置)。 --- ## 4. 核心流程 ### 4.1 飞手入驻 注册 / 微信一键登录 → 飞手认证(上传 CAAC 执照 + 身份证 + 机型)→ 审核(1 工作日)→ 通过 → 进入任务中心接单 ### 4.2 商家发单 注册 → 商家认证(营业执照 + 法人身份证 + 经营范围)→ 审核 → 通过 → 任务中心 → 发布任务(类型 / 地点 / 时间 / 预算 / 机型要求)→ 飞手接单 → 双方 IM 确认 → 线下执行 → 平台评价 → 抽佣结算 ### 4.3 任务状态机 ``` 待接单 → 已接单(待执行)→ 执行中 → 待验收 → 已完成 ↓ 异常:取消 / 申诉 / 退款 ``` ### 4.4 认证状态机 ``` 未认证 → 资料上传中 → 审核中(≤24h)→ 已认证(有效 1 年)→ 即将过期(30 天)→ 过期 ↓ 续期申请 ``` ### 4.5 筛选交互流程 点击 [⚙ 筛选] → 右侧抽屉滑入 → 7 组筛选项可点击切换 → 自定义价格输入 → [重置全部] 或 [确认筛选 (12)] → 关闭抽屉 → 列表刷新 + 提示"筛选已应用" --- ## 5. 信息架构 ### 5.1 页面清单(28 个) | 模块 | 页面 | |------|------| | 通用 | 启动页、登录/注册、消息中心、定位选择 | | 首页 | 首页、新闻列表、新闻详情、CAAC 报名、无人机表演列表 / 详情 | | 商家 / 飞手 | 实力商家列表 / 详情、本地飞手列表 / 详情 | | 培训 | 培训考试首页、附近商家(培训)、题库刷题、错题本 | | 任务中心 | 任务中心首页、发布任务、我要接单、任务详情、任务管理、筛选面板 | | 研学与课程 | 列表(全部 / 认知启蒙 / 技能进阶 / 创新应用 / 竞赛辅导)、详情、预约 | | 我的 | 我的首页(任务 3 态)、飞手推广、飞手认证、商家认证、我的发布、实名认证、飞手中心、商家中心、关于我们 | ### 5.2 底部 Tab(4 个 · 按图 1 一级菜单) - **首页**:流量分发 - **任务中心**:核心交易(独立 Tab · 必到) - **行业动态**:资讯流 - **个人中心**:身份与认证 > 与图 1 一级菜单对应关系:图 1 的"首页" = 本文档的首页 + 任务中心(交易功能下沉到 Tab);图 1 的"行业动态" = 研学与课程 Tab;图 1 的"个人中心" = 同名 Tab。 --- ## 6. UI 规范 ### 6.1 色彩系统 | 用途 | 颜色 | 备注 | |------|------|------| | **主色** | **`#5E46F6`** = `rgb(94,70,246)` | 品牌色 · 按钮 / Tag / 强调 / Tab 选中 / 阴影 | | 辅助紫 | `#7C6AF8` | 次级按钮、渐变起点 | | 浅紫底 | `#F2EFFE` | 页面背景、Tab 浅态 | | 卡片白 | `#FFFFFF` | 内容卡 | | 文字主 | `#1A1730` | 标题 | | 文字次 | `#5E5870` | 描述 | | 文字弱 | `#9D97AE` | 提示 | | 成功 | `#22C55E` | 认证通过 | | 警告 | `#F59E0B` | 即将过期 | | 错误 | `#EF4444` | 失败 | | **金色点缀** | **`#F59E0B`** | **优质任务标签 / 价格 / CTA / 边框** | ### 6.2 字体 - iOS:PingFang SC - Android:系统默认 - 字号阶梯:11 / 12 / 13 / 14 / 15 / 17 / 20 / 24 / 32 ### 6.3 圆角 / 阴影 - 卡圆角:12-16 px - 按钮圆角:8-14 px - 头像圆角:50% - 卡阴影:`0 2px 12px rgba(94,70,246,0.10)` ——`--shadow` - 任务中心卡阴影:`0 4px 16px rgba(94,70,246,0.12)` ——`--shadow-md` - 大阴影(轮播 / Banner):`0 8px 24px rgba(94,70,246,0.18)` ——`--shadow-lg` - 优质任务金色阴影:`0 6px 20px rgba(245,158,11,0.22)` --- ## 7. 关键指标 | 指标 | 目标(M3) | 监控位 | |------|------------|--------| | CAAC 报名点击 → 提交转化率 | ≥ 35% | 首页轮播点击 | | 飞手认证完成率 | ≥ 60% | 引导页漏斗 | | 任务中心点击率 | ≥ 50% | 首页"供需双广场" + "优质任务" | | 优质任务点击 → 接单 | ≥ 20% | 任务中心首卡 | | 任务平均成交时长 | ≤ 4h | 任务详情 | | 7 日留存 | ≥ 30% | 启动埋点 | | 研学与课程 Tab PV | 首页 PV 的 30% | Tab 切换埋点 | | 筛选面板使用率 | ≥ 15% | 任务中心 Tab | --- ## 8. 风险与对策 | 风险 | 等级 | 对策 | |------|------|------| | 飞手资质造假 | 高 | 接入 CAAC 接口核验执照真伪 + 履约保证金 | | 商家拖欠 / 跑单 | 高 | 平台担保支付 + 评价 + 黑名单 | | 飞手人身安全 | 中 | 保险合作 + 紧急 SOS 按钮 + 行程共享 | | 监管政策变化 | 中 | 法务对接民航局,配置审核人力 | | 冷启动供需 | 中 | 地推:先与 3-5 家培训机构、2-3 个无人机协会合作 | | 优质任务供给不足 | 中 | 平台补贴 + 头部商家 BD | | 首页任务中心被弱化 | 中 | 顶部"优质任务"金色强化 + 供需双广场独立菜单导流 | | 低空配送合规(飞行审批/空域限制) | 高 | 对接 UOM 平台获取飞行许可;设置电子围栏自动拦截禁飞区订单 | | 配送延误/事故(天气/机械故障) | 中 | 无人机状态实时监控;天气预警自动暂停;备用机调度机制 | --- ## 9. 版本规划 | 版本 | 时间 | 内容 | |------|------|------| | v1.0 | 待开发 | 首页 + 任务中心 + 研学与课程 + 个人中心,4 Tab 完整功能 | | v2.0 | M3 | 培训题库 + 保险合作 + 智能匹配 | | v3.0 | M6+ | 行业 SaaS + AR 展示 + 地图找飞手 | --- ## 10. 附录:与原图功能对照表 ### 10.1 一级菜单对照 | 图 1 一级菜单 | 本文档 Tab | 关键二级 | |--------------|-----------|----------| | 首页 | **首页 + 任务中心** | 9 宫格 + 供需双广场 + 滴滴打无人机 + 研学体系 | | 行业动态 | **研学与课程** | 列表 + 详情 + 预约(6 门课程) | | 个人中心 | **个人中心** | 任务 3 态 + 飞手 / 商家双身份认证 + 推广 | ### 10.2 二级菜单对照 | 图 1 二级菜单 | 本文档对应 | 实现位置 | |--------------|------------|----------| | 新闻咨询 | ✓ | 首页轮播 + 公告(研学与课程内容) | | CAAC 报名 | ✓ | 首页 9 宫格 #1 + 独立页 | | 无人机表演 | ✓ | 首页 9 宫格 #2 + 独立板块 | | 实力商家 | ✓ | 首页 9 宫格 #3 + 商家列表 | | 本地飞手 | ✓ | 首页 9 宫格 #4 + 飞手列表 | | 培训考试 | ✓ | 首页 9 宫格 #5 + 培训模块 | | **供需双广场** | ✓(**独立菜单**) | 首页 6 区(左:商家发单 / 右:飞手接单) | | **优质任务** | ✓ | 首页 7 区(仅 1 张金色强化卡)+ 任务中心首卡 | | 信息完善 | ❌(已删除) | 个人中心(合并到飞手 / 商家认证流程中) | | 飞手认证 | ✓ | 个人中心「认证与工具」上排 #1 | | 飞手资质中心 | ❌(已删除) | 资质合并到飞手认证页面 | | 商家认证 | ✓ | 个人中心「认证与工具」上排 #2 | | 商家资质中心 | ❌(已删除) | 资质合并到商家认证页面 | | 关于我们 | ✓ | 个人中心底部 | --- ## 11. 数据库设计(DDL) > 数据库类型:MySQL 8.0 > 字符集:`utf8mb4` / 排序规则:`utf8mb4_unicode_ci` > 所有表均含 `created_at` / `updated_at` 通用字段;主键均使用 `BIGINT` 自增;软删除用 `deleted_at` --- ### 11.1 公告表 `announcement` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | title | VARCHAR(100) | 公告标题 | NOT NULL | | content | TEXT | 公告正文 | | | valid_from | DATETIME | 生效开始时间 | | | valid_to | DATETIME | 生效结束时间 | | | status | TINYINT | 状态:0隐藏 1显示 | DEFAULT 1 | | sort_order | INT | 排序,越小越靠前 | DEFAULT 0 | | publisher_id | BIGINT | 发布人ID(关联user.id) | | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE announcement ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', title VARCHAR(100) NOT NULL COMMENT '公告标题', content TEXT COMMENT '公告正文', valid_from DATETIME COMMENT '生效开始时间', valid_to DATETIME COMMENT '生效结束时间', status TINYINT DEFAULT 1 COMMENT '状态:0隐藏 1显示', sort_order INT DEFAULT 0 COMMENT '排序', publisher_id BIGINT COMMENT '发布人ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', INDEX idx_status_sort (status, sort_order), INDEX idx_valid_period (valid_from, valid_to) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表'; ``` --- ### 11.2 任务表 `task` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | task_no | VARCHAR(32) | 任务编号(全局唯一) | UNIQUE | | name | VARCHAR(100) | 任务名称 | NOT NULL | | type | VARCHAR(20) | 任务类型:植保/吊运/航拍/巡检/清洗/表演/测绘 | NOT NULL | | province | VARCHAR(20) | 省份 | | | city | VARCHAR(20) | 城市 | | | district | VARCHAR(20) | 区县 | | | address | VARCHAR(200) | 详细地址 | | | latitude | DECIMAL(10,6) | 纬度坐标 | | | longitude | DECIMAL(10,6) | 经度坐标 | | | scene_images | JSON | 作业场景图(file_id数组) | | | required_count | INT | 需求人数 | DEFAULT 1 | | start_time | DATETIME | 开始时间 | NOT NULL | | end_time | DATETIME | 结束时间 | | | reward | DECIMAL(10,2) | 报酬(元) | NOT NULL | | insurance_require | JSON | 保险要求:三者险/飞手险/机身险 | | | contact_name | VARCHAR(50) | 联系人姓名 | | | contact_phone | VARCHAR(20) | 联系电话 | NOT NULL | | remark | TEXT | 备注 | | | status | TINYINT | 状态:0草稿 1待接单 2已接单 3执行中 4已完成 5已取消 | DEFAULT 0 | | is_premium | TINYINT | 是否优质任务:0否 1是 | DEFAULT 0 | | premium_cost | INT | 优质任务积分消耗 | DEFAULT 0 | | publisher_id | BIGINT | 发布人ID(关联user.id) | NOT NULL | | accepted_pilot_id | BIGINT | 接单飞手ID(关联pilot.id) | | | platform_fee | DECIMAL(10,2) | 平台服务费 | DEFAULT 0.00 | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE task ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', task_no VARCHAR(32) NOT NULL COMMENT '任务编号(全局唯一)', name VARCHAR(100) NOT NULL COMMENT '任务名称', type VARCHAR(20) NOT NULL COMMENT '任务类型:植保/吊运/航拍/巡检/清洗/表演/测绘', province VARCHAR(20) COMMENT '省份', city VARCHAR(20) COMMENT '城市', district VARCHAR(20) COMMENT '区县', address VARCHAR(200) COMMENT '详细地址', latitude DECIMAL(10,6) COMMENT '纬度坐标', longitude DECIMAL(10,6) COMMENT '经度坐标', scene_images JSON COMMENT '作业场景图(file_id数组)', required_count INT DEFAULT 1 COMMENT '需求人数', start_time DATETIME NOT NULL COMMENT '开始时间', end_time DATETIME COMMENT '结束时间', reward DECIMAL(10,2) NOT NULL COMMENT '报酬(元)', insurance_require JSON COMMENT '保险要求:三者险/飞手险/机身险', contact_name VARCHAR(50) COMMENT '联系人姓名', contact_phone VARCHAR(20) NOT NULL COMMENT '联系电话', remark TEXT COMMENT '备注', status TINYINT DEFAULT 0 COMMENT '状态:0草稿 1待接单 2已接单 3执行中 4已完成 5已取消', is_premium TINYINT DEFAULT 0 COMMENT '是否优质任务:0否 1是', premium_cost INT DEFAULT 0 COMMENT '优质任务积分消耗', publisher_id BIGINT NOT NULL COMMENT '发布人ID', accepted_pilot_id BIGINT COMMENT '接单飞手ID', platform_fee DECIMAL(10,2) DEFAULT 0.00 COMMENT '平台服务费', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_task_no (task_no), INDEX idx_type_status (type, status), INDEX idx_city_status (city, status), INDEX idx_publisher (publisher_id), INDEX idx_pilot (accepted_pilot_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务表'; ``` --- ### 11.3 商家表 `merchant` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | user_id | BIGINT | 关联用户ID | UNIQUE, NOT NULL | | name | VARCHAR(100) | 商家名称 | NOT NULL | | address | VARCHAR(200) | 商家地址 | | | door_image | BIGINT | 门头照片file_id | | | license_file_id | BIGINT | 营业执照file_id | | | contact_name | VARCHAR(50) | 联系人 | | | contact_phone | VARCHAR(20) | 联系电话 | | | latitude | DECIMAL(10,6) | 纬度 | | | longitude | DECIMAL(10,6) | 经度 | | | service_types | JSON | 服务类型数组 | | | description | TEXT | 商家简介 | | | cert_status | TINYINT | 认证状态:0未认证 1认证中 2已认证 3认证失败 | DEFAULT 0 | | cert_time | DATETIME | 认证时间 | | | rating | DECIMAL(2,1) | 评分(1.0-5.0) | DEFAULT 5.0 | | order_count | INT | 成交订单数 | DEFAULT 0 | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE merchant ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', user_id BIGINT NOT NULL COMMENT '关联用户ID', name VARCHAR(100) NOT NULL COMMENT '商家名称', address VARCHAR(200) COMMENT '商家地址', door_image BIGINT COMMENT '门头照片file_id', license_file_id BIGINT COMMENT '营业执照file_id', contact_name VARCHAR(50) COMMENT '联系人', contact_phone VARCHAR(20) COMMENT '联系电话', latitude DECIMAL(10,6) COMMENT '纬度', longitude DECIMAL(10,6) COMMENT '经度', service_types JSON COMMENT '服务类型数组', description TEXT COMMENT '商家简介', cert_status TINYINT DEFAULT 0 COMMENT '认证状态:0未认证 1认证中 2已认证 3认证失败', cert_time DATETIME COMMENT '认证时间', rating DECIMAL(2,1) DEFAULT 5.0 COMMENT '评分(1.0-5.0)', order_count INT DEFAULT 0 COMMENT '成交订单数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_user (user_id), INDEX idx_cert_status (cert_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商家表'; ``` --- ### 11.4 飞手表 `pilot` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | user_id | BIGINT | 关联用户ID | UNIQUE, NOT NULL | | name | VARCHAR(50) | 姓名(实名) | NOT NULL | | phone | VARCHAR(20) | 手机号 | NOT NULL | | birthday | DATE | 出生年月 | | | age | TINYINT | 年龄(自动计算) | | | avatar_file_id | BIGINT | 头像file_id | | | cert_status | TINYINT | 认证状态:0未认证 1认证中 2已认证 3认证失败 | DEFAULT 0 | | cert_time | DATETIME | 认证时间 | | | license_type | VARCHAR(20) | CAAC执照类型:AOPA/UTC/ASFC | | | license_no | VARCHAR(50) | CAAC执照编号 | | | license_file_id | BIGINT | 执照图片file_id | | | drone_models | JSON | 可操控机型数组 | | | service_cities | JSON | 服务城市数组 | | | bio | VARCHAR(200) | 个人简介 | | | rating | DECIMAL(2,1) | 评分 | DEFAULT 5.0 | | order_count | INT | 完成任务数 | DEFAULT 0 | | insurance_expire | DATE | 飞手险到期日 | | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE pilot ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', user_id BIGINT NOT NULL COMMENT '关联用户ID', name VARCHAR(50) NOT NULL COMMENT '姓名(实名)', phone VARCHAR(20) NOT NULL COMMENT '手机号', birthday DATE COMMENT '出生年月', age TINYINT COMMENT '年龄(自动计算)', avatar_file_id BIGINT COMMENT '头像file_id', cert_status TINYINT DEFAULT 0 COMMENT '认证状态:0未认证 1认证中 2已认证 3认证失败', cert_time DATETIME COMMENT '认证时间', license_type VARCHAR(20) COMMENT 'CAAC执照类型:AOPA/UTC/ASFC', license_no VARCHAR(50) COMMENT 'CAAC执照编号', license_file_id BIGINT COMMENT '执照图片file_id', drone_models JSON COMMENT '可操控机型数组', service_cities JSON COMMENT '服务城市数组', bio VARCHAR(200) COMMENT '个人简介', rating DECIMAL(2,1) DEFAULT 5.0 COMMENT '评分', order_count INT DEFAULT 0 COMMENT '完成任务数', insurance_expire DATE COMMENT '飞手险到期日', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_user (user_id), INDEX idx_cert_status (cert_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='飞手表'; ``` --- ### 11.5 题库表 `exam_bank` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | name | VARCHAR(100) | 题库名称 | NOT NULL | | cover_image | BIGINT | 封面图file_id | | | description | TEXT | 题库描述 | | | question_count | INT | 题目数量 | DEFAULT 0 | | difficulty | TINYINT | 难度:1简单 2中等 3困难 | DEFAULT 1 | | status | TINYINT | 状态:0禁用 1启用 | DEFAULT 1 | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE exam_bank ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR(100) NOT NULL COMMENT '题库名称', cover_image BIGINT COMMENT '封面图file_id', description TEXT COMMENT '题库描述', question_count INT DEFAULT 0 COMMENT '题目数量', difficulty TINYINT DEFAULT 1 COMMENT '难度:1简单 2中等 3困难', status TINYINT DEFAULT 1 COMMENT '状态:0禁用 1启用', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='题库表'; ``` --- ### 11.6 习题表 `exam_question` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | bank_id | BIGINT | 所属题库ID | NOT NULL | | content | TEXT | 题目内容 | NOT NULL | | options | JSON | 选项数组(含ABCD四选项) | | | question_type | TINYINT | 题型:1单选 2多选 3判断 | NOT NULL | | answer | VARCHAR(10) | 标准答案(如:A 或 AB) | NOT NULL | | explanation | TEXT | 答案解析 | | | difficulty | TINYINT | 难度:1简单 2中等 3困难 | DEFAULT 1 | | score | TINYINT | 分值(单选/多选) | DEFAULT 5 | | sort_order | INT | 排序 | DEFAULT 0 | | used_count | INT | 被使用次数 | DEFAULT 0 | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE exam_question ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', bank_id BIGINT NOT NULL COMMENT '所属题库ID', content TEXT NOT NULL COMMENT '题目内容', options JSON COMMENT '选项数组([{"key":"A","val":"..."},...])', question_type TINYINT NOT NULL COMMENT '题型:1单选 2多选 3判断', answer VARCHAR(10) NOT NULL COMMENT '标准答案(如:A 或 AB)', explanation TEXT COMMENT '答案解析', difficulty TINYINT DEFAULT 1 COMMENT '难度:1简单 2中等 3困难', score TINYINT DEFAULT 5 COMMENT '分值', sort_order INT DEFAULT 0 COMMENT '排序', used_count INT DEFAULT 0 COMMENT '被使用次数', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', INDEX idx_bank (bank_id), INDEX idx_type (question_type) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='习题表'; ``` --- ### 11.7 课程表 `course` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | name | VARCHAR(100) | 课程名称 | NOT NULL | | tags | JSON | 标签数组(认知启蒙/技能进阶/创新应用/竞赛辅导) | | | category | VARCHAR(20) | 分类 | | | target_age | VARCHAR(20) | 适合年龄 | | | location | VARCHAR(200) | 上课地点 | | | latitude | DECIMAL(10,6) | 纬度 | | | longitude | DECIMAL(10,6) | 经度 | | | description | TEXT | 课程描述 | | | highlights | JSON | 课程亮点(3项) | | | duration_desc | VARCHAR(50) | 课时说明 | | | capacity_min | INT | 最小人数 | DEFAULT 1 | | capacity_max | INT | 最大人数 | DEFAULT 20 | | images | JSON | 课程图片file_id数组 | | | price | DECIMAL(10,2) | 课程价格 | NOT NULL | | merchant_id | BIGINT | 所属商家ID | | | status | TINYINT | 状态:0下架 1上架 2已满员 | DEFAULT 1 | | view_count | INT | 浏览次数 | DEFAULT 0 | | book_count | INT | 已预约人数 | DEFAULT 0 | | rating | DECIMAL(2,1) | 课程评分 | DEFAULT 5.0 | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE course ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR(100) NOT NULL COMMENT '课程名称', tags JSON COMMENT '标签数组(认知启蒙/技能进阶/创新应用/竞赛辅导)', category VARCHAR(20) COMMENT '分类', target_age VARCHAR(20) COMMENT '适合年龄', location VARCHAR(200) COMMENT '上课地点', latitude DECIMAL(10,6) COMMENT '纬度', longitude DECIMAL(10,6) COMMENT '经度', description TEXT COMMENT '课程描述', highlights JSON COMMENT '课程亮点(3项)', duration_desc VARCHAR(50) COMMENT '课时说明', capacity_min INT DEFAULT 1 COMMENT '最小人数', capacity_max INT DEFAULT 20 COMMENT '最大人数', images JSON COMMENT '课程图片file_id数组', price DECIMAL(10,2) NOT NULL COMMENT '课程价格', merchant_id BIGINT COMMENT '所属商家ID', status TINYINT DEFAULT 1 COMMENT '状态:0下架 1上架 2已满员', view_count INT DEFAULT 0 COMMENT '浏览次数', book_count INT DEFAULT 0 COMMENT '已预约人数', rating DECIMAL(2,1) DEFAULT 5.0 COMMENT '课程评分', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', INDEX idx_category (category), INDEX idx_status (status), INDEX idx_merchant (merchant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程表'; ``` --- ### 11.8 用户表 `user` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | openid | VARCHAR(64) | 微信openId | UNIQUE, NOT NULL | | nickname | VARCHAR(50) | 用户昵称 | | | avatar_url | VARCHAR(500) | 头像URL | | | phone | VARCHAR(20) | 手机号 | | | gender | TINYINT | 性别:0未知 1男 2女 | DEFAULT 0 | | bio | VARCHAR(200) | 个人简介 | | | role_type | TINYINT | 角色类型:1普通用户 2飞手 3商家 4机构 | DEFAULT 1 | | points | INT | 积分余额 | DEFAULT 0 | | is_pilot_bound | TINYINT | 是否已绑定飞手身份 | DEFAULT 0 | | is_merchant_bound | TINYINT | 是否已绑定商家身份 | DEFAULT 0 | | pilot_id | BIGINT | 关联飞手ID | | | merchant_id | BIGINT | 关联商家ID | | | status | TINYINT | 账号状态:0禁用 1正常 | DEFAULT 1 | | last_login_at | DATETIME | 最后登录时间 | | | created_at | DATETIME | 注册时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE `user` ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', openid VARCHAR(64) NOT NULL COMMENT '微信openId', nickname VARCHAR(50) COMMENT '用户昵称', avatar_url VARCHAR(500) COMMENT '头像URL', phone VARCHAR(20) COMMENT '手机号', gender TINYINT DEFAULT 0 COMMENT '性别:0未知 1男 2女', bio VARCHAR(200) COMMENT '个人简介', role_type TINYINT DEFAULT 1 COMMENT '角色类型:1普通用户 2飞手 3商家 4机构', points INT DEFAULT 0 COMMENT '积分余额', is_pilot_bound TINYINT DEFAULT 0 COMMENT '是否已绑定飞手身份', is_merchant_bound TINYINT DEFAULT 0 COMMENT '是否已绑定商家身份', pilot_id BIGINT COMMENT '关联飞手ID', merchant_id BIGINT COMMENT '关联商家ID', status TINYINT DEFAULT 1 COMMENT '账号状态:0禁用 1正常', last_login_at DATETIME COMMENT '最后登录时间', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_openid (openid), INDEX idx_phone (phone) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; ``` --- ### 11.9 任务执行记录表 `task_record` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | task_id | BIGINT | 任务ID | NOT NULL | | user_id | BIGINT | 关联用户ID | NOT NULL | | pilot_id | BIGINT | 接单飞手ID | | | merchant_id | BIGINT | 发单商家ID | | | status | TINYINT | 状态:1待接单 2已接单 3执行中 4已完成 5已取消 | DEFAULT 1 | | apply_time | DATETIME | 申请/接单时间 | | | accept_time | DATETIME | 飞手接单时间 | | | start_time | DATETIME | 实际开始时间 | | | finish_time | DATETIME | 完成时间 | | | cancel_time | DATETIME | 取消时间 | | | cancel_reason | VARCHAR(200) | 取消原因 | | | insurance_verified | TINYINT | 保险是否校验:0否 1是 | DEFAULT 0 | | actual_reward | DECIMAL(10,2) | 实际报酬 | | | platform_fee | DECIMAL(10,2) | 平台服务费 | | | rating | TINYINT | 用户评分(1-5) | | | rating_comment | VARCHAR(200) | 评价内容 | | | created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE task_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', task_id BIGINT NOT NULL COMMENT '任务ID', user_id BIGINT NOT NULL COMMENT '关联用户ID', pilot_id BIGINT COMMENT '接单飞手ID', merchant_id BIGINT COMMENT '发单商家ID', status TINYINT DEFAULT 1 COMMENT '状态:1待接单 2已接单 3执行中 4已完成 5已取消', apply_time DATETIME COMMENT '申请/接单时间', accept_time DATETIME COMMENT '飞手接单时间', start_time DATETIME COMMENT '实际开始时间', finish_time DATETIME COMMENT '完成时间', cancel_time DATETIME COMMENT '取消时间', cancel_reason VARCHAR(200) COMMENT '取消原因', insurance_verified TINYINT DEFAULT 0 COMMENT '保险是否校验:0否 1是', actual_reward DECIMAL(10,2) COMMENT '实际报酬', platform_fee DECIMAL(10,2) COMMENT '平台服务费', rating TINYINT COMMENT '用户评分(1-5)', rating_comment VARCHAR(200) COMMENT '评价内容', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_task_user (task_id, user_id), INDEX idx_user_status (user_id, status), INDEX idx_pilot_status (pilot_id, status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行记录表'; ``` --- ### 11.10 文件表 `file` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | file_name | VARCHAR(200) | 原始文件名 | NOT NULL | | file_key | VARCHAR(200) | 存储路径/OSS Key | NOT NULL | | file_suffix | VARCHAR(10) | 文件后缀 | | | file_url | VARCHAR(500) | 访问URL | | | file_size | BIGINT | 文件大小(字节) | | | file_type | VARCHAR(20) | 类型:营业执照/图片/飞手执照/其他 | | | uploader_id | BIGINT | 上传用户ID | | | status | TINYINT | 状态:0禁用 1正常 | DEFAULT 1 | | created_at | DATETIME | 上传时间 | DEFAULT CURRENT_TIMESTAMP | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE `file` ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', file_name VARCHAR(200) NOT NULL COMMENT '原始文件名', file_key VARCHAR(200) NOT NULL COMMENT '存储路径/OSS Key', file_suffix VARCHAR(10) COMMENT '文件后缀', file_url VARCHAR(500) COMMENT '访问URL', file_size BIGINT COMMENT '文件大小(字节)', file_type VARCHAR(20) COMMENT '类型:营业执照/图片/飞手执照/其他', uploader_id BIGINT COMMENT '上传用户ID', status TINYINT DEFAULT 1 COMMENT '状态:0禁用 1正常', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', INDEX idx_type (file_type), INDEX idx_uploader (uploader_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件表'; ``` --- ### 11.11 课程预约表 `course_appointment` | 字段 | 类型 | 说明 | 约束 | |------|------|------|------| | id | BIGINT | 主键 | PK, AUTO_INCREMENT | | user_id | BIGINT | 用户ID | NOT NULL | | course_id | BIGINT | 课程ID | NOT NULL | | merchant_id | BIGINT | 商家ID | | | appointment_date | DATETIME | 预约时间 | NOT NULL | | person_count | INT | 预约人数 | DEFAULT 1 | | contact_name | VARCHAR(50) | 联系人姓名 | | | contact_phone | VARCHAR(20) | 联系人电话 | | | remark | VARCHAR(200) | 备注 | | | status | TINYINT | 状态:1已预约 2已确认 3已完成 4已取消 | DEFAULT 1 | | confirm_time | DATETIME | 商家确认时间 | | | cancel_time | DATETIME | 取消时间 | | | cancel_reason | VARCHAR(200) | 取消原因 | | | amount | DECIMAL(10,2) | 支付金额 | DEFAULT 0.00 | | pay_status | TINYINT | 支付状态:0未支付 1已支付 2已退款 | DEFAULT 0 | | created_at | DATETIME | 预约时间 | DEFAULT CURRENT_TIMESTAMP | | updated_at | DATETIME | 更新时间 | | | deleted_at | DATETIME | 软删除时间 | | ```sql CREATE TABLE course_appointment ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键', user_id BIGINT NOT NULL COMMENT '用户ID', course_id BIGINT NOT NULL COMMENT '课程ID', merchant_id BIGINT COMMENT '商家ID', appointment_date DATETIME NOT NULL COMMENT '预约时间', person_count INT DEFAULT 1 COMMENT '预约人数', contact_name VARCHAR(50) COMMENT '联系人姓名', contact_phone VARCHAR(20) COMMENT '联系人电话', remark VARCHAR(200) COMMENT '备注', status TINYINT DEFAULT 1 COMMENT '状态:1已预约 2已确认 3已完成 4已取消', confirm_time DATETIME COMMENT '商家确认时间', cancel_time DATETIME COMMENT '取消时间', cancel_reason VARCHAR(200) COMMENT '取消原因', amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '支付金额', pay_status TINYINT DEFAULT 0 COMMENT '支付状态:0未支付 1已支付 2已退款', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '预约时间', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', deleted_at DATETIME DEFAULT NULL COMMENT '软删除时间', UNIQUE KEY uk_user_course_date (user_id, course_id, appointment_date), INDEX idx_course_status (course_id, status), INDEX idx_merchant (merchant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='课程预约表'; ``` --- ### 11.12 表间关系(ER) ``` user ─────┬── 1:1 pilot(飞手身份) └── 1:1 merchant(商家身份) └── 1:N task_record(我的任务) └── 1:N course_appointment(课程预约) pilot ────── N:1 task_record(接单飞手) merchant ─── N:1 task_record(发单商家) N:1 course(商家开课) task ──────── 1:1 task_record(任务→执行记录) course ────── 1:N course_appointment(课程→预约) file ──────── N:1 user(上传者) N:1 pilot(执照图片) N:1 merchant(营业执照) N:1 task(作业场景图) N:1 course(课程图片) exam_bank ── 1:N exam_question(题库→习题) ```