diff --git a/app/admin/service/AdminService.php b/app/admin/service/AdminService.php index bfc31a4..a50fed9 100644 --- a/app/admin/service/AdminService.php +++ b/app/admin/service/AdminService.php @@ -7,6 +7,7 @@ use app\home\service\BaseHomeService; use app\model\AdminLogModel; use app\model\AdminModel; use app\model\AuthRoleModel; +use app\model\UserChatGroupModel; use app\model\UserChatLinkModel; use phpDocumentor\Reflection\Type; use think\exception\ValidateException; @@ -35,28 +36,40 @@ class AdminService extends AdminBaseService $resAdmin = AdminModel::create($param); - // 如果是客服账号,需要注册一下聊天账号 - $regChat = []; - if (isset($param['parent_id']) && $param['parent_id'] > 0) { - Log::info('创建客服账号 - parent_id='. $param['parent_id']); - $chatData = [ - 'Username' => $resAdmin->id."_".$resAdmin->user_name, //用account.id + account.user_name 拼接作为聊天账号注册的Username - 'Password' => '123456', - ]; - $chatUrl = env('CHAT_SERVER.BASE_URL') . '/api/user/register'; - $regChat = (new \app\utility\RequestChatServer())->ReqChatServer($chatUrl, $chatData); - if (!isset($regChat['data']['uuid'])) { - Log::error('添加客服 - 创建聊天账号失败 chat_response=:'. json_encode($regChat)); - return $this->toData('0', '注册聊天账号失败.', ['chat_response' => $regChat]); - } - //将客服账号与聊天账号关联 - UserChatLinkModel::create([ - 'user_id' => $resAdmin->id, - 'user_type' => 2, - 'chat_uuid' => $regChat['data']['uuid'], - 'chat_name' => $regChat['data']['username'] - ]); + // 注册一下聊天账号 + $chatData = [ + 'Username' => $resAdmin->id."_".$resAdmin->user_name, //用account.id + account.user_name 拼接作为聊天账号注册的Username + 'Password' => '123456', + ]; + $chatUrl = env('CHAT_SERVER.BASE_URL') . '/api/user/register'; + $regChat = (new \app\utility\RequestChatServer())->ReqChatServer($chatUrl, $chatData); + if (!isset($regChat['data']['uuid'])) { + return $this->toData('0', '注册聊天账号失败.', ['chat_response' => $regChat]); + } + UserChatLinkModel::create([ + 'user_id' => $resAdmin->id, + 'user_type' => 2, + 'chat_uuid' => $regChat['data']['uuid'], + 'chat_name' => $regChat['data']['username'] + ]); + + // 创建聊天群 + $groupName = 'ivs-group'.$resAdmin->id; + $chatGroupData = [ + 'Name' => $groupName, + ]; + $chatGroupUrl = env('CHAT_SERVER.BASE_URL') . '/api/group/join/'.$regChat['data']['uuid']; + $chatGroupRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatGroupUrl, $chatGroupData); + if (!isset($chatGroupRes['data']['group_uuid'])) { + return $this->toData('100400', 'Failed to register a chat group.', []); } + UserChatGroupModel::create([ + 'user_id' => $resAdmin->id, + 'user_chat_uuid' => $regChat['data']['uuid'], + 'group_name' => $groupName, + 'group_uuid' => $chatGroupRes['data']['group_uuid'] + ]); + return $this->toData('0', '添加成功.', ['chatData' => $regChat]); } catch (ValidateException $validateException) { diff --git a/app/admin/service/AgentService.php b/app/admin/service/AgentService.php index 0a6b5ea..36cde49 100644 --- a/app/admin/service/AgentService.php +++ b/app/admin/service/AgentService.php @@ -270,6 +270,9 @@ class AgentService extends AdminBaseService if (empty($param['play_url'])) { return $this->toData('1', 'Missing param play_url'); } + if (empty($param['agent_id'])) { + return $this->toData('1', 'Missing param agent_id'); + } $res = AwsIvsModel::create([ 'title' => $param['title'], 'anchor_name' => $param['anchor_name'], @@ -277,7 +280,8 @@ class AgentService extends AdminBaseService 'desc' => $param['desc'], 'push_url' => $param['push_url'], 'secret_key' => $param['secret_key'], - 'play_url' => $param['play_url'] + 'play_url' => $param['play_url'], + 'agent_id' => $param['agent_id'] ]); return $this->toData('0', 'SUCCESS', ['id' => $res->id]); } catch (\Exception $exception) { @@ -309,6 +313,9 @@ class AgentService extends AdminBaseService if (empty($param['play_url'])) { return $this->toData('1', 'Missing param play_url'); } + if (empty($param['agent_id'])) { + return $this->toData('1', 'Missing param agent_id'); + } // 检查是否存在数据 $ckInfo = AwsIvsModel::where('id', $param['id'])->find(); if (empty($ckInfo)) { diff --git a/app/home/controller/News.php b/app/home/controller/News.php index 3903438..aeec1e1 100644 --- a/app/home/controller/News.php +++ b/app/home/controller/News.php @@ -96,10 +96,10 @@ class News extends HomeBaseController { $chatData = [ - 'Username' => "ccc33351953", + 'Username' => "20_agent", 'Password' => '123456', ]; - $chatUrl = env('CHAT_SERVER.BASE_URL') . '/user/register'; + $chatUrl = env('CHAT_SERVER.BASE_URL') . '/api/user/register'; $res = (new \app\utility\RequestChatServer())->ReqChatServer($chatUrl, $chatData); if (!isset($res['data']['uuid'])) { return json([ @@ -110,9 +110,10 @@ class News extends HomeBaseController //将客服账号与聊天账号关联 UserChatLinkModel::create([ - 'user_id' => 999, - 'user_type' => 1, + 'user_id' => 20, + 'user_type' => 2, 'chat_uuid' => $res['data']['uuid'], + 'chat_name' => $res['data']['username'] ]); return json([ diff --git a/app/home/controller/User.php b/app/home/controller/User.php index bd92273..8fa5169 100644 --- a/app/home/controller/User.php +++ b/app/home/controller/User.php @@ -19,6 +19,12 @@ class User extends HomeBaseController return json($returnData); } + public function getAnchorForAgent(): Json + { + $returnData = (new UserService())->getAnchorForAgent($this->request->userId); + return json($returnData); + } + /** * @desc 设置用户国家 * @return Json diff --git a/app/home/route/app.php b/app/home/route/app.php index 14199c6..da77292 100644 --- a/app/home/route/app.php +++ b/app/home/route/app.php @@ -178,6 +178,8 @@ Route::group('/',function (){ Route::post('user/get_time', 'User/getTime'); // 获取用户基础信息 Route::post('user/info', 'User/getUserInfo'); + // 获取用户的代理创建的群聊信息 + Route::post('user/get_anchor_for_agent', 'User/getAnchorForAgent'); // 获取登陆记录 Route::post('user/login_log', 'User/loginLog'); // 退出登陆 diff --git a/app/home/service/LoginService.php b/app/home/service/LoginService.php index add401a..5fcdd38 100644 --- a/app/home/service/LoginService.php +++ b/app/home/service/LoginService.php @@ -7,6 +7,7 @@ use app\home\validate\LoginValidate; use app\model\AdminModel; use app\model\CountryModel; use app\model\CustomerRelationalModel; +use app\model\UserChatGroupModel; use app\model\UserChatLinkModel; use app\model\UserModel; use app\utility\Jwt; @@ -229,6 +230,14 @@ class LoginService extends BaseHomeService $chatFriendsUrl = env('CHAT_SERVER.BASE_URL') . '/api/eachOtherFriends'; $chatFriendsRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatFriendsUrl, $chatFriendsData); Log::info("邮箱注册 - chat服务加好友结果:".json_encode($chatFriendsRes)); + // 将当前用户加入到代理创建的群聊中 【需要查出当前用户的代理创建的群聊信息】 + $agentGroup = UserChatGroupModel::where(['user_id'=>$agentId])->find(); + if (empty($agentGroup)) { + return $this->toData('100400', 'The chat group is error.', []); + } + $joinChatGroupUrl = env('CHAT_SERVER.BASE_URL') . '/api/group/join/'.$chatRes['data']['uuid'].'/'.$agentGroup->group_uuid; + $joinChatGroupRes = (new \app\utility\RequestChatServer())->ReqChatServer($joinChatGroupUrl, []); + } }); // 删除缓存 @@ -529,6 +538,13 @@ class LoginService extends BaseHomeService $chatFriendsUrl = env('CHAT_SERVER.BASE_URL') . '/api/eachOtherFriends'; $chatFriendsRes = (new \app\utility\RequestChatServer())->ReqChatServer($chatFriendsUrl, $chatFriendsData); Log::info("手机号注册 - chat服务加好友结果:".json_encode($chatFriendsRes)); + // 将当前用户加入到代理创建的群聊中 【需要查出当前用户的代理创建的群聊信息】 + $agentGroup = UserChatGroupModel::where(['user_id'=>$agentId])->find(); + if (empty($agentGroup)) { + return $this->toData('100400', 'The chat group is error.', []); + } + $joinChatGroupUrl = env('CHAT_SERVER.BASE_URL') . '/api/group/join/'.$chatRes['data']['uuid'].'/'.$agentGroup->group_uuid; + $joinChatGroupRes = (new \app\utility\RequestChatServer())->ReqChatServer($joinChatGroupUrl, []); } }); diff --git a/app/home/service/UserService.php b/app/home/service/UserService.php index 91f7afd..a04f7ff 100644 --- a/app/home/service/UserService.php +++ b/app/home/service/UserService.php @@ -6,6 +6,7 @@ use app\home\validate\UserValidate; use app\model\CountryModel; use app\model\CustomerRelationalModel; use app\model\FileModel; +use app\model\UserChatGroupModel; use app\model\UserChatLinkModel; use app\model\UserContractModel; use app\model\UserDigitalModel; @@ -133,7 +134,7 @@ class UserService extends BaseHomeService return $this->toData('100403', 'Please log in first', []); } - $info = UserModel::getFieldsByUserId('trade_password,lever_status,gender,last_name,first_name,real_status,country_id,user_no,nick_name,email,phone_number,country_code,is_real,head_img_id,invite_code,is_test_user', $userId); + $info = UserModel::getFieldsByUserId('trade_password,lever_status,gender,last_name,first_name,real_status,country_id,user_no,nick_name,email,phone_number,country_code,agent_id,is_real,head_img_id,invite_code,is_test_user', $userId); if (empty($info)) { return $this->toData('100400', 'The user does not exist.', []); } @@ -179,7 +180,17 @@ class UserService extends BaseHomeService $customerChatName = $customerChatInfo->chat_name; } } - + // 获取当前用户代理创建的群聊信息 + $group_chat_name = ""; + $group_chat_uuid = ""; + if ($info['agent_id']) { + $agentGroup = UserChatGroupModel::where(['user_id'=>$info['agent_id']])->find(); + if (empty($agentGroup)) { + return $this->toData('100400', 'Agent chat group is null.', []); + } + $group_chat_name = $agentGroup->group_name; + $group_chat_uuid = $agentGroup->group_uuid; + } // 返回数据 return $this->toData('0', 'Modification successful.', [ @@ -206,13 +217,42 @@ class UserService extends BaseHomeService 'user_chat_name' => $userChatName, 'customer_chat_uuid' => $customerChatUuid, 'customer_chat_name' => $customerChatName, - 'customer_chat_avatar' => '/bs/image/default.jpeg' + 'customer_chat_avatar' => '/bs/image/default.jpeg', + 'group_chat_name' => $group_chat_name, + 'group_chat_uuid' => $group_chat_uuid, ]); } catch (\Exception $exception) { return $this->toData('100500', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); } } + // 查询代理下的一个主播信息 + public function getAnchorForAgent($userId) + { + try { + if (empty($userId) || $userId <= 0) { + return $this->toData('100403', 'Please log in first', []); + } + // 查询用户所属的代理id + $info = UserModel::getFieldsByUserId('trade_password,lever_status,gender,last_name,first_name,real_status,country_id,user_no,nick_name,email,phone_number,country_code,agent_id,is_real,head_img_id,invite_code,is_test_user', $userId); + if (empty($info)) { + return $this->toData('100400', 'The user does not exist.', []); + } + if (empty($info['agent_id'])) { + return $this->toData('100400', 'The user does not have a agent.', []); + } + // 查询代理下的一个主播信息 + $agentGroup = UserChatGroupModel::where(['user_id'=>$info['agent_id']])->find()->toArray(); + if (empty($agentGroup)) { + return $this->toData('100400', 'The chat group is error.', []); + } + + return $this->toData('0', 'Modification successful.', $agentGroup); + } catch (\Exception $exception) { + return $this->toData('100500', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); + } + } + /** * @desc 设置用户国家 * @param $userId diff --git a/app/model/UserChatGroupModel.php b/app/model/UserChatGroupModel.php new file mode 100644 index 0000000..24ab443 --- /dev/null +++ b/app/model/UserChatGroupModel.php @@ -0,0 +1,6 @@ +