| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- <?php
- namespace App\Module\Game\AdminControllers\Helper;
- use App\Module\Game\Enums\REWARD_SOURCE_TYPE;
- use App\Module\Game\Enums\REWARD_TYPE;
- use App\Module\Game\Models\GameRewardGroup;
- use App\Module\User\Enums\STATUS2;
- use Dcat\Admin\Show;
- use Dcat\Admin\Widgets\Card;
- use Dcat\Admin\Widgets\Table;
- /**
- * 游戏用户详情页辅助特性
- *
- * 提供游戏用户模块后台控制器的详情页构建功能的具体实现
- * 包含用户基础信息和游戏相关信息的显示方法
- */
- trait ShowHelperTrait
- {
- /**
- * 显示用户ID
- *
- * 复用价值:高 - 在多个控制器中使用,提供统一的用户ID显示
- *
- * @param string $name 字段名
- * @param string $label 标签名
- * @return Show\Field
- */
- public function fieldUserId($name = 'user_id', $label = ''): Show\Field
- {
- $label = $label ?: '用户ID';
- return $this->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 ? '是' : '否';
- });
- }
- }
|