feat():learning后台管理项目初始化

This commit is contained in:
yuj
2025-12-04 16:23:46 +08:00
parent 39886d50d2
commit 88e048f4d1
154 changed files with 28966 additions and 6 deletions

View File

@@ -0,0 +1,199 @@
# 邀请码申请管理功能
## 功能概述
本功能为 Goalfy 管理后台新增了邀请码申请管理功能,支持官网用户提交邀请码申请、后台管理员审批、自动发送邮件通知等完整流程。
## 功能架构
### 1. 数据库设计
新增邀请码申请表 `admin_invite_code_applications`
- `id` - 主键ID
- `email` - 申请邮箱(必填)
- `reason` - 申请理由(选填)
- `status` - 申请状态pending/approved/rejected
- `invite_code_id` - 关联的邀请码ID
- `reject_reason` - 拒绝理由
- `approved_at` - 审批时间
- `approved_by` - 审批人
- `email_sent_at` - 邮件发送时间
- `created_at` - 创建时间
- `updated_at` - 更新时间
- `deleted_at` - 软删除时间
### 2. 后端功能
#### API 接口
**公开接口(官网使用):**
- `POST /api/public/invite-code/apply` - 提交邀请码申请
**管理后台接口(需认证):**
- `GET /api/admin/invite-applications` - 获取申请列表
- `GET /api/admin/invite-applications/statistics` - 获取统计信息
- `GET /api/admin/invite-applications/pending-count` - 获取待处理数量
- `POST /api/admin/invite-applications/approve` - 审批通过
- `POST /api/admin/invite-applications/reject` - 审批拒绝
- `POST /api/admin/invite-applications/batch-approve` - 批量审批通过
- `POST /api/admin/invite-applications/batch-reject` - 批量审批拒绝
#### 邮件服务
实现了基于 SMTP 的邮件发送服务,支持:
- 审批通过邮件(包含邀请码和注册链接)
- 审批拒绝邮件(包含拒绝理由)
- 批量发送邮件
### 3. 前端功能
#### 管理后台界面
在邀请码管理页面新增:
- **待处理申请按钮** - 显示待处理数量,点击打开申请列表
- **申请列表弹窗** - 显示所有待处理申请,支持:
- 单个申请审批(同意/拒绝)
- 批量审批操作
- 拒绝原因填写
- 实时更新待处理数量
## 使用流程
### 1. 官网用户申请流程
1. 用户访问官网申请页面
2. 填写邮箱(必填)和申请理由(选填)
3. 提交申请
4. 系统提示"申请已提交将在1-2个工作日内处理"
### 2. 管理员审批流程
1. 管理员登录后台
2. 进入邀请码管理页面
3. 点击"待处理申请"按钮
4. 查看申请列表
5. 审批操作:
- **同意**自动创建邀请码默认7天有效期发送邮件通知
- **拒绝**:可填写拒绝原因,发送邮件通知
6. 支持批量操作
### 3. 邮件通知流程
**审批通过邮件内容:**
- 主题Goalfy 邀请码已发放
- 内容:邀请码、有效期、注册链接
- 注意事项:邀请码仅限使用一次
**审批拒绝邮件内容:**
- 主题:关于您的 Goalfy 申请
- 内容:拒绝原因(如未填写则使用默认文案)
- 联系方式support@goalfy.com
## 环境配置
### 邮件服务配置(.env
```env
# Email SMTP Configuration
EMAIL_SENDER=goalfymax@goalfyai.com
EMAIL_HOST=smtp.mxhichina.com
EMAIL_PORT=465
EMAIL_USERNAME=goalfymax@goalfyai.com
EMAIL_PASSWORD=efRuPRpGKS6gZpuw
```
## 部署说明
### 1. 数据库迁移
执行数据库迁移脚本:
```bash
cd /path/to/goalfymax-admin
./scripts/migrate.sh
```
### 2. 后端部署
```bash
# 构建后端
go build -o admin-server cmd/server/main.go
# 运行服务
./admin-server
```
### 3. 前端部署
```bash
cd /path/to/goalfymax-admin-web
npm install
npm run build
```
## 测试方法
### 1. API 测试
使用提供的测试脚本:
```bash
./scripts/test_api.sh
```
### 2. 官网申请页面测试
打开 `docs/invite_apply_example.html` 文件,可测试申请提交功能。
### 3. 手动测试流程
1. 通过官网页面提交申请
2. 登录管理后台
3. 查看待处理申请数量
4. 点击查看申请列表
5. 执行审批操作
6. 检查邮件是否发送成功
## 文件清单
### 后端文件
- `internal/models/invite_code_application.go` - 申请数据模型
- `internal/services/invite_code_application_service.go` - 申请业务逻辑
- `internal/services/email_service.go` - 邮件发送服务
- `internal/api/handlers/invite_code_application_handler.go` - API处理器
- `internal/api/routes/routes.go` - 路由配置(已更新)
- `migrations/20250131_add_invite_code_applications_table.sql` - 数据库迁移
### 前端文件
- `src/types/inviteCodeApplication.ts` - 申请类型定义
- `src/services/inviteCodeApplicationApi.ts` - API服务
- `src/pages/InviteCodes.tsx` - 邀请码管理页面(已更新)
### 脚本文件
- `scripts/migrate.sh` - 数据库迁移脚本
- `scripts/test_api.sh` - API测试脚本
### 文档文件
- `docs/invite_apply_example.html` - 官网申请页面示例
- `docs/invite_code_application_feature.md` - 功能说明文档(本文件)
## 注意事项
1. **邮件发送失败不会影响审批流程** - 邮件发送采用异步方式,失败不会导致事务回滚
2. **重复申请限制** - 同一邮箱如有待处理或已通过的申请,不能重复提交
3. **默认有效期** - 审批通过时如未指定有效期默认为7天
4. **批量操作** - 批量审批时如某个申请处理失败,不会影响其他申请的处理
## 后续优化建议
1. 增加申请统计报表功能
2. 支持自定义邮件模板
3. 增加申请历史记录查询
4. 支持导出申请数据
5. 增加申请频率限制(防止恶意申请)
6. 优化邮件发送队列,支持重试机制