AI Assistant 6 months ago
parent
commit
dc510cfee0

+ 2 - 2
app/Module/System/AdminControllers/JobRunController.php

@@ -38,7 +38,7 @@ class JobRunController extends AdminController
 
             $grid->column('queue', '队列名称')->label('primary');
 
-            $grid->column('run_class_name', '运行类')->limit(30);
+            $grid->column('runclass', '运行类');
 
             $grid->column('attempts', '尝试次数')->label('info');
 
@@ -46,7 +46,7 @@ class JobRunController extends AdminController
 
             $grid->column('runtime_formatted', '运行时间');
 
-            $grid->column('job_parameters_short', '任务参数')->limit(50);
+            $grid->column('job_parameters_short', '任务参数');
 
             $grid->column('desc_short', '描述')->limit(50);
 

+ 5 - 110
app/Module/System/Models/JobRun.php

@@ -25,7 +25,7 @@ use UCore\ModelCore;
 class JobRun extends ModelCore
 {
     protected $table = 'job_runs';
-    
+
     public $timestamps = false;
 
     protected $fillable = [
@@ -51,14 +51,7 @@ class JobRun extends ModelCore
     ];
 
     protected $appends = [
-        'queue_name',
-        'run_class_name',
-        'created_at_formatted',
-        'available_at_formatted',
-        'reserved_at_formatted',
-        'status_label',
-        'status_color',
-        'runtime_formatted',
+        'queue_name', 'runtime_formatted',
         'job_class',
         'desc_short',
         'job_parameters',
@@ -89,109 +82,10 @@ class JobRun extends ModelCore
         return $this->queue ?? 'default';
     }
 
-    /**
-     * 获取运行类名访问器
-     */
-    public function getRunClassNameAttribute(): string
-    {
-        if (!$this->runclass) {
-            return '';
-        }
-        
-        // 提取类名(去掉命名空间)
-        $parts = explode('\\', $this->runclass);
-        return end($parts);
-    }
-
-    /**
-     * 获取格式化的创建时间
-     */
-    public function getCreatedAtFormattedAttribute(): string
-    {
-        return $this->created_at ? date('Y-m-d H:i:s', $this->created_at) : '';
-    }
-
-    /**
-     * 获取格式化的可用时间
-     */
-    public function getAvailableAtFormattedAttribute(): string
-    {
-        return $this->available_at ? date('Y-m-d H:i:s', $this->available_at) : '';
-    }
-
-    /**
-     * 获取格式化的保留时间
-     */
-    public function getReservedAtFormattedAttribute(): string
-    {
-        return $this->reserved_at ? date('Y-m-d H:i:s', $this->reserved_at) : '';
-    }
-
-    /**
-     * 获取状态标签
-     */
-    public function getStatusLabelAttribute(): string
-    {
-        $status = $this->status;
-
-        // 处理带数字后缀的状态
-        if (strpos($status, 'runend-') === 0) {
-            return '已完成';
-        }
-        if (strpos($status, 'run-') === 0) {
-            return '运行中';
-        }
 
-        switch ($status) {
-            case 'success':
-            case 'run-end':
-                return '已完成';
-            case 'failed':
-            case 'error':
-                return '失败';
-            case 'running':
-            case 'run':
-                return '运行中';
-            case 'pending':
-            case 'wait':
-                return '待处理';
-            default:
-                return $status ?? '未知';
-        }
-    }
 
-    /**
-     * 获取状态颜色
-     */
-    public function getStatusColorAttribute(): string
-    {
-        $status = $this->status;
 
-        // 处理带数字后缀的状态
-        if (strpos($status, 'runend-') === 0) {
-            return 'success';
-        }
-        if (strpos($status, 'run-') === 0) {
-            return 'warning';
-        }
 
-        switch ($status) {
-            case 'success':
-            case 'run-end':
-                return 'success';
-            case 'failed':
-            case 'error':
-                return 'danger';
-            case 'running':
-            case 'run':
-                return 'warning';
-            case 'pending':
-            case 'wait':
-                return 'info';
-            default:
-                return 'secondary';
-        }
-    }
 
     /**
      * 获取格式化的运行时间
@@ -201,7 +95,7 @@ class JobRun extends ModelCore
         if (!$this->runtime) {
             return '';
         }
-        
+
         if ($this->runtime < 1) {
             return round($this->runtime * 1000, 2) . 'ms';
         } else {
@@ -217,7 +111,7 @@ class JobRun extends ModelCore
         if (!$this->payload) {
             return $this->runclass ?? '';
         }
-        
+
         $payload = is_array($this->payload) ? $this->payload : json_decode($this->payload, true);
         return $payload['displayName'] ?? $payload['job'] ?? $this->runclass ?? '';
     }
@@ -285,6 +179,7 @@ class JobRun extends ModelCore
      */
     private function formatArrayForDisplay(array $data): string
     {
+        return json_encode($data, JSON_UNESCAPED_UNICODE);
         $result = [];
 
         foreach ($data as $key => $value) {

+ 18 - 18
app/Module/UrsPromotion/AdminControllers/Actions/ViewReferralChainAction.php

@@ -41,13 +41,13 @@ class ViewReferralChainAction extends RowAction
     {
         $row = $this->getRow();
         $ursUserId = $row->urs_user_id;
-        
+
         // 获取推荐上级链数据
         $chainData = $this->getReferralChainData($ursUserId);
-        
+
         // 构建链路HTML
         $chainHtml = $this->buildChainHtml($chainData);
-        
+
         return Modal::make()
             ->xl()
             ->title("URS用户 {$ursUserId} 的推荐上级链")
@@ -66,21 +66,21 @@ class ViewReferralChainAction extends RowAction
         $chain = [];
         $currentUserId = $ursUserId;
         $level = 0;
-        $maxLevels = 10; // 防止无限循环,最多查询10级
-        
+        $maxLevels = 30; // 防止无限循环,最多查询10级
+
         // 从当前用户开始,向上查找推荐人
         while ($currentUserId && $level < $maxLevels) {
             // 查找当前用户的推荐关系
             $referral = UrsUserReferral::where('urs_user_id', $currentUserId)
                 ->where('status', UrsUserReferral::STATUS_VALID)
                 ->first();
-            
+
             // 获取用户的农场信息
             $userMapping = UrsUserMapping::where('urs_user_id', $currentUserId)
                 ->where('status', UrsUserMapping::STATUS_VALID)
                 ->with(['user.info'])
                 ->first();
-            
+
             $userInfo = [
                 'urs_user_id' => $currentUserId,
                 'farm_user_id' => $userMapping->user_id ?? null,
@@ -89,7 +89,7 @@ class ViewReferralChainAction extends RowAction
                 'level' => $level,
                 'is_root' => false,
             ];
-            
+
             if ($referral) {
                 $userInfo['referrer_id'] = $referral->urs_referrer_id;
                 $userInfo['referral_time'] = $referral->referral_time;
@@ -99,11 +99,11 @@ class ViewReferralChainAction extends RowAction
                 $userInfo['is_root'] = true;
                 $currentUserId = null;
             }
-            
+
             $chain[] = $userInfo;
             $level++;
         }
-        
+
         return array_reverse($chain); // 反转数组,从根用户开始显示
     }
 
@@ -116,7 +116,7 @@ class ViewReferralChainAction extends RowAction
     private function buildChainHtml(array $chainData): string
     {
         $html = '<div class="referral-chain-container">';
-        
+
         // 添加样式
         $html .= '<style>
             .referral-chain-container {
@@ -176,14 +176,14 @@ class ViewReferralChainAction extends RowAction
         } else {
             $totalLevels = count($chainData);
             $targetUserId = $chainData[count($chainData) - 1]['urs_user_id'];
-            
+
             $html .= "<h5><i class=\"fa fa-link\"></i> 推荐链路径 (共{$totalLevels}级)</h5>";
-            
+
             foreach ($chainData as $index => $user) {
                 $isRoot = $user['is_root'];
                 $isCurrent = ($user['urs_user_id'] == $targetUserId);
                 $level = $totalLevels - $user['level'] - 1; // 重新计算显示级别
-                
+
                 $nodeClass = 'chain-node';
                 if ($isRoot) {
                     $nodeClass .= ' root';
@@ -197,17 +197,17 @@ class ViewReferralChainAction extends RowAction
                     $levelName = "第{$level}级推荐人";
                     $badgeClass = 'level-' . min($level, 5);
                 }
-                
+
                 $html .= "<div class='{$nodeClass}'>";
                 $html .= "<span class='level-badge {$badgeClass}'>{$levelName}</span>";
                 $html .= "<span class='user-info'>URS-{$user['urs_user_id']}</span>";
-                
+
                 if ($user['farm_user_id']) {
                     $html .= " → 农场用户: {$user['username']} ({$user['nickname']})";
                 } else {
                     $html .= " → <span class='text-warning'>未进入农场</span>";
                 }
-                
+
                 $html .= "<div class='user-meta'>";
                 if (isset($user['referral_time'])) {
                     $html .= "推荐时间: {$user['referral_time']}";
@@ -219,7 +219,7 @@ class ViewReferralChainAction extends RowAction
                 }
                 $html .= "</div>";
                 $html .= "</div>";
-                
+
                 // 添加箭头(除了最后一个)
                 if ($index < count($chainData) - 1) {
                     $html .= '<div class="chain-arrow">↓ 推荐</div>';

+ 1 - 1
app/Module/UrsPromotion/Listeners/UrsReferralCreatedListener.php

@@ -20,7 +20,7 @@ use Illuminate\Support\Facades\Log;
  */
 class UrsReferralCreatedListener extends ShouldQueue
 {
-    
+
 
     /**
      * 实际运行方法(实现ShouldQueueInterface)