Parcourir la source

优化奖励组详情页,根据奖励类型和参数渲染出奖励项的实际内容

notfff il y a 8 mois
Parent
commit
d93557bc22
1 fichiers modifiés avec 84 ajouts et 4 suppressions
  1. 84 4
      app/Module/Game/AdminControllers/GameRewardGroupController.php

+ 84 - 4
app/Module/Game/AdminControllers/GameRewardGroupController.php

@@ -6,6 +6,8 @@ use App\Module\Game\AdminControllers\Actions\DuplicateRewardGroupAction;
 use App\Module\Game\Enums\REWARD_TYPE;
 use App\Module\Game\Models\GameRewardItem;
 use App\Module\Game\Repositorys\GameRewardGroupRepository;
+use App\Module\GameItems\Models\Item;
+use App\Module\Fund\Models\FundCurrencyModel;
 use Dcat\Admin\Form;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Show;
@@ -88,16 +90,17 @@ class GameRewardGroupController extends AdminController
                     return '无奖励项';
                 }
 
-                $headers = ['ID', '奖励类型', '目标ID', '参数1', '参数2', '数量', '权重', '必中'];
+                $headers = ['ID', '奖励类型', '奖励内容', '数量', '权重', '必中'];
                 $rows = [];
 
                 foreach ($items as $item) {
+                    // 根据奖励类型获取实际内容
+                    $rewardContent = $this->getRewardContent($item);
+
                     $rows[] = [
                         $item->id,
                         REWARD_TYPE::getName($item->reward_type),
-                        $item->target_id,
-                        $item->param1,
-                        $item->param2,
+                        $rewardContent,
                         $item->quantity,
                         $item->weight,
                         $item->is_guaranteed ? '是' : '否'
@@ -132,6 +135,83 @@ class GameRewardGroupController extends AdminController
         });
     }
 
+    /**
+     * 根据奖励项获取实际内容描述
+     *
+     * @param GameRewardItem $item 奖励项
+     * @return string 奖励内容描述
+     */
+    protected function getRewardContent(GameRewardItem $item): string
+    {
+        switch ($item->reward_type) {
+            case REWARD_TYPE::ITEM->value:
+                // 物品奖励
+                try {
+                    $gameItem = Item::find($item->target_id);
+                    if ($gameItem) {
+                        $content = "<strong>{$gameItem->name}</strong> (ID: {$item->target_id})";
+
+                        // 添加参数说明
+                        $params = [];
+                        if ($item->param1 > 0) {
+                            $params[] = "品质: {$item->param1}";
+                        }
+                        if ($item->param2 > 0) {
+                            $params[] = "绑定: {$item->param2}";
+                        }
+
+                        if (!empty($params)) {
+                            $content .= "<br><small>" . implode(', ', $params) . "</small>";
+                        }
+
+                        return $content;
+                    }
+                } catch (\Exception $e) {
+                    // 忽略异常,返回默认内容
+                }
+                return "物品 (ID: {$item->target_id})";
+
+            case REWARD_TYPE::CURRENCY->value:
+                // 货币奖励
+                try {
+                    $currency = FundCurrencyModel::find($item->target_id);
+                    if ($currency) {
+                        $content = "<strong>{$currency->name}</strong> (ID: {$item->target_id})";
+
+                        // 添加参数说明
+                        $params = [];
+                        if ($item->param1 > 0) {
+                            $params[] = "来源: {$item->param1}";
+                        }
+
+                        if (!empty($params)) {
+                            $content .= "<br><small>" . implode(', ', $params) . "</small>";
+                        }
+
+                        return $content;
+                    }
+                } catch (\Exception $e) {
+                    // 忽略异常,返回默认内容
+                }
+                return "货币 (ID: {$item->target_id})";
+
+            case REWARD_TYPE::PET_EXP->value:
+                // 宠物经验奖励
+                return "宠物经验 (宠物ID: {$item->target_id})";
+
+            case REWARD_TYPE::PET_ENERGY->value:
+                // 宠物体力奖励
+                return "宠物体力 (宠物ID: {$item->target_id})";
+
+            case REWARD_TYPE::OTHER->value:
+                // 其他奖励
+                return "其他奖励 (ID: {$item->target_id})";
+
+            default:
+                return "未知奖励类型 (ID: {$item->target_id})";
+        }
+    }
+
     /**
      * 创建表单
      *