1.优化getPlayerInfo接口
This commit is contained in:
@@ -44,6 +44,14 @@ class GameController extends BaseController
|
||||
'sort',
|
||||
];
|
||||
|
||||
/** getPlayerInfo 仅查询需返回的列,减轻 IO(敏感/内部字段不入库查询) */
|
||||
private const PLAYER_INFO_DB_FIELDS = [
|
||||
'id', 'username', 'phone', 'uid', 'name', 'status', 'coin', 'is_up', 'admin_id',
|
||||
'total_ticket_count', 'paid_ticket_count', 'free_ticket_count', 'free_ticket',
|
||||
'total_win_coin',
|
||||
'create_time', 'update_time',
|
||||
];
|
||||
|
||||
/**
|
||||
* 获取游戏列表
|
||||
* POST 参数:lang(可选,zh/en,默认 zh)
|
||||
@@ -130,24 +138,31 @@ class GameController extends BaseController
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
* POST 参数:username
|
||||
* 返回 DicePlayer 中非敏感信息
|
||||
* 参数:username(POST JSON / 表单 / Query 均可,input 合并读取降低偶发空参)
|
||||
* 返回 DicePlayer 中非敏感信息;短期 Redis 快照 + 窄字段查询降低延迟
|
||||
*/
|
||||
public function getPlayerInfo(Request $request): Response
|
||||
{
|
||||
$username = trim((string) ($request->post('username', '')));
|
||||
$usernameRaw = $request->input('username', '');
|
||||
$username = is_string($usernameRaw) ? trim($usernameRaw) : '';
|
||||
|
||||
if ($username === '') {
|
||||
return $this->fail('username is required', ReturnCode::PARAMS_ERROR);
|
||||
}
|
||||
|
||||
$player = DicePlayer::where('username', $username)->find();
|
||||
$cached = UserCache::getPlayerInfoSnapshotByUsername($username);
|
||||
if ($cached !== null) {
|
||||
return $this->success($cached);
|
||||
}
|
||||
|
||||
$player = DicePlayer::field(self::PLAYER_INFO_DB_FIELDS)->where('username', $username)->find();
|
||||
if (!$player) {
|
||||
return $this->fail('User not found', ReturnCode::NOT_FOUND);
|
||||
}
|
||||
|
||||
$hidden = ['password', 'lottery_config_id', 't1_weight', 't2_weight', 't3_weight', 't4_weight', 't5_weight', 'delete_time'];
|
||||
$info = $player->hidden($hidden)->toArray();
|
||||
UserCache::setPlayerInfoSnapshotByUsername($username, $info);
|
||||
|
||||
return $this->success($info);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user