Files
2025-06-26 16:51:59 +08:00

63 lines
1.9 KiB
PHP

<?php
namespace App\Services\GatewayWorker;
use App\Models\im\ChatRoomUserModel;
use App\Models\UserModel;
use App\Services\Base\BaseService;
class UserService extends BaseService
{
public function login($username, $password)
{
$userModel = UserModel::where('username', $username)->first();
if ($userModel) {
if ($userModel->password == md5($password)) {
return [
'token' => $userModel->id,
'user_info' => $userModel
];
} else {
return false;
}
} else {
return false;
}
}
public function register($username, $password, $nickName, $avatar)
{
$userModel = UserModel::create([
'username' => $username,
'avatar' => $avatar,
'password' => md5($password),
'nick_name' => $nickName,
'created_at' => time()
]);
return [
'token' => $userModel->id,
'user_info' => $userModel
];
}
public function userList()
{
$userModel = UserModel::where('id', '<>', $this->userId)->get();
if (empty($userModel)) {
return [];
}
$myRooms = ChatRoomUserModel::where('user_id', $this->userId)->pluck('chat_room_id');
$allRooms = ChatRoomUserModel::where('user_id', '<>', $this->userId)->whereIn('chat_room_id', $myRooms)->get();
$roomsMap = array_column($allRooms->toArray(), 'chat_room_id', 'user_id');
$userModel = $userModel->toArray();
$gatewayClient = GatewayClientService::getInstance()->init();
foreach ($userModel as &$v) {
$v['is_uid_online'] = $gatewayClient->isUidOnline($v['id']);
$v['chat_room_id'] = !empty($roomsMap[$v['id']])? $roomsMap[$v['id']] : 0;
}
return $userModel;
}
}