notfff 7 місяців тому
батько
коміт
640ef9dee0

+ 1 - 1
app/Module/Farm/Repositories/FarmMysterySeeLandEffectRepository.php

@@ -14,5 +14,5 @@ class FarmMysterySeeLandEffectRepository extends EloquentRepository
     protected $eloquentClass=FarmMysterySeeLandEffect::class;
 
 
-    
+
 }

+ 4 - 2
app/Module/Pet/AdminControllers/PetLevelConfigController.php

@@ -42,7 +42,9 @@ class PetLevelConfigController extends AdminController
             $grid->column('pet_id', '宠物ID')->sortable();
             $grid->column('level', '等级')->sortable();
             $grid->column('exp_required', '升级所需经验值')->sortable();
-            $grid->column('skills_list', '技能')->label();
+            $grid->column('skills_list', '技能')->display(function ($value) {
+                return $value;
+            });
             $grid->column('created_at', '创建时间');
             $grid->column('updated_at', '更新时间');
 
@@ -80,7 +82,7 @@ class PetLevelConfigController extends AdminController
             $show->field('pet_id', '宠物ID');
             $show->field('level', '等级');
             $show->field('exp_required', '升级所需经验值');
-            $show->field('skills_list', '可用技能')->unescape();
+            $show->field('skills_list', '可用技能');
             $show->field('display_attributes', '等级显示属性配置')->json();
             $show->field('numeric_attributes', '等级数值属性配置')->json();
             $show->field('created_at', '创建时间');

+ 9 - 3
app/Module/Pet/AdminControllers/PetSkillController.php

@@ -41,8 +41,12 @@ class PetSkillController extends AdminController
             $grid->column('id', 'ID')->sortable();
             $grid->column('skill_name', '技能名称');
             $grid->column('stamina_cost', '体力消耗')->sortable();
-            $grid->column('duration_time', ' 持续时间(秒)')->sortable();
-            $grid->column('cool_down', '冷却时间(秒)')->sortable();
+            $grid->column('duration_time', '持续时间')->display(function ($value) {
+                return \App\Module\Pet\Models\PetSkill::formatDuration($value);
+            })->sortable();
+            $grid->column('cool_down', '冷却时间')->display(function ($value) {
+                return \App\Module\Pet\Models\PetSkill::formatDuration($value);
+            })->sortable();
 
             $grid->column('effect_desc', '效果描述');
             $grid->column('min_level', '最低等级要求')->sortable();
@@ -119,7 +123,7 @@ class PetSkillController extends AdminController
                 ->min(0)
                 ->required()
                 ->help('技能使用后的冷却时间,单位:秒');
-         
+
 
             $form->number('duration_time', '持续时间(秒)')
                 ->default(7200)
@@ -146,4 +150,6 @@ class PetSkillController extends AdminController
             return $form;
         });
     }
+
+
 }

+ 13 - 11
app/Module/Pet/Models/PetLevelConfig.php

@@ -8,21 +8,20 @@ use App\Module\Pet\Casts\NumericAttributesCast;
 use App\Module\Pet\Models\PetSkill;
 use App\Module\Pet\Models\PetUser;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
-use Illuminate\Database\Eloquent\Relations\BelongsToMany;
 
 /**
  * 宠物等级配置模型
  *
- * field start 
- * @property  int  $id  
+ * field start
+ * @property  int  $id
  * @property  int  $pet_id  宠物 ID
  * @property  int  $level  等级
  * @property  int  $exp_required  升级所需经验值
  * @property  array  $skills  可用技能
  * @property  \App\Module\Pet\Casts\DisplayAttributesCast  $display_attributes  等级显示属性配置
  * @property  \App\Module\Pet\Casts\NumericAttributesCast  $numeric_attributes  等级数值属性配置
- * @property  \Carbon\Carbon  $created_at  
- * @property  \Carbon\Carbon  $updated_at  
+ * @property  \Carbon\Carbon  $created_at
+ * @property  \Carbon\Carbon  $updated_at
  * field end
  */
 class PetLevelConfig extends ModelCore
@@ -35,7 +34,7 @@ class PetLevelConfig extends ModelCore
      */
     protected $table = 'pet_level_configs';
 
-    // attrlist start 
+    // attrlist start
     protected $fillable = [
         'id',
         'pet_id',
@@ -87,7 +86,7 @@ class PetLevelConfig extends ModelCore
     }
 
     /**
-     * 获取技能列表的访问器
+     * 获取技能列表的访问器(带链接)
      *
      * @return string
      */
@@ -96,15 +95,18 @@ class PetLevelConfig extends ModelCore
         $skills = $this->getAvailableSkills();
 
         if ($skills->isEmpty()) {
-            return '无可用技能';
+            return '<span class="text-muted">无可用技能</span>';
         }
 
-        $skillNames = [];
+        $skillLinks = [];
         foreach ($skills as $skill) {
-            $skillNames[] = "{$skill->skill_name} (ID: {$skill->id})";
+            // 生成技能详情页面的链接
+            $detailUrl = admin_url("pet-skills/{$skill->id}");
+            $skillLinks[] = "<a href=\"{$detailUrl}\" target=\"_blank\" class=\"btn btn-xs btn-primary\" style=\"margin: 2px;\">" .
+                           "<i class=\"fa fa-eye\"></i> {$skill->skill_name}</a>";
         }
 
-        return implode('<br>', $skillNames);
+        return implode(' ', $skillLinks);
     }
 
     /**

+ 73 - 6
app/Module/Pet/Models/PetSkill.php

@@ -3,22 +3,21 @@
 namespace App\Module\Pet\Models;
 
 use UCore\ModelCore;
-use App\Module\Pet\Enums\PetStatus;
 use Illuminate\Database\Eloquent\Relations\HasMany;
 
 /**
  * 宠物技能模型
  *
- * field start 
- * @property  int  $id  
+ * field start
+ * @property  int  $id
  * @property  string  $skill_name  技能名称
  * @property  int  $stamina_cost  体力消耗
  * @property  int  $cool_down  冷却时间(秒)
  * @property  int  $duration_time  持续时间(秒)
  * @property  string  $effect_desc  效果描述
  * @property  int  $min_level  最低等级要求
- * @property  \Carbon\Carbon  $created_at  
- * @property  \Carbon\Carbon  $updated_at  
+ * @property  \Carbon\Carbon  $created_at
+ * @property  \Carbon\Carbon  $updated_at
  * field end
  */
 class PetSkill extends ModelCore
@@ -35,7 +34,7 @@ class PetSkill extends ModelCore
      *
      * @var array
      */
-    // attrlist start 
+    // attrlist start
     protected $fillable = [
         'id',
         'skill_name',
@@ -70,4 +69,72 @@ class PetSkill extends ModelCore
         return $this->hasMany(PetSkillLog::class, 'skill_id');
     }
 
+    /**
+     * 格式化持续时间显示
+     *
+     * @param int $seconds 秒数
+     * @return string 友好的时间显示
+     */
+    public static function formatDuration(int $seconds): string
+    {
+        if ($seconds <= 0) {
+            return '<span class="text-muted">无持续时间</span>';
+        }
+
+        $days = floor($seconds / 86400);
+        $hours = floor(($seconds % 86400) / 3600);
+        $minutes = floor(($seconds % 3600) / 60);
+        $remainingSeconds = $seconds % 60;
+
+        $parts = [];
+
+        if ($days > 0) {
+            $parts[] = "<span class=\"badge badge-primary\">{$days}天</span>";
+        }
+
+        if ($hours > 0) {
+            $parts[] = "<span class=\"badge badge-info\">{$hours}小时</span>";
+        }
+
+        if ($minutes > 0) {
+            $parts[] = "<span class=\"badge badge-success\">{$minutes}分钟</span>";
+        }
+
+        if ($remainingSeconds > 0 && empty($parts)) {
+            // 只有在没有更大单位时才显示秒数
+            $parts[] = "<span class=\"badge badge-secondary\">{$remainingSeconds}秒</span>";
+        }
+
+        if (empty($parts)) {
+            return '<span class="text-muted">瞬间</span>';
+        }
+
+        $result = implode(' ', $parts);
+
+        // 添加原始秒数的提示
+        $result .= "<br><small class=\"text-muted\">({$seconds}秒)</small>";
+
+        return $result;
+    }
+
+    /**
+     * 获取格式化的持续时间
+     *
+     * @return string
+     */
+    public function getFormattedDurationTimeAttribute(): string
+    {
+        return self::formatDuration($this->duration_time);
+    }
+
+    /**
+     * 获取格式化的冷却时间
+     *
+     * @return string
+     */
+    public function getFormattedCoolDownAttribute(): string
+    {
+        return self::formatDuration($this->cool_down);
+    }
+
 }

+ 1 - 0
protophp/Uraus/Kku/Request/RequestPetEat.php

@@ -27,6 +27,7 @@ class RequestPetEat extends \Google\Protobuf\Internal\Message
      * Generated from protobuf field <code>int64 item_id = 2;</code>
      */
     protected $item_id = 0;
+
     /**
      *数量
      *