[色子游戏]玩家抽奖记录-优化样式

This commit is contained in:
2026-03-03 16:21:41 +08:00
parent 3606d4635e
commit 878dbbf578
7 changed files with 444 additions and 124 deletions

View File

@@ -9,6 +9,9 @@ namespace app\dice\controller\play_record;
use plugin\saiadmin\basic\BaseController;
use app\dice\logic\play_record\DicePlayRecordLogic;
use app\dice\validate\play_record\DicePlayRecordValidate;
use app\dice\model\player\DicePlayer;
use app\dice\model\lottery_config\DiceLotteryConfig;
use app\dice\model\reward_config\DiceRewardConfig;
use plugin\saiadmin\service\Permission;
use support\Request;
use support\Response;
@@ -37,8 +40,14 @@ class DicePlayRecordController extends BaseController
public function index(Request $request): Response
{
$where = $request->more([
['username', ''],
['lottery_config_name', ''],
['lottery_type', ''],
['lottery_name', ''],
['is_win', ''],
['win_coin_min', ''],
['win_coin_max', ''],
['reward_ui_text', ''],
['reward_tier', ''],
]);
$query = $this->logic->search($where);
$query->with([
@@ -50,6 +59,49 @@ class DicePlayRecordController extends BaseController
return $this->success($data);
}
/**
* 获取玩家选项id、username
*/
#[Permission('玩家抽奖记录列表', 'dice:play_record:index:index')]
public function getPlayerOptions(Request $request): Response
{
$list = DicePlayer::field('id,username')->select();
$data = $list->map(function ($item) {
return ['id' => $item['id'], 'username' => $item['username'] ?? ''];
})->toArray();
return $this->success($data);
}
/**
* 获取彩金池配置选项id、name
*/
#[Permission('玩家抽奖记录列表', 'dice:play_record:index:index')]
public function getLotteryConfigOptions(Request $request): Response
{
$list = DiceLotteryConfig::field('id,name')->select();
$data = $list->map(function ($item) {
return ['id' => $item['id'], 'name' => $item['name'] ?? ''];
})->toArray();
return $this->success($data);
}
/**
* 获取奖励配置选项id、ui_text、tier
*/
#[Permission('玩家抽奖记录列表', 'dice:play_record:index:index')]
public function getRewardConfigOptions(Request $request): Response
{
$list = DiceRewardConfig::field('id,ui_text,tier')->select();
$data = $list->map(function ($item) {
return [
'id' => $item['id'],
'ui_text' => $item['ui_text'] ?? '',
'tier' => $item['tier'] ?? ''
];
})->toArray();
return $this->success($data);
}
/**
* 读取数据
* @param Request $request

View File

@@ -44,14 +44,7 @@ class DicePlayRecord extends BaseModel
protected $table = 'dice_play_record';
/**
* 奖池名 搜索
*/
public function searchLotteryNameAttr($query, $value)
{
$query->where('lottery_name', 'like', '%'.$value.'%');
}
/**
* 玩家
* 关联模型 dicePlayer
*/
public function dicePlayer(): BelongsTo
@@ -60,6 +53,7 @@ class DicePlayRecord extends BaseModel
}
/**
* 中奖配置
* 关联模型 diceRewardConfig
*/
public function diceRewardConfig(): BelongsTo
@@ -68,6 +62,7 @@ class DicePlayRecord extends BaseModel
}
/**
* 彩金配置
* 关联模型 diceLotteryConfig
*/
public function diceLotteryConfig(): BelongsTo
@@ -75,4 +70,91 @@ class DicePlayRecord extends BaseModel
return $this->belongsTo(DiceLotteryConfig::class, 'lottery_config_id', 'id');
}
/** 按玩家用户名模糊dicePlayer.username */
public function searchUsernameAttr($query, $value)
{
if ($value === '' || $value === null) {
return;
}
$ids = DicePlayer::where('username', 'like', '%' . $value . '%')->column('id');
if (!empty($ids)) {
$query->whereIn('player_id', $ids);
} else {
$query->whereRaw('1=0');
}
}
/** 按彩金池配置名称模糊diceLotteryConfig.name */
public function searchLotteryConfigNameAttr($query, $value)
{
if ($value === '' || $value === null) {
return;
}
$ids = DiceLotteryConfig::where('name', 'like', '%' . $value . '%')->column('id');
if (!empty($ids)) {
$query->whereIn('lottery_config_id', $ids);
} else {
$query->whereRaw('1=0');
}
}
/** 抽奖类型 */
public function searchLotteryTypeAttr($query, $value)
{
if ($value !== '' && $value !== null) {
$query->where('lottery_type', '=', $value);
}
}
/** 中奖 */
public function searchIsWinAttr($query, $value)
{
if ($value !== '' && $value !== null) {
$query->where('is_win', '=', $value);
}
}
/** 赢取平台币下限 */
public function searchWinCoinMinAttr($query, $value)
{
if ($value !== '' && $value !== null) {
$query->where('win_coin', '>=', $value);
}
}
/** 赢取平台币上限 */
public function searchWinCoinMaxAttr($query, $value)
{
if ($value !== '' && $value !== null) {
$query->where('win_coin', '<=', $value);
}
}
/** 按奖励配置前端显示文本模糊diceRewardConfig.ui_text */
public function searchRewardUiTextAttr($query, $value)
{
if ($value === '' || $value === null) {
return;
}
$ids = DiceRewardConfig::where('ui_text', 'like', '%' . $value . '%')->column('id');
if (!empty($ids)) {
$query->whereIn('reward_config_id', $ids);
} else {
$query->whereRaw('1=0');
}
}
/** 按奖励档位diceRewardConfig.tier中奖名 T1-T5 */
public function searchRewardTierAttr($query, $value)
{
if ($value === '' || $value === null) {
return;
}
$ids = DiceRewardConfig::where('tier', '=', $value)->column('id');
if (!empty($ids)) {
$query->whereIn('reward_config_id', $ids);
} else {
$query->whereRaw('1=0');
}
}
}

View File

@@ -23,22 +23,18 @@ class DicePlayRecordValidate extends BaseValidate
'is_win' => 'require',
'win_coin' => 'require',
'reward_config_id' => 'require',
'lottery_id' => 'require',
'lottery_name' => 'require',
];
/**
* 定义错误信息
*/
protected $message = [
'player_id' => '玩家id必须填写',
'player_id' => '玩家必须填写',
'lottery_config_id' => '彩金池配置必须填写',
'lottery_type' => '抽奖类型必须填写',
'is_win' => '中奖必须填写',
'win_coin' => '赢取平台币必须填写',
'reward_config_id' => '奖励配置id必须填写',
'lottery_id' => '奖池必须填写',
'lottery_name' => '奖池名必须填写',
'reward_config_id' => '奖励配置必须填写',
];
/**
@@ -52,8 +48,6 @@ class DicePlayRecordValidate extends BaseValidate
'is_win',
'win_coin',
'reward_config_id',
'lottery_id',
'lottery_name',
],
'update' => [
'player_id',
@@ -62,8 +56,6 @@ class DicePlayRecordValidate extends BaseValidate
'is_win',
'win_coin',
'reward_config_id',
'lottery_id',
'lottery_name',
],
];