
多品牌租车管理平台 - 详细技术规格书
一、 系统架构概述 核心模式: 多租户(Multi-Tenant SaaS)。 隔离策略: 逻辑隔离。通过请求头中的 Host(域名)识别 Team,所有 SQL 查询强制带上 WHERE team_id = ?。 用户体系: 前台(C端): 访客模式(Guest Checkout),无需注册,邮箱+订单号查询。...
一、 系统架构概述
核心模式: 多租户(Multi-Tenant SaaS)。
隔离策略: 逻辑隔离。通过请求头中的 Host(域名)识别 Team。
用户体系:
前台(C端): 访客模式(Guest Checkout),无需注册,邮箱+订单号查询。
后台(B端): 邀请制注册(Invite Only),严禁公开注册。
二、 功能模块列表 (Feature List)
第一部分:公共前台 (Public Website - C端)
核心逻辑: 访客模式(Guest Checkout),根据域名(Host)动态加载品牌数据。
1.1 首页 (Home)
业务流程: 用户访问域名 -> 后端识别 Team -> 返回对应 Logo/Banner/文字 -> 用户输入日期搜索。
UI 页面与功能点:
Header: 品牌 Logo(左侧),导航栏(Home, Fleet, Contact),“我的订单”查询入口。
Hero Banner: 大图背景,叠加品牌 Slogan。
悬浮搜索框 (Search Widget):
取车日期/时间 (DateTimePicker):默认明天,禁止选过去时间。
还车日期/时间 (DateTimePicker):必须晚于取车时间(联动校验)。
座位数 (Dropdown):任意 / 4座 / 5座 / 7座+。
搜索按钮:点击跳转 Fleet 页面。
特色服务区: 3-4个图标+文字(如:ETC、雪地胎、全额保险、24h客服),后台可配。
Footer: 版权信息、联系地址、社交链接。
1.2 车辆搜索列表页 (Fleet / Search Results)
业务流程: 接收搜索参数 -> 查询 Vehicles 表 -> 过滤掉该时间段内 Orders 表中有冲突的车辆 -> 展示可用列表。
UI 页面与功能点:
顶部筛选栏: 回显当前搜索日期,允许重新修改日期。支持按“价格升降序”、“座位数”筛选。
车辆卡片列表 (List/Grid View):
图片:车辆缩略图。
标题:车型名称 (e.g., Toyota Alphard)。
标签:座位数 icon、自动挡/手动挡 icon。
价格:展示每日单价和总价(根据日期计算)。
状态:若仅剩1辆,显示“仅剩1辆”标签。
预订按钮:点击跳转详情页或直接进入预约页。
空状态 (Empty State): 若无车可用,显示“该时段已订满,请尝试其他日期”及“联系客服”按钮。
1.3 车辆详情页 (Vehicle Detail)
UI 页面与功能点:
左侧相册: 主图 + 缩略图轮播。
右侧信息: 车型参数(排量、箱子数等)、日租金。
可用性日历 (Availability Calendar):
展示一个月视图日历。
逻辑: 已预订日期标红/置灰不可点,可用日期标绿/白。
CTA按钮: “立即预订 (Book Now)”。
1.4 预约与支付页 (Booking & Checkout)
业务流程: 填写信息 -> 选配服务 -> 生成临时订单 -> 支付 -> 更新状态。
UI 页面与功能点:
步骤条: 1. 个人信息 -> 2. 附加服务 -> 3. 支付。
表单区域:
基本信息:姓名(必填)、邮箱(必填,用于接收凭证)、电话、护照号/驾照。
附加服务 (Checkbox List):例如“儿童座椅 (5/天)”、“全险(5/天)”、“全险(
20/天)”。勾选后右侧总价实时更新。
备注:Textarea。
结算区域:
显示费用明细(租金 x 天数 + 附加费 = 总价)。
支付方式选择: Stripe (Credit Card) / PayPal / 线下支付(如后台允许)。
提交逻辑:
点击提交,后端生成订单,状态 PENDING,支付状态 UNPAID。
若是线上支付,重定向至 Stripe Checkout 页面。
支付成功回调后,状态变更为 CONFIRMED,支付状态 PAID。
1.5 订单查询/结果页
成功页: 显示“预订成功”,展示订单号,提示“确认邮件已发送”。
查询页: 输入“邮箱”+“订单号”,查看当前订单详情及状态。
第二部分:后台管理 - 认证与权限 (Admin Auth)
核心逻辑: 严禁公开注册,仅通过 Token 邀请机制扩充团队。
2.1 登录页 (Login)
UI: 简洁卡片布局。
输入: 邮箱、密码。
功能: 登录成功后,根据 Token 写入 LocalStorage,跳转 Dashboard。
2.2 邀请注册流程 (Invite & Register)
流程:
用户点击邮件中的链接 admin.brand.com/register?token=XYZ。
前端初始化: 调用 GET /api/auth/invite/check?token=XYZ。
成功: 渲染注册表单,锁定邮箱输入框(不可修改,防止冒名顶替)。
失败: (Token过期/不存在) 显示错误页,提示“链接失效,请联系管理员”。
注册表单: 姓名、密码、确认密码。提交后自动登录。
第三部分:后台管理 - 运营中心 (Operations)
3.1 总控制台 (Dashboard)-数据一览
UI 布局: 顶部数据卡片 + 中部图表 + 底部快捷列表。
数据卡片:
今日取车 (点击跳转订单列表筛选今日)。
今日还车。
待处理订单 (Pending状态)。
本月营收。
图表:
近7日订单量趋势 (Line Chart)。
车型热度排行 (Bar Chart)。
3.2 甘特图排期 (Gantt Chart / Schedule)
UI 页面与功能点:
X轴: 日期时间轴(支持按日/周视图切换)。
Y轴: 车辆列表(显示车牌+车型)。
色块 (Order Block):
显示内容:客户名、起止时间。
颜色区分:黄色(待支付)、绿色(已确认)、蓝色(进行中)、灰色(已结束)、红色(维修中)。
交互:
Hover:显示订单详情悬浮窗(金额、备注)。
Click:右侧弹出订单详情抽屉,可进行编辑操作。
冲突预警:如果数据库出现异常重叠数据,显示红色感叹号。
3.3 订单管理 (Order Management)
UI 页面与功能点:
列表页: 高级搜索(订单号/姓名/日期范围/状态)。导出按钮。
新建订单 (Manual Entry):
管理员手动录入电话预订。
关键逻辑: 选择时间段后,车辆下拉框仅显示该时段可用车辆。
导入订单 (Excel Import) - 核心功能:
界面:上传区域 + 下载模板链接。
冲突处理流程:
前端解析 Excel 发送给后端。
后端模拟插入,检测时间冲突。
返回: { success: false, errors: [{row: 3, msg: "京A88888 在 2023-10-01 已被占用"}] }。
前端弹窗展示具体错误行号和原因,要求用户修改 Excel 后重新上传。
详情/编辑页: 修改客户信息、修改状态(如:强制标记为已支付)、发送邮件通知(手动触发)。
第四部分:后台管理 - 资产管理 (Fleet)
4.1 车辆管理
列表页: 展示图片、车牌、当前状态(可用/维修)。
新增/编辑页:
基础信息:车型、座位、车牌。
状态管理:
开关:是否维修/不可用。
若开启维修,需输入维修开始日期和结束日期(此逻辑会同步到甘特图,该时段不可被预订)。
定价:基础日租金。
4.2 附加服务 (Extras)
功能: 简单的 CRUD 表格。
字段: 服务名(如ETC、GPS)、计费模式(按天/按单)、价格。
第五部分:数据与报表 (Reports)
5.1 周报系统 (Weekly Report)
触发机制: 系统定时任务(CronJob)每周一 00:01 执行。
处理逻辑:
统计上周(周一至周日)数据:总订单、总收入、取消率、每辆车出租天数。
生成 JSON 快照存入 DB。
根据设置,发送 HTML 邮件给 Admin 邮箱。
UI 页面:
历史周报列表(按日期倒序)。
点击“查看”进入详情页:可视化图表 + 详细数据表。
按钮:导出 Excel、发送邮件(手动重发)。
5.2 年报系统 (Annual Report)
与周报类似,维度为按月统计(1月-12月趋势)。
核心图表: 年度营收曲线、车型贡献度饼图。
第六部分:系统设置 (Settings)
6.1 品牌配置 (Team Profile)
功能:
上传 Logo (影响前台 Header 和 邮件 Header)。
设置 Banner 图。
联系信息(电话、Footer地址)。
SEO 设置(网站标题、描述)。
6.2 邮件模板 (Email Config)
UI: Tab 切换不同场景(预订确认、支付提醒、管理员通知)。
编辑器: 简单编辑器,点击按钮插入 {customer_name}, {order_no}, {start_date} 等占位符。
6.3 支付配置
安全性: 字段加密存储。
表单:
Stripe Public Key / Secret Key。
PayPal Client ID / Secret。
开关:启用在线支付。
6.4 员工管理
Tab 1: 员工管理 (Staff Management)
1. 员工列表区
展示字段: 姓名、邮箱、当前角色 (Tag样式)、最后登录时间、状态 (正常/冻结)。
操作列: 编辑 (Edit)、冻结/解冻 (Suspend)、重置密码 (Reset Pwd)、删除 (Delete)。
注:删除仅限“未激活”的邀请,已激活账号只能冻结(保留历史订单数据关联)。
2. 邀请员工弹窗 (Invite Member Modal)
输入项:
邮箱 (Email): 必填。
姓名 (Name): 选填 (注册时用户可改)。
角色 (Role): 下拉单选框 (数据源来自 Roles 表)。
Default: Administrator, Staff, Driver
动作: 点击“发送邀请”,系统生成 Token 并发送邮件。
3. 编辑员工弹窗 (Edit Staff Modal)
功能: 修改员工的 Role。
场景: 员工升职,从“普通员工”改为“管理员”。
Tab 2: 角色管理 (Role Management)
1. 角色列表区
布局: 卡片式或列表式。
展示: 角色名称、权限摘要 (如 "订单管理, 车辆管理...")、当前人数。
操作: 新建角色、编辑、删除 (若该角色下有人,禁止删除)。
2. 新建/编辑角色页 (Role Editor)
这是一个全屏或大弹窗页面。
基本信息:
角色名称: 输入框 (如 "财务专员")。
描述: 输入框。
权限分配区 (Permission Matrix):
UI 样式: 分组的复选框列表 (Grouped Checkboxes)。
交互: 支持“全选/反选”某一组。
[ Group: 订单中心 ]
[ Group: 资产管理 ]
[ Group: 系统设置 ]
保存逻辑:
前端收集所有 checked 的 value,组成数组 ["order:view", "vehicle:view"] 提交给后端 API。
三、 UI 菜单结构 (Sitemap)-响应式布局适配pc和移动端展示
1. 前端 (Public Website)
无需登录,基于域名 (Host) 动态渲染品牌内容
Home (首页)
Hero Section: Banner + 快速搜索组件 (日期/地点/座位)
Why Choose Us: 品牌优势展示
Featured Cars: 热门车型推荐
Fleet (车型列表)
Filter Bar: 筛选栏 (价格范围 / 座位 / 档位)
Car List: 车辆卡片 (显示实时价格与可用性)
Vehicle Detail (车辆详情页)
Gallery: 车辆图库
Availability Calendar: 可用性日历 (不可选日期置灰)
Specs: 详细参数
Booking Flow (预约流程)
Step 1: Reservation (信息填写)
客户信息表单 (姓名/邮箱/电话/护照)
Extras Selection (附加服务勾选:保险/座椅等)
Step 2: Payment (支付/确认)
Order Summary (费用明细)
Payment Gateway (Stripe/PayPal 嵌入组件)
Step 3: Confirmation (成功页)
Order Reference (订单号显示)
Print/Save (打印或保存凭证)
My Order (订单查询)
Login-free Access: 输入 邮箱 + 订单号 查询
Order Status: 查看订单详情、支付状态、下载收据
Static Pages (静态页)
About Us (关于我们)
Contact (联系我们) - 含地图与留言板
Terms & Conditions (支付网关强制要求)
Privacy Policy (支付网关强制要求)
2. 后台管理 (Admin Dashboard)
基于角色的访问控制 (RBAC)
A. 身份认证 (Auth)
Login (登录页)
输入:Email / Password
动作:忘记密码入口
Register (注册页 - 受限)
URL: /register?token=xyz... (无 Token 自动跳回登录页)
逻辑:自动锁定邮箱,仅输入姓名与密码
Forgot Password (忘记密码)
逻辑:发送重置邮件
Reset Password (重置密码)
URL: /reset-password?token=...
B. 核心菜单 (Main Navigation)
1. Dashboard (控制台)
Overview (数据概览)
今日核心指标 (取车/还车/待办)
快捷入口 (新增订单/排期)
Analytics (数据分析)
营收趋势图 (Revenue Chart)
车型利用率排行 (Utilization Rate)
订单来源分析
2. Schedule (排期管理)
Gantt Chart (甘特图 - 核心)
View: Y轴车辆 / X轴日期
Action: 拖拽调整时间、点击色块查看详情
Daily Ops (每日运营)
List: 今日取车列表 / 今日还车列表
Action: 快速标记“已取车”、“已还车”
3. Orders (订单中心)
All Orders (订单列表)
Tabs: 全部 / 待支付 / 待确认 / 进行中 / 已完成 / 已取消
Search: 按订单号、姓名、手机号搜索
Action: Create Order (手动录入按钮)
Order Detail (订单详情页)
Info: 客户信息、车辆信息、费用明细
Timeline: 订单状态流转记录
Edit: 修改订单、发送邮件通知、手动退款
Import Orders (批量导入)
Upload: Excel 文件上传区域
Preview: 冲突检测结果预览 (红字标出冲突行)
4. Fleet (资产管理)
Vehicles (车辆列表)
List: 展示图片、车牌、当前状态
Action: 新增/编辑车辆
Vehicle Availability (状态维护)
Form: 设置某辆车在特定时间段为“维修中/不可用”
Extras (附加服务)
List: 保险、GPS、儿童座椅
Edit: 设置价格、计费方式 (按天/按次)
5. Reports (财务与报表)
Weekly Reports (周报)
List: 历史周报归档
View: 周报详情页 (Web预览)
Action: 下载 Excel、重发邮件
Annual Reports (年报)
View: 年度汇总数据可视化
6. Settings (系统设置)
Brand Profile (品牌配置)
设置:Logo、网站标题 (SEO)、联系邮箱、Banner图
Payment & Email (接口配置)
Payment: Stripe/PayPal Keys 设置
Email: SMTP 设置、邮件模板编辑器 (Template Editor)
Team & Staff (团队权限)
List: 员工列表
Invite: 发送邀请模态框 (Send Invite Modal)
Roles: 角色分配 (Admin/Staff)
特别说明:模态框 (Modals) 与 抽屉 (Drawers)
为了提升操作效率,建议以下功能不跳转新页面,使用悬浮层实现:
Quick View Order (订单预览抽屉): 在甘特图中点击色块,右侧滑出抽屉显示详情。
Send Invite (发送邀请弹窗): 在员工管理页,点击“新增”弹出。
Conflict Alert (冲突警告弹窗): 在 Excel 导入时,若发现时间冲突,弹出详细错误列表。
四、 API 接口清单 (RESTful)
1. 认证模块 (Auth)
无需 Header Host,全局通用
Method | Endpoint | 描述 | Payload / Params |
POST | /api/auth/login | 管理员/员工登录 | {email, password} |
POST | /api/auth/logout | 登出 | - |
POST | /api/auth/password/forgot | 忘记密码 (发送重置邮件) | {email} |
POST | /api/auth/password/reset | 重置密码 | {token, new_password} |
GET | /api/auth/invite/check | 校验邀请 Token 有效性 | ?token=xyz... |
POST | /api/auth/register | 通过 Token 完成注册 | {token, name, password} |
2. 公共前台模块 (Public)
Header 必须带 Host: brand.com 以识别租户
Method | Endpoint | 描述 | Payload / Params |
GET | /api/public/config | 获取品牌配置 (Logo, Title, Banner, Currency) | - |
GET | /api/public/vehicles | 搜索可用车辆 | ?start_date=...&end_date=...&seats=4 |
GET | /api/public/vehicles/{id} | 获取车辆详情 (含不可用日期日历) | - |
GET | /api/public/extras | 获取附加服务列表 (保险/座椅) | - |
POST | /api/public/orders | 提交预约 (创建 Pending 订单) | {vehicle_id, dates, customer_info, extras...} |
GET | /api/public/orders/lookup | 访客查询订单 (无登录) | ?email=...&order_no=... |
POST | /api/webhook/stripe | Stripe 支付异步回调 | (Stripe Signature) |
POST | /api/webhook/paypal | PayPal 支付异步回调 | (PayPal Signature) |
3. 管理后台模块 (Admin)
Header 需带 Authorization: Bearer Token
A. 概览与文件
Method | Endpoint | 描述 |
GET | /api/admin/dashboard/stats | 获取首页统计数据 (今日订单, 营收, 待办) |
POST | /api/admin/upload | 通用文件上传 (返回图片URL) |
B. 订单与排期 (Orders & Schedule)
Method | Endpoint | 描述 |
GET | /api/admin/orders | 订单列表 (分页/筛选/搜索) |
GET | /api/admin/orders/{id} | 订单详情 |
POST | /api/admin/orders | 手动创建订单 (后台录入) |
PUT | /api/admin/orders/{id} | 编辑订单信息 |
PUT | /api/admin/orders/{id}/status | 修改状态 (支付状态/订单状态) |
DELETE | /api/admin/orders/{id} | 删除/取消订单 |
POST | /api/admin/orders/import | Excel 批量导入 (返回冲突检测结果) |
GET | /api/admin/schedule/gantt | 获取甘特图数据 (按车辆分组的订单块) |
C. 车辆与资产 (Fleet)
Method | Endpoint | 描述 |
GET | /api/admin/vehicles | 车辆列表 |
GET | /api/admin/vehicles/{id} | 车辆详情 |
POST | /api/admin/vehicles | 新增车辆 |
PUT | /api/admin/vehicles/{id} | 修改车辆 |
DELETE | /api/admin/vehicles/{id} | 删除车辆 (软删除) |
POST | /api/admin/vehicles/import | Excel 批量导入车辆 |
POST | /api/admin/maintenance | 新增维修记录 (锁定排期) |
DELETE | /api/admin/maintenance/{id} | 移除维修记录 |
D. 附加服务 (Extras)
Method | Endpoint | 描述 |
GET | /api/admin/extras | 列表 |
POST | /api/admin/extras | 新增 |
PUT | /api/admin/extras/{id} | 修改 |
DELETE | /api/admin/extras/{id} | 删除 |
E. 报表 (Reports)
Method | Endpoint | 描述 |
GET | /api/admin/reports/weekly | 周报列表 |
GET | /api/admin/reports/annual | 年报数据 |
GET | /api/admin/reports/export | 导出 Excel |
POST | /api/admin/reports/send | 手动触发邮件发送 |
F. 设置与权限 (Settings & Users)
Method | Endpoint | 描述 |
GET | /api/admin/settings | 获取当前品牌配置 |
PUT | /api/admin/settings/profile | 更新品牌信息 (Logo, Banner) |
PUT | /api/admin/settings/payment | 更新支付配置 |
PUT | /api/admin/settings/email | 更新邮件模板 |
GET | /api/admin/staff | 员工列表 |
POST | /api/admin/invite | 发送邀请邮件 |
GET | /api/admin/invite | 获取邀请记录 |
POST | /api/admin/invite/{id}/revoke | 撤销邀请 |
GET | /api/admin/roles | 获取本 Team 角色列表 |
POST | /api/admin/roles | 新增角色 |
PUT | /api/admin/roles/{id} | 修改角色权限 |
DELETE | /api/admin/roles/{id} | 删除角色 |
PUT | /api/admin/staff/{id}/role | 修改员工角色 |
GET | /api/admin/permissions/dict | 获取系统所有权限字典(用于前端渲染勾选框) |
五、 数据库设计 (Database Schema)
1. Teams (租户表)
核心隔离表
字段名 | 类型 | 说明 |
id | BIGINT | PK |
name | VARCHAR | 品牌名称 |
domain | VARCHAR | Unique, 绑定域名 (如 car.brandA.com) |
logo_url | VARCHAR | Logo 图片路径 |
banner_url | VARCHAR | 首页 Banner 图片路径 |
currency | VARCHAR(3) | 新增, 货币符号 (USD, JPY, CNY) |
timezone | VARCHAR | 新增, 时区 (如 'Asia/Tokyo'),用于报表统计 |
contact_info | JSON | 地址, 电话, 客服邮箱 |
smtp_config | JSON | 邮件服务器配置 |
payment_config | JSON | Stripe/PayPal Keys (加密存储) |
email_templates | JSON | 各类邮件模板 HTML |
status | TINYINT | 1:启用, 0:停用 |
2. Users & Invitations (后台用户体系)
Users
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| id | BIGINT | PK |
| team_id | BIGINT | FK, 归属品牌 (0=SuperAdmin) |
| email | VARCHAR | 登录邮箱 |
| password | VARCHAR | Hash |
| name | VARCHAR | 姓名 |
| role | ENUM | 'SUPER', 'ADMIN', 'STAFF' |
| last_login | DATETIME | 最后登录时间 |
| role_id | BIGINT | FK, 关联 Roles 表 |
Roles (角色表)
存储 Team 自定义的角色定义
字段名 | 类型 | 说明 |
id | BIGINT | PK |
team_id | BIGINT | FK, 归属 Team |
name | VARCHAR | 角色名称 (如 "Counter Staff") |
description | VARCHAR | 备注说明 |
permissions | JSON | 核心, 权限 Key 数组 (如 ["order:view", "vehicle:view"]) |
is_default | BOOLEAN | 是否为系统预设 (预设角色不可删除,但可编辑权限) |
created_at | DATETIME | 创建时间 |
Invitations
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| id | BIGINT | PK |
| token | VARCHAR | Index, 唯一邀请码 |
| team_id | BIGINT | FK |
| email | VARCHAR | 受邀邮箱 |
| role | VARCHAR | 预设角色 |
| status | ENUM | 'PENDING', 'USED', 'EXPIRED' |
| expires_at | DATETIME | 过期时间 |
3. Vehicles & Maintenance (资产管理)
Vehicles
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| id | BIGINT | PK |
| team_id | BIGINT | FK |
| name | VARCHAR | 车型 (Toyota Alphard) |
| license_plate | VARCHAR | 车牌号 |
| category | VARCHAR | 车型组 (SUV, MPV) |
| transmission | ENUM | 新增, 'AUTO'(自动), 'MANUAL'(手动) |
| seats | INT | 座位数 |
| price_per_day | DECIMAL | 基础日租金 |
| image_url | VARCHAR | 车辆主图 |
| status | TINYINT | 1:上架, 0:下架 (注意:维修通过Maintenance表控制) |
| inspection_date| DATE | 下次车检日 |
VehicleMaintenance
用于甘特图排期中的红色锁定块
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| id | BIGINT | PK |
| team_id | BIGINT | FK |
| vehicle_id | BIGINT | FK |
| start_date | DATETIME | 维修开始 |
| end_date | DATETIME | 维修结束 |
| reason | VARCHAR | 维修原因/备注 |
4. Extras
管理保险、儿童座椅等
字段名 | 类型 | 说明 |
id | BIGINT | PK |
team_id | BIGINT | FK |
name | VARCHAR | 服务名称 (如 "Child Seat") |
price | DECIMAL | 价格 |
price_type | ENUM | 'PER_DAY'(按天), 'PER_TRIP'(按次) |
icon | VARCHAR | 前端图标标识 |
5. Orders (核心订单表)
字段名 | 类型 | 说明 |
id | BIGINT | PK |
order_no | VARCHAR | Unique, 订单号 (如 "ORD-20231001-X9") |
team_id | BIGINT | FK |
vehicle_id | BIGINT | FK |
customer_name | VARCHAR | 客户名 |
customer_email | VARCHAR | 客户邮箱 |
customer_phone | VARCHAR | 电话 |
passport_no | VARCHAR | 护照 |
start_time | DATETIME | 预约开始 |
end_time | DATETIME | 预约结束 |
days | INT | 租期天数 |
base_amount | DECIMAL | 车辆租金小计 |
extras_amount | DECIMAL | 附加服务费小计 |
total_amount | DECIMAL | 总金额 |
extras_json | JSON | 新增, 选购的附加服务快照 (如 [{"name":"GPS", "price":10}]) |
status | ENUM | 'PENDING', 'CONFIRMED', 'COMPLETED', 'CANCELLED' |
payment_status | ENUM | 'UNPAID', 'PAID', 'REFUNDED' |
source | ENUM | 新增, 'WEB'(官网), 'MANUAL'(后台), 'IMPORT'(导入) |
note | TEXT | 客户留言 |
internal_note | TEXT | 管理员内部备注 |
created_at | DATETIME | 创建时间 |
Comments (0)