修复:用户名单头像全显示默认的问题

- User::headface accessor 补充 setter,确保后台管理赋值时正确写入 usersf 字段
- changeAvatar() 修改头像后同步更新 Redis 在线用户列表
- ChatStateService 新增 getUserRooms() 方法,支持查找用户所在房间
This commit is contained in:
2026-02-26 21:49:37 +08:00
parent 5d722bbb0b
commit 2386948fde
3 changed files with 45 additions and 0 deletions

View File

@@ -331,6 +331,22 @@ class ChatController extends Controller
$user->usersf = $headface;
$user->save();
// 将新头像同步到 Redis 在线用户列表中(所有房间)
// 通过更新 Redis 的用户信息,使得其他用户和自己刷新后都能看到新头像
$superLevel = (int) Sysparam::getValue('superlevel', '100');
$rooms = $this->chatState->getUserRooms($user->username);
foreach ($rooms as $roomId) {
$this->chatState->userJoin((int) $roomId, $user->username, [
'level' => $user->user_level,
'sex' => $user->sex,
'headface' => $headface,
'vip_icon' => $user->vipIcon(),
'vip_name' => $user->vipName(),
'vip_color' => $user->isVip() ? ($user->vipLevel?->color ?? '') : '',
'is_admin' => $user->user_level >= $superLevel,
]);
}
return response()->json([
'status' => 'success',
'message' => '头像修改成功!',