# 邀请码系统 — 前端 + 后端增强 ## Context 后端(Java)已实现邀请码的生成/校验/列表/删除。SQL 已执行。现在需要: 1. 注册页面添加邀请码输入框(模板已有注释掉的代码,启用即可) 2. 超管后台新增邀请码管理页面(生成 + 列表 + 删除) 3. 后端 list 接口需增强,当前只返回 code 字符串,前端需要完整数据(用户名、时间等) 4. 数据库添加菜单条目 --- ## 一、后端增强 ### 1.1 新增 InvitationCodeVO **新建**: `java/src/main/java/com/payment/platform/module/system/invite/dto/InvitationCodeVO.java` ```java // 字段:id, code, status, description, createdBy(创建者用户名), createdTime, // usedBy(使用者用户名), usedTime ``` ### 1.2 修改 InvitationCodeService.list() **修改**: `InvitationCodeService.java` - 返回类型从 `PageResult` 改为 `PageResult` - 查 user 表填充 createdBy → 用户名、usedBy → 用户名 - 注入 UserMapper 做关联查询 ### 1.3 修改 InvitationCodeController.list() **修改**: `InvitationCodeController.java` - 返回类型适配新的 VO --- ## 二、前端 API 层 ### 2.1 新建邀请码 API **新建**: `frontend/src/api/module_system/invitation.ts` 参照 `params.ts` 模式: - `generateInvitation(body: { count: number; description?: string })` → POST `/system/invite/generate` - `listInvitation(query: InvitationPageQuery)` → GET `/system/invite/list` - `deleteInvitation(body: number[])` → DELETE `/system/invite/delete` ### 2.2 修改用户 API **修改**: `frontend/src/api/module_system/user.ts` - `RegisterForm` 接口取消注释 `invite_code: string`(第 153 行) --- ## 三、前端页面 ### 3.1 注册页 — 启用邀请码字段 **修改**: `frontend/src/views/module_system/auth/components/Register.vue` 模板和校验规则中已有注释掉的邀请码代码,取消注释即可: - 模板第 5-12 行:邀请码输入框(el-form-item prop="invite_code") - 脚本第 142-148 行:invite_code 校验规则 ### 3.2 邀请码管理页 **新建**: `frontend/src/views/module_system/invitation/index.vue` 参照 `notice/index.vue` 的 CURD 模式但更简单(无编辑/详情): - **搜索区**: code(文本)+ status(下拉:未使用/已使用) - **工具栏**: 生成邀请码按钮 + 删除按钮 + 刷新/列过滤 - **表格列**: code(邀请码), status(状态标签 0=绿色"未使用"/1=红色"已使用"), description(备注), created_by(创建者), created_time(创建时间), used_by(使用者), used_time(使用时间), 操作(删除) - **生成弹窗**: EnhancedDialog 内含表单 — count(数量,默认1)+ description(备注,可选) - **删除**: 确认对话框,支持批量 组件使用: ``` PageSearch → PageContent(CrudToolbarLeft + CrudToolbarRight + el-table) → EnhancedDialog(生成弹窗) ``` 权限前缀:`module_system:invitation` --- ## 四、菜单 SQL ### 4.1 新建菜单迁移 **新建**: `java/sql/005_invitation_menu.sql` 参照 `003_service_provider_menu.sql` 模式: ```sql -- 在「系统管理」目录下新增「邀请码管理」菜单 -- 权限标识: module_system:invitation:list / generate / delete -- 路由: /invitation → views/module_system/invitation/index.vue ``` --- ## 五、文件变更清单 | 操作 | 文件 | |------|------| | **新建** | `java/.../invite/dto/InvitationCodeVO.java` | | **修改** | `java/.../invite/service/InvitationCodeService.java` | | **修改** | `java/.../invite/controller/InvitationCodeController.java` | | **新建** | `frontend/src/api/module_system/invitation.ts` | | **修改** | `frontend/src/api/module_system/user.ts` | | **修改** | `frontend/src/views/module_system/auth/components/Register.vue` | | **新建** | `frontend/src/views/module_system/invitation/index.vue` | | **新建** | `java/sql/005_invitation_menu.sql` | ## 六、验证 1. 后端编译:`mvn compile -f java/pom.xml` 2. 执行 `005_invitation_menu.sql` 3. 前端启动:`cd frontend && pnpm dev` 4. 测试: - 超管登录 → 左侧菜单出现「邀请码管理」→ 生成邀请码 → 列表显示 - 注册页 → 邀请码输入框可见 → 必填校验 → 输入有效码注册成功 → 管理页显示"已使用" - 管理页 → 删除未使用的邀请码 → 确认删除成功