63 lines
1.9 KiB
PHP
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;
|
|
}
|
|
}
|