Browse Source

完全移除URS推广模块推荐码功能

- 删除数据库表:kku_urs_promotion_referral_codes
- 移除字段:kku_urs_promotion_user_referrals.referral_code
- 更新UrsUserReferral模型:移除referral_code字段和相关逻辑
- 更新UrsReferralService:移除createReferral方法的referral_code参数
- 修复UrsUserReferralController:更新Grid和Show方法,移除推荐码显示
- 更新测试命令:修复UrsPromotionIntegrationTestCommand中的字段名
- 更新文档:数据库设计.md和README.md移除推荐码相关描述
- 添加移除记录文件:详细记录推荐码功能移除过程和影响
notfff 7 months ago
parent
commit
9db1e505

+ 12 - 11
app/Module/UrsPromotion/AdminControllers/UrsUserReferralController.php

@@ -6,10 +6,7 @@ use UCore\DcatAdmin\AdminController;
 use Spatie\RouteAttributes\Attributes\Resource;
 use App\Module\UrsPromotion\Models\UrsUserReferral;
 use App\Module\UrsPromotion\Repositorys\UrsUserReferralRepository;
-use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserReferralGridHelper;
-use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserReferralShowHelper;
-use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserReferralFormHelper;
-use App\Module\UrsPromotion\AdminControllers\Helper\UrsUserReferralFilterHelper;
+
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
 use Dcat\Admin\Form;
@@ -44,9 +41,8 @@ class UrsUserReferralController extends AdminController
     {
         return Grid::make(new UrsUserReferralRepository(), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
-            $grid->column('user_id', '用户ID')->sortable();
-            $grid->column('referrer_id', '推荐人ID')->sortable();
-            $grid->column('referral_code', '推荐码');
+            $grid->column('urs_user_id', 'URS用户ID')->sortable();
+            $grid->column('urs_referrer_id', 'URS推荐人ID')->sortable();
             $grid->column('referral_time', '推荐时间')->sortable();
             $grid->column('status', '状态')->using([
                 UrsUserReferral::STATUS_INVALID => '无效',
@@ -70,7 +66,13 @@ class UrsUserReferralController extends AdminController
             });
 
             $grid->filter(function (Grid\Filter $filter) {
-                $filterHelper = new UrsUserReferralFilterHelper($filter, $this);
+                $filter->equal('urs_user_id', 'URS用户ID');
+                $filter->equal('urs_referrer_id', 'URS推荐人ID');
+                $filter->equal('status', '状态')->select([
+                    UrsUserReferral::STATUS_INVALID => '无效',
+                    UrsUserReferral::STATUS_VALID => '有效',
+                ]);
+                $filter->between('created_at', '创建时间')->datetime();
             });
         });
     }
@@ -82,9 +84,8 @@ class UrsUserReferralController extends AdminController
     {
         return Show::make($id, new UrsUserReferralRepository(), function (Show $show) {
             $show->field('id', 'ID');
-            $show->field('user_id', '用户ID');
-            $show->field('referrer_id', '推荐人ID');
-            $show->field('referral_code', '推荐码');
+            $show->field('urs_user_id', 'URS用户ID');
+            $show->field('urs_referrer_id', 'URS推荐人ID');
             $show->field('referral_time', '推荐时间');
             $show->field('status', '状态')->using([
                 UrsUserReferral::STATUS_INVALID => '无效',

+ 6 - 6
app/Module/UrsPromotion/Commands/UrsPromotionIntegrationTestCommand.php

@@ -102,21 +102,21 @@ class UrsPromotionIntegrationTestCommand extends Command
         
         // 创建测试推荐关系: 2001 -> 2002 -> 2003 -> 2004
         $referrals = [
-            ['user_id' => 2002, 'referrer_id' => 2001, 'referral_code' => 'TEST2001'],
-            ['user_id' => 2003, 'referrer_id' => 2002, 'referral_code' => 'TEST2002'],
-            ['user_id' => 2004, 'referrer_id' => 2003, 'referral_code' => 'TEST2003'],
-            ['user_id' => 2005, 'referrer_id' => 2001, 'referral_code' => 'TEST2001'], // 2001的另一个直推
+            ['urs_user_id' => 2002, 'urs_referrer_id' => 2001],
+            ['urs_user_id' => 2003, 'urs_referrer_id' => 2002],
+            ['urs_user_id' => 2004, 'urs_referrer_id' => 2003],
+            ['urs_user_id' => 2005, 'urs_referrer_id' => 2001], // 2001的另一个直推
         ];
         
         foreach ($referrals as $referral) {
             UrsUserReferral::updateOrCreate(
-                ['user_id' => $referral['user_id']],
+                ['urs_user_id' => $referral['urs_user_id']],
                 array_merge($referral, [
                     'referral_time' => now(),
                     'status' => UrsUserReferral::STATUS_VALID,
                 ])
             );
-            $this->line("创建推荐关系: 用户{$referral['user_id']} <- 用户{$referral['referrer_id']}");
+            $this->line("创建推荐关系: URS用户{$referral['urs_user_id']} <- URS用户{$referral['urs_referrer_id']}");
         }
         
         $this->line('');

+ 124 - 0
app/Module/UrsPromotion/Databases/createsql/remove_referral_code_feature.sql

@@ -0,0 +1,124 @@
+-- URS推广模块推荐码功能移除记录
+-- 移除时间: 2025-06-15 18:01
+-- 版本: v3.0.0 (分离映射关系版本)
+-- 移除说明: 完全移除推荐码功能,简化系统架构
+
+-- ========================================
+-- 移除内容概述
+-- ========================================
+
+-- 1. 数据库表移除
+--    - 删除表: kku_urs_promotion_referral_codes
+--    - 移除字段: kku_urs_promotion_user_referrals.referral_code
+
+-- 2. 模型更新
+--    - UrsUserReferral模型: 移除referral_code字段和相关逻辑
+--    - 更新$fillable数组,移除referral_code
+
+-- 3. 服务层更新
+--    - UrsReferralService: 移除createReferral方法的referral_code参数
+--    - 移除推荐码相关的日志记录
+
+-- 4. 后台管理更新
+--    - UrsUserReferralController: 移除推荐码相关的显示和过滤
+--    - 更新Grid和Show方法,移除referral_code列
+
+-- 5. 测试命令更新
+--    - UrsPromotionIntegrationTestCommand: 更新测试数据,移除推荐码
+
+-- 6. 文档更新
+--    - 数据库设计.md: 更新版本说明,移除推荐码相关描述
+--    - README.md: 更新推荐关系说明,强调无推荐码机制
+
+-- ========================================
+-- 已执行的SQL语句
+-- ========================================
+
+-- 删除推荐码表
+-- DROP TABLE IF EXISTS `kku_urs_promotion_referral_codes`;
+
+-- 移除推荐关系表中的推荐码字段
+-- ALTER TABLE `kku_urs_promotion_user_referrals` 
+-- DROP KEY `idx_referral_code`,
+-- DROP COLUMN `referral_code`;
+
+-- ========================================
+-- 移除后的表结构
+-- ========================================
+
+-- kku_urs_promotion_user_referrals表结构 (移除推荐码后)
+-- 字段: id, urs_user_id, urs_referrer_id, referral_time, status, created_at, updated_at
+
+-- ========================================
+-- 移除验证查询
+-- ========================================
+
+-- 验证推荐码表已删除
+SELECT 'Referral Code Table Check' as check_type;
+SHOW TABLES LIKE '%referral_code%';
+
+-- 验证推荐关系表字段已移除
+SELECT 'Referral Code Field Check' as check_type;
+SELECT 
+    COUNT(*) as referral_code_field_count
+FROM information_schema.COLUMNS 
+WHERE TABLE_SCHEMA = DATABASE() 
+  AND TABLE_NAME = 'kku_urs_promotion_user_referrals'
+  AND COLUMN_NAME = 'referral_code';
+
+-- 验证推荐关系表当前结构
+SELECT 'User Referrals Table Structure' as check_type;
+DESCRIBE kku_urs_promotion_user_referrals;
+
+-- ========================================
+-- 移除原因和优势
+-- ========================================
+
+-- 移除原因:
+-- 1. 简化系统架构,减少复杂度
+-- 2. URS系统直接通过用户ID建立推荐关系,不需要推荐码
+-- 3. 减少数据冗余,提升系统性能
+-- 4. 降低维护成本,减少潜在的bug
+
+-- 移除后的优势:
+-- 1. 系统架构更加简洁清晰
+-- 2. 推荐关系建立更加直接高效
+-- 3. 减少了推荐码管理的复杂性
+-- 4. 降低了数据存储和查询成本
+-- 5. 提升了系统的可维护性
+
+-- ========================================
+-- 影响评估
+-- ========================================
+
+-- 数据影响:
+-- - 推荐码表已删除,但无实际数据丢失(表为空)
+-- - 推荐关系表的referral_code字段已移除,历史记录功能丢失
+-- - 现有推荐关系数据完整保留,功能不受影响
+
+-- 功能影响:
+-- - 推荐码生成和验证功能完全移除
+-- - 推荐关系建立改为直接通过URS用户ID
+-- - 后台管理界面移除推荐码相关显示
+-- - API接口参数简化,移除推荐码参数
+
+-- 兼容性影响:
+-- - 旧版本的推荐码相关API调用需要更新
+-- - 测试用例需要更新,移除推荐码相关测试
+-- - 文档需要更新,反映新的架构设计
+
+-- ========================================
+-- 移除状态
+-- ========================================
+-- 状态: 已完成
+-- 数据完整性: 已验证
+-- 功能测试: 需要验证
+-- 文档更新: 已完成
+-- 代码清理: 已完成
+
+-- 注意事项:
+-- 1. 推荐码功能已完全移除,无法恢复
+-- 2. 推荐关系建立现在直接使用URS用户ID
+-- 3. 后台管理界面已更新,移除推荐码相关功能
+-- 4. 相关测试命令已更新,需要重新验证
+-- 5. 建议进行完整的功能测试确保系统正常运行

+ 4 - 3
app/Module/UrsPromotion/Docs/数据库设计.md

@@ -11,9 +11,10 @@ URS推广模块包含以下核心数据表:
 
 ## 1.1 版本更新说明
 
-**v2.1.0 (双ID系统版本) 主要变更:**
-- 移除推荐码功能,简化系统架构
-- 实现双用户ID系统:urs_user_id(核心)+ user_id(辅助)
+**v3.0.0 (分离映射关系版本) 主要变更:**
+- 完全移除推荐码功能,简化系统架构
+- 实现分离映射关系设计:独立的用户映射表 + 纯URS推荐关系表
+- 推荐关系只存储URS用户ID,通过映射表关联农场用户
 - 支持三代推广关系(直推、间推、三推)
 - 新增两种收益类型:推广收益(按人头奖励)和种植收益(按比例分成)
 - 推广收益使用奖励组配置固定金额,种植收益使用比例配置

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

@@ -42,8 +42,10 @@ app/Module/UrsPromotion/
 ### 2. URS推荐关系
 - **直推关系**:用户A直接推荐用户B注册,A是B的直推上级
 - **间推关系**:用户A推荐用户B,用户B推荐用户C,A是C的间推上级
-- **团队成员**:用户的所有直推和间推下级构成该用户的URS团队
+- **三推关系**:用户A推荐用户B,用户B推荐用户C,用户C推荐用户D,A是D的三推上级
+- **团队成员**:用户的所有直推、间推和三推下级构成该用户的URS团队
 - **跳过机制**:上级未进入农场时跳过该层级,继续处理上上级
+- **无推荐码**:系统不使用推荐码机制,直接通过URS用户ID建立推荐关系
 
 ### 3. URS达人等级
 URS达人等级分为6个级别:
@@ -88,7 +90,6 @@ URS收益分成支持三代推广关系,包含两种收益类型:
 | id | bigint | 主键ID |
 | urs_user_id | bigint | URS用户ID |
 | urs_referrer_id | bigint | URS推荐人ID |
-| referral_code | varchar | 使用的推荐码(历史记录) |
 | referral_time | timestamp | 推荐时间 |
 
 ### 3. URS达人等级表 (urs_promotion_user_talents)

+ 1 - 4
app/Module/UrsPromotion/Services/UrsReferralService.php

@@ -19,11 +19,10 @@ class UrsReferralService
      *
      * @param int $ursUserId URS用户ID
      * @param int $ursReferrerId URS推荐人ID
-     * @param string|null $referralCode 推荐码(历史记录)
      * @return UrsUserReferral
      * @throws \Exception
      */
-    public static function createReferral(int $ursUserId, int $ursReferrerId, ?string $referralCode = null): UrsUserReferral
+    public static function createReferral(int $ursUserId, int $ursReferrerId): UrsUserReferral
     {
         try {
             DB::beginTransaction();
@@ -48,7 +47,6 @@ class UrsReferralService
             $referral = UrsUserReferral::create([
                 'urs_user_id' => $ursUserId,
                 'urs_referrer_id' => $ursReferrerId,
-                'referral_code' => $referralCode,
                 'referral_time' => now(),
                 'status' => UrsUserReferral::STATUS_VALID,
             ]);
@@ -61,7 +59,6 @@ class UrsReferralService
             Log::info('URS推荐关系创建成功', [
                 'urs_user_id' => $ursUserId,
                 'urs_referrer_id' => $ursReferrerId,
-                'referral_code' => $referralCode,
                 'referral_id' => $referral->id
             ]);