$adminID, 'user_type'=>UserChatLinkModel::USER_CHAT_LINK_USER_TYPE_ADMIN])->find(); if (empty($adminChatInfo)) { $adminChatData = [ 'Username' => $adminID."_admin", //用account.id + account.user_name 拼接作为聊天账号注册的Username, 'Password' => '123456', 'Nickname' => "admin", 'Avatar' => env('USER.DEFAULT_HEAD_IMG_PATH'), ]; $chatUrl = env('CHAT_SERVER.BASE_URL') . '/api/user/register'; $adminChatRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatUrl, $adminChatData); if (!isset($adminChatRes['data']['uuid'])) { return $this->toData('500', 'admin注册聊天账号失败,请稍后再试'); } $adminChatInfo = UserChatLinkModel::create([ 'user_id' => $adminID, 'user_type' => UserChatLinkModel::USER_CHAT_LINK_USER_TYPE_ADMIN, 'chat_uuid' => $adminChatRes['data']['uuid'], 'chat_name' => $adminChatRes['data']['username'] ]); if (!isset($adminChatInfo->chat_uuid)) { return $this->toData('500', 'admin聊天账号创建失败,请稍后再试'); } } // 查询管理员的聊天群组, 如果不存在则创建 $adminGroup = UserChatGroupModel::where(['user_id'=>$adminID, 'remark'=>UserChatGroupModel::USER_CHAT_GROUP_REMARK_ADMIN_INIT])->find(); if (empty($adminGroup)) { $groupName = 'ivs-group'.$adminID; $chatGroupData = [ 'Name' => $groupName, ]; $chatGroupUrl = env('CHAT_SERVER.BASE_URL') . '/api/group/'.$adminChatInfo->chat_uuid; $chatGroupRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatGroupUrl, $chatGroupData); if (!isset($chatGroupRes['data']['group_uuid'])) { return $this->toData('500', '管理员创建聊天群组失败'); } $adminGroup = UserChatGroupModel::create([ 'user_id' => $adminID, 'user_chat_uuid' => $adminChatInfo->chat_uuid, 'group_name' => $groupName, 'group_uuid' => $chatGroupRes['data']['group_uuid'], 'remark' => UserChatGroupModel::USER_CHAT_GROUP_REMARK_ADMIN_INIT, ]); if (!isset($adminGroup->group_uuid)) { return $this->toData('500', '管理员聊天群组创建失败'); } } return $this->toData('0', 'ok'); } catch (\Exception $e) { return $this->toData('500', 'system error', [$e->getMessage(), $e->getTrace()]); } } // 获取已注册用户,遍历用户注册chat信息,添加管理员chat好友,加入管理员聊天群组 public function initUserChatInfo($param) { try { $limit = 200; $offset = 0; if (isset($param['page']) && $param['page'] > 1) { $offset = ($param['page'] - 1) * 200; } $userList = UserModel::limit($offset, $limit)->select(); if ($userList->isEmpty()) { return $this->toData('0', '本次获取用户列表为空, page='.$param['page']. ' limit='.$limit); } // 遍历用户创建chat信息,添加管理员chat好友,加入管理员聊天群组 foreach ($userList as $user) { // 注册chat信息 $userChatInfo = UserChatLinkModel::where(['user_id'=>$user['user_id'], 'user_type'=>UserChatLinkModel::USER_CHAT_LINK_USER_TYPE_PC])->find(); if (empty($userChatInfo)) { $nickName = 'user_'.$user['user_id']; if (!empty($user['email'])) { $nickName = 'user_'.explode('@', $user['email'])[0]; } if (!empty($user['phone_number'])) { $nickName = 'user_'.substr($user['phone_number'], -4); } $userChatData = [ 'Username' => $user["user_no"], 'Password' => '123456', 'Nickname' => $nickName, 'Avatar' => env('USER.DEFAULT_HEAD_IMG_PATH'), ]; $chatUrl = env('CHAT_SERVER.BASE_URL') . '/api/user/register'; $userChatRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatUrl, $userChatData); if (!isset($userChatRes['data']['uuid'])) { return $this->toData('500', '用户注册聊天账号失败'); } $userChatInfo = UserChatLinkModel::create([ 'user_id' => $user['user_id'], 'user_type' => UserChatLinkModel::USER_CHAT_LINK_USER_TYPE_PC, 'chat_uuid' => $userChatRes['data']['uuid'], 'chat_name' => $userChatRes['data']['username'] ]); if (!isset($userChatInfo->chat_uuid)) { return $this->toData('500', 'admin聊天账号创建失败'); } } // 添加管理员chat好友 $adminID = 1; $adminChatInfo = UserChatLinkModel::where(['user_id'=>$adminID, 'user_type'=>UserChatLinkModel::USER_CHAT_LINK_USER_TYPE_ADMIN])->find(); //查询管理员的chat信息 if (empty($adminChatInfo)) { return $this->toData('500', '管理员的chat信息为空,请先创建管理员的chat信息'); } $chatFriendsData = [ 'UserUuid' => $userChatInfo->chat_uuid, 'CustomerUuid' => $adminChatInfo->chat_uuid, ]; $chatFriendsUrl = env('CHAT_SERVER.BASE_URL') . '/api/eachOtherFriends'; $chatFriendsRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatFriendsUrl, $chatFriendsData); Log::info("用户与管理员加好友结果:".json_encode($chatFriendsRes)); // 将用户添加到管理员的群聊中 $adminGroup = UserChatGroupModel::where(['user_id'=>$adminID, 'remark'=>UserChatGroupModel::USER_CHAT_GROUP_REMARK_ADMIN_INIT])->find(); if (empty($adminGroup)) { return $this->toData('500', '管理员的聊天群组信息为空,请先创建管理员的聊天群组信息'); } $joinChatGroupUrl = env('CHAT_SERVER.BASE_URL') . '/api/group/join/'.$userChatInfo->chat_uuid.'/'.$adminGroup->group_uuid; $joinChatGroupRes = (new \app\utility\RequestChatServer())->ReqChatServer($joinChatGroupUrl, []); Log::info("用户加入聊天群组结果:".json_encode($joinChatGroupRes)); } return $this->toData('0', 'ok'); } catch (\Exception $e) { return $this->toData('500', 'system error', [$e->getMessage(), $e->getTrace()]); } } }