read-c-users-1-claude-claude-md-before-s-idempotent-harp.md 4.3 KB

邀请码系统 — 前端 + 后端增强

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

// 字段:id, code, status, description, createdBy(创建者用户名), createdTime,
//        usedBy(使用者用户名), usedTime

1.2 修改 InvitationCodeService.list()

修改: InvitationCodeService.java

  • 返回类型从 PageResult<String> 改为 PageResult<InvitationCodeVO>
  • 查 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 模式:

-- 在「系统管理」目录下新增「邀请码管理」菜单
-- 权限标识: 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. 测试:
    • 超管登录 → 左侧菜单出现「邀请码管理」→ 生成邀请码 → 列表显示
    • 注册页 → 邀请码输入框可见 → 必填校验 → 输入有效码注册成功 → 管理页显示"已使用"
    • 管理页 → 删除未使用的邀请码 → 确认删除成功