云端账户黑名单管理系统全栈开发方案

By 19214562501, 19 April, 2026
角色
user
content

# 项目:账户云端黑名单管理系统

请为我生成一个完整的全栈 Web 应用程序,用于管理云端账户黑名单。该系统需包含公开查询界面和后台管理界面,并严格区分超级管理员与子管理员的权限。要求web界面使用中文,使用php格式

## 1. 技术栈建议

- **前端框架**: React (可使用 Vite 或 Next.js App Router),搭配 TypeScript。

- **样式**: Tailwind CSS,界面需简洁、现代、响应式。

- **后端与数据库**: 优先使用 **Supabase** (处理认证、数据库和实时 API)。若使用其他方案,请确保包含完整的后端逻辑。

- **验证**: 使用 Zod 进行前后端数据校验。

## 2. 核心功能与页面要求

### 页面 A:公开查询界面 (路径:`/` 或 `/query`)

此页面**无需登录**,仅提供查询功能,不能修改任何数据。

- **单个查询**:

- 输入框(账户标识,如用户名、邮箱或 ID)。

- “查询”按钮。

- 结果显示:账户名、状态(是否在黑名单)、备注内容。

- **批量查询功能(重点)**:

- 提供一个较大的文本域(Textarea)。

- 支持用户输入多个账户,**每行一个**。

- “批量查询”按钮。

- **结果展示**:以表格形式列出每一行输入的账户,对应显示“是否登记”和“备注”。若账户不在黑名单中,备注列显示“-”或“未登记”。

### 页面 B:管理员登录界面 (路径:`/admin/login`)

- 使用邮箱/密码登录。

- 登录成功后根据角色(超级管理员 / 子管理员)跳转至不同功能面板。

### 页面 C:管理员仪表盘 (路径:`/admin/dashboard`)

#### 通用功能(超级管理员与子管理员均可见)

- **黑名单管理 (CRUD)**:

- **列表展示**:表格展示所有已登记的黑名单账户,包含列:账户标识、备注、登记时间、操作(编辑、删除)。

- **新增黑名单**:弹窗或表单,输入“账户标识”和“备注”。需校验账户不可重复添加。

- **编辑备注**:可修改已有记录的备注信息。

- **删除记录**:将账户从黑名单移除。

#### 超级管理员专属功能 (路径:`/admin/sub-admins`)

- **子管理员注册**:

- 表单:输入邮箱、初始密码(或发送设置密码邮件,为简化开发,可先使用直接设置密码的方式)。

- 角色固定为 `sub_admin`,不可更改。

- **子管理员列表**:

- 展示所有子管理员账号,包含:邮箱、创建时间、状态。

- 提供“禁用/启用”或“删除”子管理员的功能(可选,加分项)。

#### 权限控制逻辑

- 子管理员登录后,**看不到**“子管理员管理”的菜单入口,且无法通过直接输入 URL 访问该页面(API 层也需拦截)。

## 3. 数据库模型设计 (Supabase SQL)

请根据以下结构创建数据表:

```sql

-- 黑名单表

CREATE TABLE blacklist (

id UUID PRIMARY KEY DEFAULT gen_random_uuid(),

account TEXT UNIQUE NOT NULL, -- 账户唯一标识

remark TEXT,

created_at TIMESTAMPTZ DEFAULT now(),

updated_at TIMESTAMPTZ DEFAULT now()

);

-- 管理员配置表 (扩展 Supabase Auth 用户表)

-- 假设使用 Supabase 自带 auth.users 表存储邮箱和密码

CREATE TABLE public.admin_profiles (

id UUID PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,

role TEXT NOT NULL CHECK (role IN ('super_admin', 'sub_admin')),

created_at TIMESTAMPTZ DEFAULT now()

);

-- 自动更新时间触发器

-- (请编写触发器在更新 blacklist 时刷新 updated_at 字段)

```

## 4. API 与安全约束

- **查询 API**:公开访问,支持 `GET /api/blacklist?account=xxx` 和 `POST /api/blacklist/batch` (接收账户数组)。

- **管理 API**:所有 `/api/admin/*` 下的路由必须验证用户登录态,并检查 `admin_profiles` 中的角色。

- **初始化脚本**:系统首次运行时,需包含一个脚本或 Seed 方法,在数据库中创建一个默认的超级管理员账号:

- 邮箱:`admin@example.com`

- 密码:`admin123`(首次登录后需强制修改密码或给出提示)

## 5. UI/UX 细节指令

- **加载状态**:查询和提交表单时需显示 Loading 状态,防止重复点击。

- **空状态**:列表无数据时显示友好的占位图或文字。

- **批量查询优化**:若用户输入空行,前端应自动过滤;若输入超过 100 行,提示“单次查询上限为 100 个账户”。

- **布局**:

- 查询界面:居中卡片式布局,背景色柔和。

- 管理界面:左侧导航栏 + 右侧内容区。

## 6. 交付要求

1. 生成完整的项目文件结构。

2. 提供 `.env.example` 文件说明所需环境变量(Supabase URL 和 Anon Key)。

3. 提供清晰的 `README.md`,说明如何安装依赖、配置环境变量、运行数据库迁移以及启动项目。

4. 代码需有适当的注释,特别是权限判断逻辑部分。

请开始生成代码。

```

total_tokens
0
uiParsing
关闭