Kaynağa Gözat

修复URS用户绑定关系详情页面报错

- 修正Show页面as方法回调函数的参数定义
- Show页面的as方法回调函数只接收一个参数()
- 在回调函数中指向当前模型对象
- 修复ArgumentCountError错误,详情页面现在正常显示
AI Assistant 6 ay önce
ebeveyn
işleme
8b7cfa8340

+ 108 - 0
AiWork/202506/222355-优化URS用户绑定关系列表农场用户列显示.md

@@ -0,0 +1,108 @@
+# 优化URS用户绑定关系列表农场用户列显示
+
+## 任务时间
+- 开始时间:2025年06月22日 23:55:55 CST
+- 完成时间:2025年06月22日 23:59:xx CST
+
+## 任务描述
+将URS用户绑定关系列表中的"农场用户ID"列改为"农场用户"列,显示用户ID和昵称信息。
+
+## 需求分析
+- 原来只显示农场用户ID数字
+- 现在需要显示ID + 昵称的组合信息
+- 保持原有的查看收益记录链接功能
+- 提升用户体验,便于识别用户
+
+## 实现方案
+
+### 1. 修改Repository预加载关联数据
+**文件**: `app/Module/UrsPromotion/Repositorys/UrsUserMappingRepository.php`
+
+```php
+/**
+ * 获取查询构建器,预加载关联数据
+ *
+ * @return \Illuminate\Database\Eloquent\Builder
+ */
+public function getQueryBuilder()
+{
+    return parent::getQueryBuilder()->with(['user.info']);
+}
+```
+
+**说明**: 预加载用户及其详细信息,避免N+1查询问题,提升性能。
+
+### 2. 修改Grid列显示逻辑
+**文件**: `app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php`
+
+```php
+$grid->column('user_id', '农场用户')->sortable()->display(function ($value) {
+    if (!$value) return '<span class="text-muted">未绑定</span>';
+    
+    // 获取当前行的模型数据
+    $model = $this;
+    
+    // 获取用户昵称
+    $nickname = $model->user && $model->user->info ? $model->user->info->nickname : '';
+    $displayText = $value;
+    if ($nickname) {
+        $displayText .= '<br><small class="text-success">' . $nickname . '</small>';
+    }
+    
+    // 添加到收益记录的链接
+    $profitUrl = admin_url('urs-promotion/profits?farm_user_id=' . $value);
+    $displayText .= '<br><small>
+        <a href="' . $profitUrl . '" class="text-info">查看收益记录</a>
+    </small>';
+    
+    return $displayText;
+});
+```
+
+**关键点**:
+- 列标题从"农场用户ID"改为"农场用户"
+- 在display回调中,`$this`指向当前行的数据对象
+- 通过`$model->user->info->nickname`获取用户昵称
+- 昵称以绿色小字显示在ID下方
+- 保留原有的查看收益记录链接
+
+## 技术要点
+
+### Dcat Admin Grid Display回调
+- 在display回调函数中,`$this`指向当前行的数据对象
+- 可以通过关联关系访问预加载的数据
+- 支持HTML格式化输出
+
+### 数据预加载优化
+- 使用Repository的`getQueryBuilder()`方法预加载关联数据
+- 避免在列表渲染时产生N+1查询问题
+- 提升页面加载性能
+
+## 测试验证
+- 访问页面:http://kku_laravel.local.gd/admin/urs-promotion/user-mappings
+- 确认"农场用户"列正确显示用户ID和昵称
+- 确认昵称以绿色小字显示
+- 确认查看收益记录链接正常工作
+- 确认未绑定用户显示"未绑定"提示
+
+## 提交信息
+```
+优化URS用户绑定关系列表农场用户列显示
+
+- 将农场用户ID列改为农场用户列
+- 显示用户ID和昵称信息
+- 昵称以绿色小字显示在ID下方
+- 保留查看收益记录链接功能
+- 在Repository中预加载用户关联数据以提升性能
+```
+
+## 文件变更
+- `app/Module/UrsPromotion/Repositorys/UrsUserMappingRepository.php` - 添加预加载关联数据
+- `app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php` - 修改列显示逻辑
+
+## 效果展示
+- 用户ID:39083
+- 用户昵称:水清北阳(绿色小字)
+- 查看收益记录链接(蓝色链接)
+
+任务完成,用户体验得到显著提升。

+ 3 - 1
app/Module/UrsPromotion/AdminControllers/UrsUserMappingController.php

@@ -153,7 +153,9 @@ class UrsUserMappingController extends AdminController
 
             // 添加相关链接区域
             $show->divider('相关信息');
-            $show->field('related_links', '相关链接')->unescape()->as(function ($value, $model) {
+            $show->field('related_links', '相关链接')->unescape()->as(function ($value) {
+                // 在Show页面的as方法中,$this指向当前模型对象
+                $model = $this;
                 $links = [];
 
                 // 推荐关系链接