| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?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 Dcat\Admin\Grid;
- use Dcat\Admin\Grid\Column;
- /**
- * 列表页辅助特性
- *
- * 提供游戏模块后台控制器的列表页构建功能的具体实现
- */
- trait GridHelperTrait
- {
- /**
- * 添加奖励类型列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnRewardType(string $field = 'reward_type', string $label = '奖励类型'): Column
- {
- return $this->grid->column($field, $label)->display(function ($value) {
- return REWARD_TYPE::getName($value);
- })->label([
- REWARD_TYPE::ITEM->value => 'primary',
- REWARD_TYPE::CURRENCY->value => 'success',
- REWARD_TYPE::PET_EXP->value => 'info',
- REWARD_TYPE::PET_ENERGY->value => 'warning',
- REWARD_TYPE::OTHER->value => 'default',
- ]);
- }
- /**
- * 添加奖励来源类型列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnRewardSourceType(string $field = 'source_type', string $label = '奖励来源'): Column
- {
- return $this->grid->column($field, $label)->display(function ($value) {
- return REWARD_SOURCE_TYPE::getName($value);
- })->label([
- REWARD_SOURCE_TYPE::TASK->value => 'primary',
- REWARD_SOURCE_TYPE::ACTIVITY->value => 'success',
- REWARD_SOURCE_TYPE::SIGN_IN->value => 'info',
- REWARD_SOURCE_TYPE::ACHIEVEMENT->value => 'warning',
- REWARD_SOURCE_TYPE::LEVEL->value => 'danger',
- REWARD_SOURCE_TYPE::CHEST->value => 'dark',
- REWARD_SOURCE_TYPE::SYSTEM->value => 'default',
- ]);
- }
- /**
- * 添加奖励组列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnRewardGroup(string $field = 'group_id', string $label = '奖励组'): Column
- {
- return $this->grid->column($field, $label)->display(function ($value) {
- $group = GameRewardGroup::find($value);
- return $group ? "{$group->name} ({$group->code})" : "未知 ({$value})";
- });
- }
- /**
- * 添加奖励项列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnRewardItems(string $field = 'reward_items', string $label = '奖励项'): Column
- {
- return $this->grid->column($field, $label)->display(function ($value) {
- $items = json_decode($value, true);
- if (empty($items)) {
- return '无奖励项';
- }
- $count = count($items);
- return "<span class=\"badge badge-primary\">{$count}个奖励项</span>";
- });
- }
- /**
- * 添加是否随机发放列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnIsRandom(string $field = 'is_random', string $label = '随机发放'): Column
- {
- return $this->grid->column($field, $label)->switch();
- }
- /**
- * 添加是否必中列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnIsGuaranteed(string $field = 'is_guaranteed', string $label = '必中'): Column
- {
- return $this->grid->column($field, $label)->switch();
- }
- /**
- * 添加权重列
- *
- * @param string $field 字段名
- * @param string $label 标签名
- * @return Column
- */
- public function columnWeight(string $field = 'weight', string $label = '权重'): Column
- {
- return $this->grid->column($field, $label)->sortable();
- }
- }
|