show->field($field, $label)->as(function ($value) { return REWARD_TYPE::getName($value); }); } /** * 显示奖励来源类型 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldRewardSourceType(string $field = 'source_type', string $label = '奖励来源'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { return REWARD_SOURCE_TYPE::getName($value); }); } /** * 显示奖励组 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldRewardGroup(string $field = 'group_id', string $label = '奖励组'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { $group = GameRewardGroup::find($value); return $group ? "{$group->name} ({$group->code})" : "未知 ({$value})"; }); } /** * 显示奖励项 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldRewardItems(string $field = 'reward_items', string $label = '奖励项'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { $items = json_decode($value, true); if (empty($items)) { return '无奖励项'; } $headers = ['奖励类型', '目标ID', '参数1', '参数2', '数量', '额外数据']; $rows = []; foreach ($items as $item) { $rows[] = [ REWARD_TYPE::getName($item['reward_type']), $item['target_id'], $item['param1'] ?? 0, $item['param2'] ?? 0, $item['quantity'], json_encode($item['extra_data'] ?? null) ]; } return Card::make( Table::make($headers, $rows) ); }); } /** * 显示是否随机发放 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldIsRandom(string $field = 'is_random', string $label = '随机发放'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { return $value ? '是' : '否'; }); } /** * 显示是否必中 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldIsGuaranteed(string $field = 'is_guaranteed', string $label = '必中'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { return $value ? '是' : '否'; }); } }