You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
254 lines
7.4 KiB
254 lines
7.4 KiB
<?php
|
|
|
|
namespace app\chat\controller\api;
|
|
use app\base\model\mpweixin\MpweixinUser;
|
|
use app\base\model\user\User;
|
|
use app\base\model\user\UserInfo;
|
|
use app\chat\model\ChatFriendsRoom;
|
|
use app\chat\model\ChatFriendsRoomMessage;
|
|
use app\chat\model\ChatFriendsRoomUser;
|
|
use app\fire\logic\Notice;
|
|
|
|
/**
|
|
* 个人私聊
|
|
* @date 2022-07-29
|
|
*/
|
|
class FriendsChat extends Base
|
|
{
|
|
|
|
//*************************************************************列表页************************************************
|
|
|
|
/**
|
|
* 开启个人聊天会话
|
|
* @param int $to_user_id 对方用户ID
|
|
* @date 2022-07-29
|
|
*/
|
|
public function updateChatRoom()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 开启个人聊天会话并返回聊天房间ID
|
|
$result = $friends_chat_logic->updateChatRoom($param['to_user_id'],$param['client_id']);
|
|
if ($result['code'] != 0) {
|
|
return json($result);
|
|
}
|
|
|
|
$return_data = [
|
|
'room_id' => $result['data']['room_id']
|
|
];
|
|
|
|
return sendSuccessMessage($return_data);
|
|
}
|
|
|
|
/**
|
|
* 获取聊天的用户列表
|
|
* @date 2022-08-01
|
|
*/
|
|
public function listChatRoom()
|
|
{
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 获取聊天的用户列表
|
|
$result = $friends_chat_logic->listChatRoom();
|
|
|
|
$r_data = [
|
|
'room_list' => $result
|
|
];
|
|
|
|
return sendSuccessMessage($r_data);
|
|
}
|
|
|
|
|
|
/**
|
|
* 删除个人聊天会话
|
|
* @param int $to_user_id 对方用户ID
|
|
* @date 2022-07-29
|
|
*/
|
|
public function deleteChatRoom()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 删除个人聊天会话
|
|
$result = $friends_chat_logic->deleteChatRoom($param['room_id']);
|
|
if ($result['code'] != 0) {
|
|
return json($result);
|
|
}
|
|
|
|
return json($result);
|
|
}
|
|
|
|
//******************************************************socket绑定用户***********************************************
|
|
|
|
/**
|
|
* 绑定用户
|
|
* @date 2022-08-16
|
|
*/
|
|
public function bindUser()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 绑定用户
|
|
$result = $friends_chat_logic->bindUser($param['client_id']);
|
|
|
|
return sendSuccessMessage();
|
|
}
|
|
|
|
//*************************************************************详情页************************************************
|
|
|
|
/**
|
|
* 获取聊天详情
|
|
* @date 2022-08-03
|
|
*/
|
|
public function getChatRoomDetail()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 获取房间双方头像以及好友昵称
|
|
$room_user = $friends_chat_logic->getChatRoomDetail($param['room_id']);
|
|
|
|
return sendSuccessMessage([
|
|
'room_user' => $room_user
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 更改聊天室用户在线状态
|
|
* @date 2022-08-16
|
|
*/
|
|
public function updateUserOnlineStatus()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 更改聊天室用户在线状态
|
|
$result = $friends_chat_logic->updateUserOnlineStatus($param['room_id'], $param['is_online']);
|
|
if (!$result['code']) {
|
|
return json($result);
|
|
}
|
|
|
|
return sendSuccessMessage();
|
|
}
|
|
|
|
/**
|
|
* 发送聊天消息
|
|
* @date 2022-08-03
|
|
*/
|
|
public function insertChatMessage()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 组合附加数据
|
|
$attach = [];
|
|
if ($param['type'] == 2) {
|
|
$attach = [
|
|
'record_seconds' => $param['record_seconds']
|
|
];
|
|
} else if ($param['type'] == 4) {
|
|
$attach = [
|
|
'name' => $param['name'],
|
|
'address' => $param['address'],
|
|
'lat' => $param['lat'],
|
|
'lng' => $param['lng']
|
|
];
|
|
} else if ($param['type'] == 5) {
|
|
$attach = [
|
|
'product_id' => $param['product_id'],
|
|
'product_name' => $param['product_name'],
|
|
'product_cover_img' => $param['product_cover_img'],
|
|
];
|
|
}
|
|
|
|
$friend_room_user_model = new ChatFriendsRoomUser();
|
|
$to_user_id = $friend_room_user_model->getFriendUserId($param['room_id']);
|
|
$room_model = new ChatFriendsRoom();
|
|
$message_model = new ChatFriendsRoomMessage();
|
|
$room = $room_model->getOneData(['id'=>$param['room_id'],'user_id'=>USER_ID,'another_user_id'=>$to_user_id]);
|
|
if($room)
|
|
{
|
|
$today_is_first = $message_model->where([['user_id','=',$room['user_id']],['to_user_id','=',$room['another_user_id']],['create_time','between',[strtotime(date('Y-m-d')),strtotime(date('Y-m-d'))+86400]]])->find();
|
|
if(!$today_is_first)
|
|
{
|
|
$user_model = new MpweixinUser();
|
|
$notice_logic = new Notice();
|
|
$user_openid = $user_model->getUserWechatOpenid($room['another_user_id']);
|
|
$user_info_model = new UserInfo();
|
|
$user_nickname = $user_info_model->getOneData(['user_id'=>USER_ID],'nick_name');
|
|
if($user_openid)
|
|
{
|
|
$template_data = [
|
|
'touser' => $user_openid,
|
|
'template_id' => 'EorRyJAQw3HzCrfN72VY0ifFMUP9dKcE7Z404R50zPM',
|
|
// 'url' => $url . $order_id,
|
|
'miniprogram' => [
|
|
'appid' => 'wx97ac1cdaca155146',
|
|
'pagepath' => 'pages/chat/message?room_id='.$room['id'],
|
|
],
|
|
'data' => [
|
|
'first' => '您有新的消息',
|
|
'keyword1' => $user_nickname,
|
|
'keyword2' => '',
|
|
'keyword3' => '',
|
|
'remark' => '立即进入小程序,查看专家解答详情~',
|
|
],
|
|
];
|
|
$notice_logic->notice($template_data);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 获取房间双方头像以及好友昵称
|
|
$result = $friends_chat_logic->insertChatMessage($param['room_id'], $param['content'], $param['type'], $attach);
|
|
if (!$result['code']) {
|
|
return json($result);
|
|
}
|
|
|
|
|
|
|
|
return json($result);
|
|
}
|
|
|
|
/**
|
|
* 获取聊天记录
|
|
* @date 2022-08-03
|
|
*/
|
|
public function listChatRoomMessage()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$friends_chat_logic = new \app\chat\logic\FriendsChat();
|
|
|
|
// 获取聊天记录
|
|
$chat_message_list = $friends_chat_logic->listChatRoomMessage($param['room_id'], $param['cur_first_message_id']);
|
|
|
|
$r_data = [
|
|
'up_list' => $chat_message_list
|
|
];
|
|
|
|
return sendSuccessMessage($r_data);
|
|
}
|
|
|
|
/**
|
|
* 获取用户未读消息数量
|
|
* @return \think\response\Json
|
|
*/
|
|
public function getNoReadNumber()
|
|
{
|
|
$message_model = new ChatFriendsRoomMessage();
|
|
$number = $message_model->where(['to_user_id'=>USER_ID,'is_read'=>0])->count();
|
|
return sendMessage(['number'=>$number]);
|
|
}
|
|
}
|