# 管理员操作指南(ADMIN_GUIDE) > 本指南只讲在 NocoDB 里怎么点。不需要懂技术,照着做即可。 > 所有操作都在 NocoDB 的 `AlistAccess` 工作区里完成,系统会自动处理后续。 --- ## 第一部分:给顾客开账号 + 授权(3 步) > 顺序:先建顾客 → 再建购买记录 → 再挂产品。 ### 第 1 步 — 建顾客(Customers 表) 打开 `Customers` 表,点「+新增记录」,**按顺序填**: | 顺序 | 栏位 | 必填 | 怎么填 | |---|---|---|---| | 1 | `username` | ✅ | 顾客登录用的账号名,**不能重复** | | 2 | `password` | ✅ | 顾客的登录密码 | | 3 | `display_name` | 选填 | 顾客显示名(顾客姓名等)| | 4 | `email` | 选填 | 顾客邮箱 | | 5 | `status` | ✅ | 先选 `active`(顾客马上能用)| > **填完会看到**:保存后,下面几个栏位(`alist_user_id`、`alist_role_id`、`sync_status`) > 会被系统自动填上,`sync_status` 变成 `synced`。这是正常的,不用管。 > > **注意**:如果 `status` 先选 `pending`(还没决定卖什么),系统不会建账号。 > 等你后面改成 `active` 才会正式开账号。 ### 第 2 步 — 记购买(Purchases 表) 打开 `Purchases` 表,点「+新增记录」,**期望填写**: | 栏位 | 必填 | 怎么填 | |---|---|---| | `customer` | ✅ | 选第 1 步那个顾客 | | `product` | ✅ | 选顾客买的产品 | | `purchase_date` | 选填 | 购买日期 | | `amount` | 选填 | 金额 | | `payment_method` | 选填 | 付款方式 | | `order_id` | 选填 | 订单号 | | `notes` | 选填 | 备注 | > 这份是**记账留档**用,填不填都不影响顾客能不能看文件。 ### 第 3 步 — 挂产品(CustomerProducts 表) > **这步才是真正让顾客「看得到文件」的关键。** 打开 `CustomerProducts` 表,点「+新增记录」,**按顺序填**: | 顺序 | 栏位 | 必填 | 怎么填 | |---|---|---|---| | 1 | `customer` | ✅ | 选第 1 步那个顾客 | | 2 | `product` | ✅ | 选他买的产品 | | 3 | `start_at` | 选填 | 开始日期 | | 4 | `expires_at` | ✅ | 到期日期(**到期当天就失效**)| | 5 | `status` | ✅ | 选 `active` | > **填完会看到**:顾客登录后就能看到这个产品对应的文件夹。 > 到了 `expires_at` 那天,权限自动失效。 > > **一个顾客可以有多条** CustomerProducts:买几个产品就建几条,权限会全加起来。 --- ## 第二部分:准备产品(Products + Resources,2 步) > 顺序:先建资源(文件夹)→ 再建产品(打包)。 ### 第 1 步 — 建资源(Resources 表) 打开 `Resources` 表,点「+新增记录」,**按顺序填**: | 顺序 | 栏位 | 必填 | 怎么填 | |---|---|---|---| | 1 | `name` | ✅ | 给人看的名字(如「Forex 课程」)| | 2 | `alist_path` | ✅ | 文件夹路径,以 `/` 开头,如 `/Class/Forex` | > **注意**:`alist_path` 必须是真实存在的文件夹路径,填错顾客会打不开。 ### 第 2 步 — 建产品(Products 表) 打开 `Products` 表,点「+新增记录」,**按顺序填**: | 顺序 | 栏位 | 必填 | 怎么填 | |---|---|---|---| | 1 | `name` | ✅ | 产品名(如「Python Basic」)| | 2 | `status` | ✅ | 选 `active` | | 3 | `Resources` | ✅ | 勾选这个产品**包含**的资源(可勾多个)| > **填完会看到**:以后在「第一部分第 3 步」给顾客挂这个产品时, > 产品里勾选的资源路径会一次性算给顾客。 --- ## 附:Customers 的 status 怎么选 | status | 意思 | 顾客能看文件吗 | 什么时候用 | |---|---|---|---| | `pending` | 还没正式开通 | ❌ | 刚建顾客、还没卖产品时 | | `active` | 正常使用 | ✅ | 顾客在使用中 | | `suspended` | 暂时停权 | ❌ | 欠费 / 有问题暂时停 | | `expired` | 整户到期 | ❌ | 顾客服务整体结束 | | `deleted` | 停用(保留记录)| ❌ | 不合作了但想留历史 | - 只要不是 `active`,顾客就登不进去、也看不到文件。 - 改回 `active`,系统会自动算**现在还有效**的产品权限(已经过期的不会回来)。 --- ## 附 2:到期后会发生什么(重要) 系统**每 5 分钟自动扫一次**所有顾客的到期日(`CustomerProducts.expires_at`), **到期当天**(当天就算到期)就会把这些产品对应的文件夹权限从顾客身上移除—— **这一步是全自动的,不用管理员做任何操作**(2026-08-28 定案:维持此行为,不做自动停用/通知)。 | 项目 | 实际行为 | |---|---| | 文件权限 | 到期当天自动移除,顾客再也打不开任何文件夹 ✅ | | 账号 | **不冻结**——顾客仍能登录,但登录进去目录是空的、什么都看不到 | | `Customers.status` | 不会自动改,仍显示 `active`(正常现象,权限其实已移除) | | 通知 | 不会自动发任何通知,管理员自行留意 `expires_at` 即可 | > **要连登录都不让他进**(退款 / 违规 / 明确不续约): > 手动把 `Customers.status` 改成 `suspended` 或 `expired`,系统**马上**冻结账号(登不进去)。 > **续费 / 恢复**:把 `CustomerProducts.expires_at` 改到新日期(或新增一条记录),权限自动恢复。 > 若之前手动冻结过(status 不是 `active`),记得先把 status 改回 `active`。 > **顾客反馈「能登录但里面什么都没有」**:先查他的 `CustomerProducts.expires_at`, > 十有八九是到期了。要么改 `expires_at` 续费,要么说明服务已结束。 > 如果 `expires_at` 还没到但看不到东西:查该产品 `Products.status` 是否 `active`、 > Resource 的 `alist_path` 是否填对(必须真实存在的 `/` 开头路径)。