浏览代码

维护URS推广模块用户绑定关系文档

- 更新数据库设计文档,添加用户映射表详细设计
- 创建用户绑定关系专门文档,包含完整的功能说明和使用示例
- 更新服务层使用示例,补充UrsUserMappingService详细用法
- 更新设计概述文档,补充用户绑定关系的核心组件和流程
- 更新README文档,添加用户绑定关系文档链接
- 更新DEV文档,记录用户绑定关系文档维护进度
notfff 6 月之前
父节点
当前提交
10c7f44db9

+ 45 - 12
app/Module/UrsPromotion/Docs/数据库设计.md

@@ -4,10 +4,11 @@
 
 URS推广模块包含以下核心数据表:
 
-1. **urs_promotion_user_referrals** - URS用户推荐关系表
-2. **urs_promotion_user_talents** - URS达人等级表
-3. **urs_promotion_profits** - URS团队收益记录表
-4. **urs_promotion_talent_configs** - URS达人等级配置表
+1. **urs_promotion_user_mappings** - URS用户映射关系表(核心基础表)
+2. **urs_promotion_user_referrals** - URS用户推荐关系表
+3. **urs_promotion_user_talents** - URS达人等级表
+4. **urs_promotion_profits** - URS团队收益记录表
+5. **urs_promotion_talent_configs** - URS达人等级配置表
 
 ## 1.1 版本更新说明
 
@@ -22,7 +23,35 @@ URS推广模块包含以下核心数据表:
 
 ## 2. 表结构详细设计
 
-### 2.1 URS用户推荐关系表 (urs_promotion_user_referrals)
+### 2.1 URS用户映射关系表 (urs_promotion_user_mappings)
+
+URS用户映射关系表是整个URS推广系统的核心基础表,负责建立URS系统用户与农场系统用户之间的映射关系。该表实现了分离映射关系设计,使得URS推广关系可以独立于农场用户系统存在。
+
+| 字段名 | 类型 | 长度 | 默认值 | 说明 |
+|--------|------|------|--------|------|
+| id | bigint unsigned | - | AUTO_INCREMENT | 主键ID |
+| urs_user_id | bigint unsigned | - | - | URS用户ID(核心标识) |
+| user_id | bigint unsigned | - | - | 农场用户ID(对应users表) |
+| mapping_time | timestamp | - | CURRENT_TIMESTAMP | 映射建立时间(用户进入农场时间) |
+| status | tinyint | - | 1 | 状态:1有效,0无效 |
+| created_at | timestamp | - | CURRENT_TIMESTAMP | 创建时间 |
+| updated_at | timestamp | - | CURRENT_TIMESTAMP | 更新时间 |
+
+**索引设计:**
+- PRIMARY KEY (`id`)
+- UNIQUE KEY `uk_urs_user_id` (`urs_user_id`) - 确保一个URS用户只能映射一个农场用户
+- UNIQUE KEY `uk_user_id` (`user_id`) - 确保一个农场用户只能映射一个URS用户
+- KEY `idx_mapping_time` (`mapping_time`) - 支持按时间查询
+- KEY `idx_status` (`status`) - 支持按状态筛选
+
+**业务规则:**
+- 一个URS用户只能映射一个农场用户(一对一关系)
+- 一个农场用户只能映射一个URS用户(一对一关系)
+- 映射关系一旦建立,不允许修改,只能禁用
+- 用户进入农场时自动建立映射关系
+- 支持自动创建农场用户并建立映射关系
+
+### 2.2 URS用户推荐关系表 (urs_promotion_user_referrals)
 
 存储URS用户与其直接推荐人的关系,是URS推广系统的核心基础表。
 
@@ -49,7 +78,7 @@ URS推广模块包含以下核心数据表:
 - KEY `idx_referral_time` (`referral_time`)
 - KEY `idx_status` (`status`)
 
-### 2.2 URS达人等级表 (urs_promotion_user_talents)
+### 2.3 URS达人等级表 (urs_promotion_user_talents)
 
 存储URS用户的达人等级信息和团队统计数据。
 
@@ -75,7 +104,7 @@ URS推广模块包含以下核心数据表:
 - KEY `idx_direct_count` (`direct_count`)
 - KEY `idx_promotion_count` (`promotion_count`)
 
-### 2.3 URS团队收益记录表 (urs_promotion_profits)
+### 2.4 URS团队收益记录表 (urs_promotion_profits)
 
 记录URS团队收益分成的详细信息。
 
@@ -111,7 +140,7 @@ URS推广模块包含以下核心数据表:
 - KEY `idx_created_at` (`created_at`)
 - KEY `idx_status` (`status`)
 
-### 2.4 URS达人等级配置表 (urs_promotion_talent_configs)
+### 2.5 URS达人等级配置表 (urs_promotion_talent_configs)
 
 配置URS达人等级的要求和权益。
 
@@ -154,10 +183,11 @@ URS推广模块包含以下核心数据表:
 ## 3. 索引设计说明
 
 ### 3.1 主要查询场景
-1. **推荐关系查询**:根据URS用户ID或农场用户ID查询推荐人和被推荐人
-2. **达人等级查询**:根据URS用户ID或农场用户ID查询达人等级和团队统计
-3. **收益记录查询**:根据URS用户ID或农场用户ID、时间范围查询收益记录
-4. **双ID映射查询**:根据URS用户ID查询对应的农场用户ID,或反向查询
+1. **用户映射查询**:根据URS用户ID查询对应的农场用户ID,或反向查询
+2. **推荐关系查询**:根据URS用户ID或农场用户ID查询推荐人和被推荐人
+3. **达人等级查询**:根据URS用户ID或农场用户ID查询达人等级和团队统计
+4. **收益记录查询**:根据URS用户ID或农场用户ID、时间范围查询收益记录
+5. **批量映射查询**:批量获取多个URS用户ID对应的农场用户ID
 
 ### 3.2 索引优化策略
 1. **唯一索引**:确保数据唯一性,如用户推荐关系、推荐码等
@@ -172,12 +202,15 @@ URS推广模块包含以下核心数据表:
 - 所有user_id字段关联农场系统users表
 - urs_referrer_id和referrer_id分别关联对应系统的用户表
 - 确保推荐关系的用户在两个系统中都存在
+- 用户映射表的user_id必须在users表中存在
 
 ### 4.2 业务约束
+- 用户映射关系必须是一对一的(一个URS用户只能映射一个农场用户)
 - 用户不能推荐自己
 - 推荐关系不能形成循环
 - 达人等级必须符合配置要求
 - 收益分成比例必须在合理范围内
+- 映射关系一旦建立不允许修改,只能禁用
 
 ## 5. 数据初始化
 

+ 105 - 4
app/Module/UrsPromotion/Docs/服务层使用示例.md

@@ -132,27 +132,128 @@ echo "成功分发: {$successCount}, 跳过数量: {$skippedCount}, 总金额: {
 
 ## 单独服务使用示例
 
-### 1. 用户映射服务
+### 1. 用户映射服务 (UrsUserMappingService)
+
+#### 1.1 基础映射操作
 
 ```php
+// 创建用户映射关系(用户进入农场时)
+$ursUserId = 1001;
+$farmUserId = 2001;
+
+try {
+    $mapping = UrsUserMappingService::createMapping($ursUserId, $farmUserId);
+    echo "映射创建成功,ID: " . $mapping->id;
+    echo "映射时间: " . $mapping->mappingTime;
+} catch (\Exception $e) {
+    echo "映射创建失败: " . $e->getMessage();
+}
+
 // 检查用户是否已进入农场
 $hasEntered = UrsUserMappingService::hasEnteredFarm(1001);
+if ($hasEntered) {
+    echo "用户已进入农场";
+} else {
+    echo "用户未进入农场";
+}
 
 // 获取农场用户ID
 $farmUserId = UrsUserMappingService::getFarmUserId(1001);
+if ($farmUserId) {
+    echo "农场用户ID: " . $farmUserId;
+} else {
+    echo "未找到映射关系";
+}
 
-// 获取URS用户ID
+// 获取URS用户ID(反向查询)
 $ursUserId = UrsUserMappingService::getUrsUserId(2001);
+if ($ursUserId) {
+    echo "URS用户ID: " . $ursUserId;
+} else {
+    echo "未找到映射关系";
+}
+```
+
+#### 1.2 自动创建用户功能
+
+```php
+// 获取或自动创建农场用户(推荐使用)
+$ursUserId = 1002;
+$farmUserId = UrsUserMappingService::getOrCreateFarmUserId($ursUserId);
+
+if ($farmUserId) {
+    echo "农场用户ID: " . $farmUserId;
+    echo "用户名格式: urs-" . $ursUserId;
+} else {
+    echo "创建失败,请检查日志";
+}
+
+// 自动创建的用户信息
+// 用户名:urs-{ursUserId}
+// 密码:随机生成12位字符串
+// 状态:自动激活
+```
 
+#### 1.3 批量操作
+
+```php
 // 批量获取映射关系
-$ursUserIds = [1001, 1002, 1003];
+$ursUserIds = [1001, 1002, 1003, 1004];
 $mappings = UrsUserMappingService::batchGetFarmUserIds($ursUserIds);
 
+foreach ($mappings as $ursUserId => $farmUserId) {
+    echo "URS用户 {$ursUserId} 映射到农场用户 {$farmUserId}";
+}
+
+// 获取已进入农场的URS用户列表
+$enteredUsers = UrsUserMapping::getEnteredFarmUrsUserIds($ursUserIds);
+echo "已进入农场的用户数量: " . count($enteredUsers);
+
+// 批量检查用户状态
+foreach ($ursUserIds as $ursUserId) {
+    $hasEntered = UrsUserMappingService::hasEnteredFarm($ursUserId);
+    echo "URS用户 {$ursUserId}: " . ($hasEntered ? '已进入' : '未进入');
+}
+```
+
+#### 1.4 状态管理
+
+```php
+// 禁用映射关系
+$success = UrsUserMappingService::disableMapping(1001);
+if ($success) {
+    echo "映射关系已禁用";
+} else {
+    echo "禁用失败";
+}
+
+// 启用映射关系
+$success = UrsUserMappingService::enableMapping(1001);
+if ($success) {
+    echo "映射关系已启用";
+} else {
+    echo "启用失败";
+}
+```
+
+#### 1.5 统计和详情查询
+
+```php
 // 获取映射详情
 $detail = UrsUserMappingService::getMappingDetail(1001);
+if ($detail) {
+    echo "URS用户ID: " . $detail->ursUserId;
+    echo "农场用户ID: " . $detail->userId;
+    echo "映射时间: " . $detail->mappingTime;
+    echo "状态: " . ($detail->status ? '有效' : '无效');
+}
 
-// 获取映射统计
+// 获取映射统计信息
 $stats = UrsUserMappingService::getMappingStats();
+echo "总映射数: " . $stats['total_mappings'];
+echo "有效映射数: " . $stats['valid_mappings'];
+echo "无效映射数: " . $stats['invalid_mappings'];
+echo "今日新增: " . $stats['today_mappings'];
 ```
 
 ### 2. 推荐关系服务

+ 340 - 0
app/Module/UrsPromotion/Docs/用户绑定关系.md

@@ -0,0 +1,340 @@
+# URS推广模块 - 用户绑定关系详细文档
+
+## 1. 概述
+
+用户绑定关系是URS推广模块的核心基础功能,负责建立和管理URS系统用户与农场系统用户之间的映射关系。该功能实现了分离映射关系设计,使得URS推广系统可以独立于农场用户系统存在,同时保持两个系统之间的数据关联。
+
+### 1.1 设计原则
+
+- **分离映射关系**:URS推广关系只存储URS用户ID,通过映射表关联农场用户
+- **一对一映射**:一个URS用户只能映射一个农场用户,反之亦然
+- **自动创建机制**:支持在建立映射关系时自动创建农场用户
+- **状态管理**:支持映射关系的启用和禁用状态管理
+- **数据完整性**:确保映射关系的数据完整性和一致性
+
+### 1.2 核心功能
+
+1. **映射关系建立**:用户进入农场时建立URS用户与农场用户的映射关系
+2. **双向查询**:支持根据URS用户ID查询农场用户ID,或反向查询
+3. **批量操作**:支持批量查询和处理映射关系
+4. **状态管理**:支持映射关系的启用、禁用状态管理
+5. **自动创建**:不存在映射关系时自动创建新用户并建立映射
+6. **后台管理**:提供完整的后台管理界面进行映射关系管理
+
+## 2. 数据结构
+
+### 2.1 用户映射表 (urs_promotion_user_mappings)
+
+| 字段名 | 类型 | 说明 |
+|--------|------|------|
+| id | bigint | 主键ID |
+| urs_user_id | bigint | URS用户ID(核心标识) |
+| user_id | bigint | 农场用户ID(对应users表) |
+| mapping_time | timestamp | 映射建立时间(用户进入农场时间) |
+| status | tinyint | 状态:1有效,0无效 |
+| created_at | timestamp | 创建时间 |
+| updated_at | timestamp | 更新时间 |
+
+### 2.2 状态定义
+
+```php
+const STATUS_INVALID = 0; // 无效
+const STATUS_VALID = 1;   // 有效
+```
+
+### 2.3 索引设计
+
+- **主键索引**:`PRIMARY KEY (id)`
+- **唯一索引**:`UNIQUE KEY uk_urs_user_id (urs_user_id)` - 确保URS用户唯一映射
+- **唯一索引**:`UNIQUE KEY uk_user_id (user_id)` - 确保农场用户唯一映射
+- **普通索引**:`KEY idx_mapping_time (mapping_time)` - 支持时间查询
+- **普通索引**:`KEY idx_status (status)` - 支持状态筛选
+
+## 3. 服务层接口
+
+### 3.1 UrsUserMappingService 核心方法
+
+#### 3.1.1 创建映射关系
+```php
+/**
+ * 创建用户映射关系(用户进入农场时调用)
+ * @param int $ursUserId URS用户ID
+ * @param int $farmUserId 农场用户ID
+ * @return UrsUserMappingDto
+ */
+public static function createMapping(int $ursUserId, int $farmUserId): UrsUserMappingDto
+```
+
+#### 3.1.2 获取农场用户ID
+```php
+/**
+ * 根据URS用户ID获取农场用户ID
+ * @param int $ursUserId URS用户ID
+ * @return int|null 农场用户ID,如果未找到返回null
+ */
+public static function getFarmUserId(int $ursUserId): ?int
+```
+
+#### 3.1.3 获取URS用户ID
+```php
+/**
+ * 根据农场用户ID获取URS用户ID
+ * @param int $farmUserId 农场用户ID
+ * @return int|null URS用户ID,如果未找到返回null
+ */
+public static function getUrsUserId(int $farmUserId): ?int
+```
+
+#### 3.1.4 检查用户是否已进入农场
+```php
+/**
+ * 检查URS用户是否已进入农场
+ * @param int $ursUserId URS用户ID
+ * @return bool
+ */
+public static function hasEnteredFarm(int $ursUserId): bool
+```
+
+#### 3.1.5 自动创建用户并建立映射
+```php
+/**
+ * 获取或创建农场用户ID(不存在时自动创建)
+ * @param int $ursUserId URS用户ID
+ * @return int|null 农场用户ID,创建失败返回null
+ */
+public static function getOrCreateFarmUserId(int $ursUserId): ?int
+```
+
+#### 3.1.6 批量查询映射关系
+```php
+/**
+ * 批量获取URS用户ID对应的农场用户ID
+ * @param array $ursUserIds URS用户ID数组
+ * @return array 映射关系数组 [urs_user_id => farm_user_id]
+ */
+public static function batchGetFarmUserIds(array $ursUserIds): array
+```
+
+### 3.2 状态管理方法
+
+#### 3.2.1 禁用映射关系
+```php
+/**
+ * 禁用用户映射关系
+ * @param int $ursUserId URS用户ID
+ * @return bool
+ */
+public static function disableMapping(int $ursUserId): bool
+```
+
+#### 3.2.2 启用映射关系
+```php
+/**
+ * 启用用户映射关系
+ * @param int $ursUserId URS用户ID
+ * @return bool
+ */
+public static function enableMapping(int $ursUserId): bool
+```
+
+### 3.3 统计和查询方法
+
+#### 3.3.1 获取映射统计信息
+```php
+/**
+ * 获取映射统计信息
+ * @return array
+ */
+public static function getMappingStats(): array
+```
+
+#### 3.3.2 获取映射详情
+```php
+/**
+ * 获取用户映射详情
+ * @param int $ursUserId URS用户ID
+ * @return UrsUserMappingDto|null
+ */
+public static function getMappingDetail(int $ursUserId): ?UrsUserMappingDto
+```
+
+## 4. 业务流程
+
+### 4.1 用户进入农场流程
+
+```mermaid
+graph TD
+    A[URS用户进入农场] --> B{检查是否已有映射关系}
+    B -->|已存在| C{检查映射的农场用户ID是否匹配}
+    C -->|匹配| D[返回现有映射关系]
+    C -->|不匹配| E[抛出异常:已映射到其他用户]
+    B -->|不存在| F{检查农场用户ID是否已被映射}
+    F -->|已被映射| G[抛出异常:农场用户已被映射]
+    F -->|未被映射| H[创建新映射关系]
+    H --> I[记录操作日志]
+    I --> J[返回映射关系DTO]
+```
+
+### 4.2 自动创建用户流程
+
+```mermaid
+graph TD
+    A[获取或创建农场用户] --> B{检查是否已有映射关系}
+    B -->|已存在| C[返回现有农场用户ID]
+    B -->|不存在| D[生成用户名: urs-{ursUserId}]
+    D --> E[生成随机密码]
+    E --> F[调用UserService创建用户]
+    F --> G{用户创建是否成功}
+    G -->|失败| H[记录错误日志并返回null]
+    G -->|成功| I[创建用户映射关系]
+    I --> J[记录成功日志]
+    J --> K[返回农场用户ID]
+```
+
+## 5. 使用示例
+
+### 5.1 基础使用示例
+
+```php
+use App\Module\UrsPromotion\Services\UrsUserMappingService;
+
+// 用户进入农场时建立映射关系
+$ursUserId = 1001;
+$farmUserId = 2001;
+
+try {
+    $mapping = UrsUserMappingService::createMapping($ursUserId, $farmUserId);
+    echo "映射关系建立成功,ID: " . $mapping->id;
+} catch (\Exception $e) {
+    echo "建立失败: " . $e->getMessage();
+}
+
+// 查询映射关系
+$farmUserId = UrsUserMappingService::getFarmUserId(1001);
+$ursUserId = UrsUserMappingService::getUrsUserId(2001);
+
+// 检查用户是否已进入农场
+$hasEntered = UrsUserMappingService::hasEnteredFarm(1001);
+```
+
+### 5.2 自动创建用户示例
+
+```php
+// 获取或自动创建农场用户
+$ursUserId = 1002;
+$farmUserId = UrsUserMappingService::getOrCreateFarmUserId($ursUserId);
+
+if ($farmUserId) {
+    echo "农场用户ID: " . $farmUserId;
+} else {
+    echo "创建失败";
+}
+```
+
+### 5.3 批量操作示例
+
+```php
+// 批量获取映射关系
+$ursUserIds = [1001, 1002, 1003];
+$mappings = UrsUserMappingService::batchGetFarmUserIds($ursUserIds);
+
+foreach ($mappings as $ursUserId => $farmUserId) {
+    echo "URS用户 {$ursUserId} 映射到农场用户 {$farmUserId}";
+}
+
+// 获取已进入农场的URS用户列表
+$enteredUsers = UrsUserMapping::getEnteredFarmUrsUserIds($ursUserIds);
+```
+
+## 6. 后台管理功能
+
+### 6.1 管理界面功能
+
+- **列表页面**:显示所有用户映射关系,支持筛选和排序
+- **详情页面**:显示映射关系的详细信息
+- **状态管理**:支持启用/禁用映射关系
+- **关联查询**:提供到推荐关系和达人等级的快速链接
+- **操作日志**:记录所有映射关系的操作历史
+
+### 6.2 筛选功能
+
+- URS用户ID筛选
+- 农场用户ID筛选
+- 状态下拉选择筛选
+- 绑定时间范围筛选
+- 创建时间范围筛选
+
+### 6.3 自定义操作
+
+- **同步信息**:同步用户信息到映射关系
+- **验证映射**:验证映射关系的有效性
+- **查看推荐关系**:跳转到用户的推荐关系页面
+- **查看达人等级**:跳转到用户的达人等级页面
+
+## 7. 错误处理
+
+### 7.1 常见异常
+
+- **重复映射异常**:URS用户已映射到其他农场用户
+- **农场用户被占用异常**:农场用户已被其他URS用户映射
+- **用户创建失败异常**:自动创建农场用户时失败
+- **数据库操作异常**:数据库连接或操作失败
+
+### 7.2 异常处理示例
+
+```php
+try {
+    $mapping = UrsUserMappingService::createMapping($ursUserId, $farmUserId);
+} catch (\Exception $e) {
+    Log::error('用户映射创建失败', [
+        'urs_user_id' => $ursUserId,
+        'farm_user_id' => $farmUserId,
+        'error' => $e->getMessage()
+    ]);
+    
+    // 根据异常类型进行不同处理
+    if (strpos($e->getMessage(), '已映射') !== false) {
+        // 处理重复映射异常
+    }
+}
+```
+
+## 8. 性能优化
+
+### 8.1 缓存策略
+
+- 使用Redis缓存热点映射关系
+- 缓存用户是否已进入农场的状态
+- 批量查询时使用缓存减少数据库访问
+
+### 8.2 数据库优化
+
+- 合理使用索引提高查询性能
+- 批量操作时使用批量查询方法
+- 定期清理无效的映射关系记录
+
+## 9. 监控和日志
+
+### 9.1 操作日志
+
+所有映射关系的关键操作都会记录详细日志:
+- 映射关系创建
+- 映射关系状态变更
+- 自动用户创建
+- 异常情况记录
+
+### 9.2 统计监控
+
+- 每日新增映射关系数量
+- 映射关系状态分布
+- 自动创建用户成功率
+- 异常情况统计
+
+## 10. 最佳实践
+
+1. **事务处理**:关键操作使用数据库事务确保数据一致性
+2. **异常处理**:合理处理各种异常情况,提供友好的错误信息
+3. **日志记录**:记录详细的操作日志便于问题排查
+4. **性能优化**:使用批量操作和缓存提高性能
+5. **数据验证**:严格验证输入参数,确保数据完整性
+6. **状态管理**:合理使用状态字段管理映射关系的生命周期

+ 26 - 7
app/Module/UrsPromotion/Docs/设计概述.md

@@ -65,21 +65,25 @@ URS推广模块采用分层架构设计,包括以下层次:
 ### 3.2 核心组件
 
 1. **Service**:对外服务接口,提供模块的核心功能
+   - UrsUserMappingService:URS用户映射关系服务(核心基础服务)
    - UrsReferralService:URS推荐关系服务
    - UrsTalentService:URS达人等级服务
    - UrsProfitService:URS团队收益服务
 
 2. **Logic**:业务逻辑处理,封装复杂的业务规则
+   - UrsUserMappingLogic:URS用户映射关系逻辑
    - UrsReferralLogic:URS推荐关系逻辑
    - UrsTalentLogic:URS达人等级逻辑
    - UrsProfitLogic:URS团队收益逻辑
 
 3. **Repository**:数据访问和持久化,封装数据库操作
+   - UrsUserMappingRepository:URS用户映射关系仓库
    - UrsUserReferralRepository:URS用户推荐关系仓库
    - UrsUserTalentRepository:URS用户达人等级仓库
    - UrsProfitRepository:URS团队收益记录仓库
 
 4. **Model**:数据结构定义,对应数据库表
+   - UrsUserMapping:URS用户映射关系模型(核心基础模型)
    - UrsUserReferral:URS用户推荐关系模型
    - UrsUserTalent:URS用户达人等级模型
    - UrsProfit:URS团队收益记录模型
@@ -110,7 +114,20 @@ URS推广模块与其他模块的依赖关系:
 
 ## 4. 核心流程
 
-### 4.1 URS推荐关系建立流程
+### 4.1 URS用户绑定关系建立流程
+
+```
+URS用户进入农场 → 检查映射关系 → 建立/验证映射 → 更新相关数据 → 触发相关事件
+```
+
+1. URS用户请求进入农场系统
+2. 系统检查是否已存在映射关系
+3. 如不存在,创建新的映射关系或自动创建农场用户
+4. 如已存在,验证映射关系的有效性
+5. 更新用户的达人等级和团队统计
+6. 触发用户进入农场事件
+
+### 4.2 URS推荐关系建立流程
 
 ```
 用户注册 → 验证推荐码 → 建立推荐关系 → 更新团队统计 → 触发相关事件
@@ -134,7 +151,7 @@ URS推广模块与其他模块的依赖关系:
 4. 更新用户的达人等级信息
 5. 触发达人等级变更事件
 
-### 4.3 URS收益分成流程
+### 4.4 URS收益分成流程
 
 ```
 收益产生 → 获取团队关系 → 计算分成 → 发放收益 → 记录明细
@@ -150,17 +167,19 @@ URS推广模块与其他模块的依赖关系:
 
 ### 5.1 核心实体
 
-1. **URS用户推荐关系**:存储用户间的直接推荐关系(支持双ID系统)
-2. **URS用户达人等级**:存储用户的达人等级和团队统计(支持双ID系统)
-3. **URS团队收益记录**:记录所有的收益分成明细(支持双ID系统)
-4. **URS达人等级配置**:配置各个达人等级的要求和权益
+1. **URS用户映射关系**:建立URS用户与农场用户的一对一映射关系(核心基础实体)
+2. **URS用户推荐关系**:存储用户间的直接推荐关系(支持双ID系统)
+3. **URS用户达人等级**:存储用户的达人等级和团队统计(支持双ID系统)
+4. **URS团队收益记录**:记录所有的收益分成明细(支持双ID系统)
+5. **URS达人等级配置**:配置各个达人等级的要求和权益
 
 ### 5.2 关系设计
 
+- URS用户与农场用户:一对一(通过映射表建立关系,核心基础关系)
 - 用户与推荐关系:一对一(每个用户只能有一个直接推荐人)
 - 用户与达人等级:一对一(每个用户只有一个达人等级)
 - 用户与收益记录:一对多(用户可以有多条收益记录)
-- 用户与推荐码:一对多(用户可以有多个推荐码
+- 映射关系与其他实体:一对多(一个映射关系对应多个推荐关系、达人等级、收益记录
 
 ## 6. 技术特性
 

+ 2 - 2
app/Module/UrsPromotion/README.md

@@ -192,8 +192,8 @@ URS收益分成支持三代推广关系,包含两种收益类型:
 详细的开发文档请参考以下资源:
 - [设计概述](Docs/设计概述.md) - 模块的整体设计思路和架构
 - [数据库设计](Docs/数据库设计.md) - 详细的数据库表结构和关系设计
-- [模块接口](Docs/模块接口.md) - 模块对外提供的服务接口
-- [URS推广系统](Docs/URS推广系统.md) - URS推广系统的设计与实现
+- [用户绑定关系](Docs/用户绑定关系.md) - URS用户与农场用户映射关系的详细说明
+- [服务层使用示例](Docs/服务层使用示例.md) - 服务层接口的使用方法和示例
 
 ## 版本信息