实现用户端反向迁移功能
时间：2025年1月12日

功能描述：
复用现有的用户端迁移代码，为普通用户提供反向迁移功能。当 slave_level = -1 时，用户可以在个人资料页面进行反向迁移操作，将主服务器的账号数据迁移到本服务器。

实现内容：

### 1. 用户端处理逻辑
**文件：user.php**
- 添加 `mode == 'reverse_migrate'` 处理分支
- 复用现有的 AJAX 响应格式和错误处理机制
- 调用 `reverse_migrate_user()` 函数执行反向迁移
- 添加反向迁移相关的显示变量设置

### 2. 用户界面模板
**文件：templates/default/user.htm**
- 添加反向迁移功能区域（仅在反向迁移模式下显示）
- 复用现有的表单结构和样式设计
- 添加独立的 JavaScript 函数 `reverseMigrateData()`
- 优化显示逻辑，避免同时显示正向同步和反向迁移功能

### 3. 功能特点

#### 3.1 界面设计
- **颜色区分**：使用橙红色主题区分反向迁移功能
- **清晰标识**：明确标注"反向迁移功能 (从主服务器迁移到本服务器)"
- **状态显示**：显示当前模式和主服务器名称
- **历史记录**：显示已迁移的主服务器账户和迁移时间

#### 3.2 用户体验
- **表单复用**：复用现有的用户名密码输入框设计
- **确认机制**：JavaScript 确认对话框防止误操作
- **AJAX 提交**：无刷新提交，实时显示结果
- **详细说明**：提供操作说明和注意事项

#### 3.3 安全性
- **模式检查**：只在 slave_level = -1 时显示功能
- **密码验证**：需要输入主服务器密码进行验证
- **数据保护**：明确说明不会影响主服务器数据

### 4. 代码复用

#### 4.1 复用的现有功能
- **AJAX 处理框架**：复用 `postCmd()` 函数和响应格式
- **表单结构**：复用用户名密码输入表单设计
- **样式系统**：复用现有的 CSS 样式和布局
- **错误处理**：复用现有的错误信息显示机制

#### 4.2 新增的独立功能
- **反向迁移处理**：独立的 `mode == 'reverse_migrate'` 分支
- **显示变量**：独立的 `$show_reverse_migrate_button` 等变量
- **JavaScript 函数**：独立的 `reverseMigrateData()` 函数
- **状态查询**：使用 `get_reverse_migration_status()` 查询迁移状态

### 5. 界面逻辑

#### 5.1 显示条件
```php
// 正向同步：slave_level >= 1 且不是反向迁移模式
$show_sync_button = ($slave_level >= 1 && !empty($master_server_name));

// 反向迁移：slave_level == -1
$show_reverse_migrate_button = (is_reverse_migration_mode() && !empty($master_server_name));
```

#### 5.2 互斥显示
- 正向同步和反向迁移功能互斥显示
- 使用 `$show_sync_button && !$show_reverse_migrate_button` 确保不会同时显示

### 6. 用户操作流程
1. 用户访问个人资料页面 (user.php)
2. 系统检测到反向迁移模式，显示反向迁移功能区域
3. 用户输入主服务器的用户名和密码
4. 点击"迁移账号数据到本服务器"按钮
5. JavaScript 确认对话框确认操作
6. AJAX 提交到 user.php?mode=reverse_migrate
7. 系统执行反向迁移并返回结果
8. 页面显示迁移结果和状态更新

### 7. 技术实现要点

#### 7.1 数据处理
- 密码使用 `md5()` 加密后传递给后端函数
- 目标用户名默认使用当前登录用户名 `$cuser`
- 复用现有的 `compatible_json_encode()` 函数格式化响应

#### 7.2 错误处理
- 检查反向迁移模式状态
- 验证用户名密码输入
- 处理数据库连接错误
- 显示详细的错误信息

#### 7.3 状态管理
- 查询和显示用户的反向迁移历史
- 更新按钮文本显示当前状态
- 记录迁移时间和来源信息

### 8. 测试文件
**文件：test_user_reverse_migration.php**
- 提供用户端反向迁移功能的完整测试
- 模拟用户界面显示效果
- 测试数据库连接和迁移功能
- 显示界面预览和操作说明

### 9. 与管理端功能的区别
- **权限范围**：用户只能迁移自己的账号，管理员可以批量迁移
- **操作对象**：用户端固定迁移到当前登录用户，管理端可以指定目标
- **界面风格**：用户端使用更友好的界面设计和说明文字
- **功能入口**：用户端在个人资料页面，管理端在用户管理页面

这个实现为普通用户提供了一个安全、友好的反向迁移功能，让用户可以自主地将主服务器的数据迁移到本服务器，同时保持了与现有用户界面的一致性和易用性。
