Files
alist-serve-resource/docs/ADMIN_GUIDE.md
T

135 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 管理员操作指南(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` 是否填对(必须真实存在的 `/` 开头路径)。