show->field($name, $label)->expand(\App\Module\System\AdminLazyRenderable\UserInfo::make([ 'user_id' => $this->show->model()->$name ])); } /** * 显示用户名 * * 复用价值:高 - 在多个控制器中使用,提供统一的用户名显示 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldUsername(string $field = 'username', string $label = '用户名'): Show\Field { return $this->show->field($field, $label); } /** * 显示用户状态 * * 复用价值:高 - 统一处理用户状态的显示,使用枚举类型 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldStatus(string $field = 'status2', string $label = '状态'): Show\Field { return $this->show->field($field, $label)->as(function ($value) { return STATUS2::tryFrom($value); }); } /** * 显示用户头像 * * 复用价值:高 - 统一处理用户头像的显示 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldAvatar(string $field = 'avatar', string $label = '头像'): Show\Field { return $this->show->field($field, $label)->image(); } /** * 显示用户安全密码 * * 复用价值:高 - 统一处理用户安全密码的显示,隐藏实际密码 * * @param string $field 字段名 * @param string $label 标签名 * @return Show\Field */ public function fieldSecretPassword(string $field = 'secret_password', 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 fieldLastLoginTime(string $field = 'info.last_login_time', 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 fieldLastActivityTime(string $field = 'info.last_activity_time', 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 fieldRewardType(string $field = 'reward_type', string $label = '奖励类型'): Show\Field { return $this->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 ? '是' : '否'; }); } }