# 邀请注册功能使用说明

## 功能概述

邀请注册功能允许管理员生成邀请链接和二维码，邀请新用户注册并自动建立推荐关系。支持网页二维码和小程序码两种方式。

## 功能特点

- ✅ **简单易用**：基于现有推荐关系功能，无需复杂配置
- ✅ **双重支持**：支持网页注册和小程序注册
- ✅ **自动关联**：用户注册后自动建立推荐关系
- ✅ **多种分享**：支持链接复制、二维码下载等分享方式

## 使用流程

### 管理员操作

1. **进入管理页面**
   - 访问 `/shop/admin` 商店管理员页面
   - 点击"邀请注册"按钮

2. **生成邀请码**
   - 弹窗会自动生成包含当前用户ID的邀请链接
   - 选择二维码类型：网页二维码或小程序码

3. **分享邀请**
   - 复制邀请链接发送给用户
   - 下载二维码图片分享
   - 让用户直接扫描屏幕上的二维码

### 用户注册

#### 网页注册流程
1. 用户点击邀请链接或扫描网页二维码
2. 进入注册页面，会显示邀请提示信息
3. 填写注册信息完成注册
4. 系统自动建立与邀请人的推荐关系

#### 小程序注册流程
1. 用户扫描小程序码进入小程序
2. 小程序自动识别邀请参数
3. 用户在小程序内完成注册
4. 系统自动建立推荐关系

## 技术实现

### 邀请链接格式
```
网页注册: https://domain.com/register?inviter=123
小程序码: scene参数为 invite_123
```

### 核心文件

1. **邀请弹窗组件**
   ```
   src/views/shop/shopAdmin/components/invitation-modal.vue
   ```

2. **小程序码API**
   ```
   src/api/miniprogram/index.ts
   ```

3. **注册页面优化**
   ```
   src/views/passport/register/index.vue
   ```

### API接口

#### 生成小程序码
```typescript
// 生成邀请注册小程序码
generateInviteRegisterCode(inviterId: number): Promise<string>

// 参数说明
{
  page: 'pages/register/index',  // 小程序注册页面
  scene: 'invite_123',           // 邀请参数
  width: 180,                    // 二维码宽度
  envVersion: 'trial'            // 环境版本
}
```

#### 建立推荐关系
```typescript
// 绑定推荐关系
bindUserReferee(data: UserReferee): Promise<string>

// 参数说明
{
  dealerId: 123,    // 邀请人ID
  userId: 456,      // 被邀请人ID
  level: 1          // 推荐层级
}
```

## 配置说明

### 小程序码配置

在 `src/api/miniprogram/index.ts` 中可以配置：

```typescript
// 基础URL配置
const BaseUrl = SERVER_API_URL;

// 小程序页面配置
const MINIPROGRAM_PAGES = {
  register: 'pages/register/index',  // 注册页面
  index: 'pages/index/index'         // 首页
};

// 环境配置
const ENV_VERSION = 'trial'; // release | trial | develop
```

### 注册页面配置

在注册页面中，系统会自动检测URL参数：
- `inviter`: 邀请人ID
- 检测到邀请参数时显示邀请提示

## 错误处理

### 常见问题

1. **小程序码加载失败**
   - 检查小程序码生成接口是否正常
   - 确认 `BaseUrl` 配置正确
   - 查看网络连接状态

2. **推荐关系建立失败**
   - 检查用户ID是否正确获取
   - 确认推荐关系API接口正常
   - 查看控制台错误日志

3. **邀请链接无效**
   - 确认URL参数格式正确
   - 检查注册页面参数解析逻辑

### 调试方法

1. **开启控制台日志**
   ```javascript
   // 在浏览器控制台查看
   localStorage.setItem('debug', 'true');
   ```

2. **检查网络请求**
   - 打开浏览器开发者工具
   - 查看Network标签页的API请求

3. **验证参数传递**
   ```javascript
   // 检查邀请参数
   const urlParams = new URLSearchParams(window.location.search);
   console.log('邀请人ID:', urlParams.get('inviter'));
   ```

## 扩展功能

### 自定义小程序页面
可以根据需要修改小程序码跳转的页面：

```typescript
export async function generateCustomInviteCode(inviterId: number, page: string) {
  return generateMiniProgramCode({
    page: page,
    scene: `invite_${inviterId}`,
    width: 180,
    checkPath: true,
    envVersion: 'trial'
  });
}
```

### 添加邀请统计
可以扩展功能添加邀请统计：

```typescript
// 统计邀请成功数量
export async function getInviteStats(inviterId: number) {
  // 查询推荐关系表统计数据
  return listUserReferee({ dealerId: inviterId });
}
```

## 注意事项

1. **权限控制**：确保只有管理员可以生成邀请码
2. **参数验证**：注册时需要验证邀请人ID的有效性
3. **重复注册**：防止同一用户重复建立推荐关系
4. **小程序配置**：确保小程序端正确处理scene参数

## 更新日志

- **v1.0.0**: 基础邀请注册功能
- **v1.1.0**: 添加小程序码支持
- **v1.2.0**: 优化用户体验和错误处理
