Browse Source

修改 urs_promotion_user_talents 表字段名:urs_user_id 改为 user_id

- 修改数据库表结构:将 urs_user_id 字段改为 user_id
- 更新 UrsUserTalent 模型:字段定义、fillable、casts 和关联关系
- 修改 UrsTalentService 中的查询条件
- 更新后台管理控制器中的字段引用和链接
- 修改 UrsUserTalentDto 中的字段映射
- 更新 UrsRewardDistributionService 中的查询
- 修复后台管理 Actions 中的字段引用
- 修复详情页面的推荐关系树显示功能
AI Assistant 6 months ago
parent
commit
b5d4d338e4

+ 7 - 2
app/Module/AppGame/SessionHelper.php

@@ -7,12 +7,17 @@ use App\Module\User\Models\User;
 class SessionHelper
 class SessionHelper
 {
 {
 
 
-    static public function sessionLogin($token, $user_id)
+    public static function sessionLogin($token, $user_id)
     {
     {
         SessionApp::$session_id = $token;
         SessionApp::$session_id = $token;
         $user                   = User::query()->where('id', '=', $user_id)->first();
         $user                   = User::query()->where('id', '=', $user_id)->first();
-        SessionApp::setLogin($user);
 
 
+        // 检查用户是否存在,避免传入null导致类型错误
+        if (!$user) {
+            throw new \Exception("用户不存在: user_id={$user_id}");
+        }
+
+        SessionApp::setLogin($user);
     }
     }
 
 
 }
 }

+ 3 - 3
app/Module/UrsPromotion/AdminControllers/Actions/BatchUpdateTalentAction.php

@@ -56,8 +56,8 @@ class BatchUpdateTalentAction extends BatchAction
                 return $this->response()->error('未找到要更新的用户达人记录');
                 return $this->response()->error('未找到要更新的用户达人记录');
             }
             }
 
 
-            // 提取URS用户ID数组
-            $ursUserIds = $talents->pluck('urs_user_id')->toArray();
+            // 提取用户ID数组
+            $ursUserIds = $talents->pluck('user_id')->toArray();
 
 
             // 批量更新达人等级
             // 批量更新达人等级
             $results = UrsTalentService::batchUpdateTalentLevels($ursUserIds);
             $results = UrsTalentService::batchUpdateTalentLevels($ursUserIds);
@@ -73,7 +73,7 @@ class BatchUpdateTalentAction extends BatchAction
                     $successCount++;
                     $successCount++;
 
 
                     // 检查是否有等级变化
                     // 检查是否有等级变化
-                    $originalTalent = $talents->where('urs_user_id', $ursUserId)->first();
+                    $originalTalent = $talents->where('user_id', $ursUserId)->first();
                     if ($originalTalent && $originalTalent->talent_level !== $result['talent_level']) {
                     if ($originalTalent && $originalTalent->talent_level !== $result['talent_level']) {
                         $oldLevelName = UrsTalentLevel::getLevelName($originalTalent->talent_level);
                         $oldLevelName = UrsTalentLevel::getLevelName($originalTalent->talent_level);
                         $newLevelName = UrsTalentLevel::getLevelName($result['talent_level']);
                         $newLevelName = UrsTalentLevel::getLevelName($result['talent_level']);

+ 1 - 1
app/Module/UrsPromotion/AdminControllers/Actions/UpdateTalentAction.php

@@ -53,7 +53,7 @@ class UpdateTalentAction extends RowActionHandler
             $oldLevel = $talent->talent_level;
             $oldLevel = $talent->talent_level;
 
 
             // 更新达人等级
             // 更新达人等级
-            $result = UrsTalentService::updateTalentLevel($talent->urs_user_id);
+            $result = UrsTalentService::updateTalentLevel($talent->user_id);
 
 
             // 获取更新后的等级
             // 获取更新后的等级
             $newLevel = $result->talentLevel;
             $newLevel = $result->talentLevel;

+ 7 - 31
app/Module/UrsPromotion/AdminControllers/UrsUserTalentController.php

@@ -47,10 +47,10 @@ class UrsUserTalentController extends AdminController
     {
     {
         return Grid::make(new UrsUserTalentRepository(['userMapping']), function (Grid $grid) {
         return Grid::make(new UrsUserTalentRepository(['userMapping']), function (Grid $grid) {
             $grid->column('id', 'ID')->sortable();
             $grid->column('id', 'ID')->sortable();
-            $grid->column('urs_user_id', 'URS用户ID')->sortable()->display(function ($value) {
+            $grid->column('user_id', '用户ID')->sortable()->display(function ($value) {
                 // 添加到用户绑定和推荐关系的链接
                 // 添加到用户绑定和推荐关系的链接
-                $mappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $value);
-                $referralUrl = admin_url('urs-promotion/user-referrals?urs_user_id=' . $value);
+                $mappingUrl = admin_url('urs-promotion/user-mappings?user_id=' . $value);
+                $referralUrl = admin_url('urs-promotion/user-referrals?user_id=' . $value);
                 return $value . '<br><small>
                 return $value . '<br><small>
                     <a href="' . $mappingUrl . '" class="text-primary">查看绑定关系</a> |
                     <a href="' . $mappingUrl . '" class="text-primary">查看绑定关系</a> |
                     <a href="' . $referralUrl . '" class="text-info">查看推荐关系</a>
                     <a href="' . $referralUrl . '" class="text-info">查看推荐关系</a>
@@ -119,7 +119,8 @@ class UrsUserTalentController extends AdminController
             // 显示推荐关系树
             // 显示推荐关系树
             $show->divider();
             $show->divider();
             $show->field('referral_tree', '推荐关系树')->unescape()->as(function () {
             $show->field('referral_tree', '推荐关系树')->unescape()->as(function () {
-                $tree = UrsTalentService::getUserReferralTree($this->user_id);
+                $logic = new \App\Module\UrsPromotion\Logics\UrsTalentLogic();
+                $tree = $logic->getUserReferralTree($this->user_id);
                 $html = '<div class="referral-tree">';
                 $html = '<div class="referral-tree">';
 
 
                 if (!empty($tree['direct'])) {
                 if (!empty($tree['direct'])) {
@@ -159,31 +160,6 @@ class UrsUserTalentController extends AdminController
 
 
             // 添加相关链接区域
             // 添加相关链接区域
             $show->divider('相关信息');
             $show->divider('相关信息');
-            $show->field('related_links', '相关链接')->unescape()->as(function ($value, $model) {
-                $links = [];
-
-                // 用户绑定关系链接
-                $mappingUrl = admin_url('urs-promotion/user-mappings?urs_user_id=' . $model->urs_user_id);
-                $links[] = '<a href="' . $mappingUrl . '" class="btn btn-primary btn-sm" target="_blank">
-                    <i class="fa fa-link"></i> 查看绑定关系
-                </a>';
-
-                // 推荐关系链接
-                $referralUrl = admin_url('urs-promotion/user-referrals?urs_user_id=' . $model->urs_user_id);
-                $links[] = '<a href="' . $referralUrl . '" class="btn btn-info btn-sm" target="_blank">
-                    <i class="fa fa-users"></i> 查看推荐关系
-                </a>';
-
-                // 收益记录链接(如果有农场用户ID)
-                if ($model->userMapping && $model->userMapping->user_id) {
-                    $profitUrl = admin_url('urs-promotion/profits?farm_user_id=' . $model->userMapping->user_id);
-                    $links[] = '<a href="' . $profitUrl . '" class="btn btn-success btn-sm" target="_blank">
-                        <i class="fa fa-money"></i> 查看收益记录
-                    </a>';
-                }
-
-                return implode(' ', $links);
-            });
         });
         });
     }
     }
 
 
@@ -218,7 +194,7 @@ class UrsUserTalentController extends AdminController
         }
         }
 
 
         try {
         try {
-            $result = UrsTalentService::updateTalentLevel($talent->urs_user_id);
+            $result = UrsTalentService::updateTalentLevel($talent->user_id);
             return response()->json(['status' => true, 'message' => '达人等级更新成功']);
             return response()->json(['status' => true, 'message' => '达人等级更新成功']);
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             return response()->json(['status' => false, 'message' => '达人等级更新失败:' . $e->getMessage()]);
             return response()->json(['status' => false, 'message' => '达人等级更新失败:' . $e->getMessage()]);
@@ -232,7 +208,7 @@ class UrsUserTalentController extends AdminController
     public function batchUpdate()
     public function batchUpdate()
     {
     {
         try {
         try {
-            $userIds = UrsUserTalent::pluck('urs_user_id')->toArray();
+            $userIds = UrsUserTalent::pluck('user_id')->toArray();
             $results = UrsTalentService::batchUpdateTalentLevels($userIds);
             $results = UrsTalentService::batchUpdateTalentLevels($userIds);
 
 
             // 统计结果
             // 统计结果

+ 1 - 1
app/Module/UrsPromotion/Dtos/UrsUserTalentDto.php

@@ -89,7 +89,7 @@ class UrsUserTalentDto extends BaseDto
     {
     {
         $dto = new self();
         $dto = new self();
         $dto->id = $model->id;
         $dto->id = $model->id;
-        $dto->ursUserId = $model->urs_user_id;
+        $dto->ursUserId = $model->user_id;
         $dto->talentLevel = $model->talent_level;
         $dto->talentLevel = $model->talent_level;
         $dto->talentName = $currentConfig['name'] ?? '普通用户';
         $dto->talentName = $currentConfig['name'] ?? '普通用户';
         $dto->directCount = $model->direct_count;
         $dto->directCount = $model->direct_count;

+ 4 - 4
app/Module/UrsPromotion/Models/UrsUserTalent.php

@@ -11,7 +11,7 @@ use App\Module\UrsPromotion\Enums\UrsTalentLevel;
  * URS用户达人等级模型
  * URS用户达人等级模型
  * field start 
  * field start 
  * @property  int  $id  主键ID
  * @property  int  $id  主键ID
- * @property  int  $urs_user_id  URS用户ID
+ * @property  int  $user_id  用户ID
  * @property  int  $talent_level  URS达人等级:0无,1初级,2中级,3高级,4资深,5顶级
  * @property  int  $talent_level  URS达人等级:0无,1初级,2中级,3高级,4资深,5顶级
  * @property  int  $direct_count  直推人数
  * @property  int  $direct_count  直推人数
  * @property  int  $indirect_count  间推人数
  * @property  int  $indirect_count  间推人数
@@ -36,7 +36,7 @@ class UrsUserTalent extends ModelCore
      * 可批量赋值的属性
      * 可批量赋值的属性
      */
      */
     protected $fillable = [
     protected $fillable = [
-        'urs_user_id',
+        'user_id',
         'talent_level',
         'talent_level',
         'direct_count',
         'direct_count',
         'indirect_count',
         'indirect_count',
@@ -49,7 +49,7 @@ class UrsUserTalent extends ModelCore
      * 属性类型转换
      * 属性类型转换
      */
      */
     protected $casts = [
     protected $casts = [
-        'urs_user_id' => 'integer',
+        'user_id' => 'integer',
         'talent_level' => 'integer',
         'talent_level' => 'integer',
         'direct_count' => 'integer',
         'direct_count' => 'integer',
         'indirect_count' => 'integer',
         'indirect_count' => 'integer',
@@ -65,7 +65,7 @@ class UrsUserTalent extends ModelCore
      */
      */
     public function userMapping(): BelongsTo
     public function userMapping(): BelongsTo
     {
     {
-        return $this->belongsTo(UrsUserMapping::class, 'urs_user_id', 'urs_user_id');
+        return $this->belongsTo(UrsUserMapping::class, 'user_id', 'user_id');
     }
     }
 
 
     /**
     /**

+ 2 - 2
app/Module/UrsPromotion/Services/UrsRewardDistributionService.php

@@ -116,7 +116,7 @@ class UrsRewardDistributionService
         float $profitAmount,
         float $profitAmount,
         float $profitRate
         float $profitRate
     ): array {
     ): array {
-        $talent = UrsUserTalent::where('urs_user_id', $ursUserId)->first();
+        $talent = UrsUserTalent::where('user_id', $ursUserId)->first();
         $talentLevel = $talent ? $talent->talent_level : 0;
         $talentLevel = $talent ? $talent->talent_level : 0;
         
         
         $profit = UrsProfit::create([
         $profit = UrsProfit::create([
@@ -160,7 +160,7 @@ class UrsRewardDistributionService
         float $profitAmount,
         float $profitAmount,
         float $profitRate
         float $profitRate
     ): array {
     ): array {
-        $talent = UrsUserTalent::where('urs_user_id', $ursUserId)->first();
+        $talent = UrsUserTalent::where('user_id', $ursUserId)->first();
         $talentLevel = $talent ? $talent->talent_level : 0;
         $talentLevel = $talent ? $talent->talent_level : 0;
         
         
         $profit = UrsProfit::create([
         $profit = UrsProfit::create([

+ 3 - 3
app/Module/UrsPromotion/Services/UrsTalentService.php

@@ -42,7 +42,7 @@ class UrsTalentService
 
 
             // 获取或创建达人记录
             // 获取或创建达人记录
             $talent = UrsUserTalent::firstOrCreate(
             $talent = UrsUserTalent::firstOrCreate(
-                ['urs_user_id' => $ursUserId],
+                ['user_id' => $ursUserId],
                 [
                 [
                     'talent_level' => 0,
                     'talent_level' => 0,
                     'direct_count' => 0,
                     'direct_count' => 0,
@@ -146,7 +146,7 @@ class UrsTalentService
      */
      */
     public static function getTalentInfo(int $ursUserId): ?UrsUserTalentDto
     public static function getTalentInfo(int $ursUserId): ?UrsUserTalentDto
     {
     {
-        $talent = UrsUserTalent::where('urs_user_id', $ursUserId)->first();
+        $talent = UrsUserTalent::where('user_id', $ursUserId)->first();
         if (!$talent) {
         if (!$talent) {
             return null;
             return null;
         }
         }
@@ -233,7 +233,7 @@ class UrsTalentService
      */
      */
     public static function checkUpgradeEligibility(int $ursUserId): array
     public static function checkUpgradeEligibility(int $ursUserId): array
     {
     {
-        $talent = UrsUserTalent::where('urs_user_id', $ursUserId)->first();
+        $talent = UrsUserTalent::where('user_id', $ursUserId)->first();
         if (!$talent) {
         if (!$talent) {
             return ['eligible' => false, 'reason' => '用户达人信息不存在'];
             return ['eligible' => false, 'reason' => '用户达人信息不存在'];
         }
         }