This commit is contained in:
wucongxing 2023-03-10 16:23:44 +08:00
parent 7779808456
commit 330421fd00
4 changed files with 52 additions and 8 deletions

View File

@ -274,6 +274,18 @@ class CallBackController extends AbstractController
return $this->ImErrorReturn("消息内容错误缺少MsgBody");
}
// 验证消息内容类型
if (empty($request_params['MsgBody'][0]['MsgType'])){
Log::getInstance()->error("Im回调数据处理失败:缺少MsgType");
return $this->ImErrorReturn("消息内容错误缺少MsgType");
}
// 验证消息内容详情
if (empty($request_params['MsgBody'][0]['MsgContent'])){
Log::getInstance()->error("Im回调数据处理失败:缺少MsgContent");
return $this->ImErrorReturn("消息内容错误缺少MsgContent");
}
// 验证接收方user_id
if (empty($request_params['To_Account'])){
Log::getInstance()->error("Im回调数据处理失败:接收用户错误");
@ -340,14 +352,14 @@ class CallBackController extends AbstractController
$data['message_seq'] = $request_params['MsgSeq'];
$data['message_send_result'] = $message_send_result ?? 0;
$data['send_error_info'] = $request_params['ErrorInfo'];
$data['message_type'] = $request_params['MsgBody'][0]['MsgType'] ?? "未定义";
$data['message_type'] = $request_params['MsgBody'][0]['MsgType'];
$data['is_system'] = $is_system;
if (!empty($order_inquiry_id)){
$data['order_inquiry_id'] = $order_inquiry_id;
}
$message_content = $request_params['MsgBody'][0]['MsgContent'] ?? "";
$message_content = $request_params['MsgBody'][0]['MsgContent'];
$data['message_content'] = json_encode($message_content,JSON_UNESCAPED_UNICODE);
$data['message_custom_content'] = $request_params['CloudCustomData'] ?? "";
$message = \App\Model\Message::addMessage($data);
@ -365,7 +377,9 @@ class CallBackController extends AbstractController
$data['patient_age'] = $order_inquiry['patient_age'];
$data['inquiry_status'] = $order_inquiry['inquiry_status'];
$data['message_send_time'] = $request_params['RequestTime'];
$data['last_message_content'] = $request_params['MsgBody'][0]['MsgContent'] ?? "";
$data['message_seq'] = $request_params['MsgSeq'];
$data['message_type'] = $request_params['MsgBody'][0]['MsgType'];
$data['last_message_content'] = $request_params['MsgBody'][0]['MsgContent'];
$imService = new ImService();
$imService->addRecentContactRecordCache($order_inquiry['doctor_id'],$order_inquiry['inquiry_type'],$order_inquiry['user_id'],$data);

View File

@ -149,7 +149,7 @@ class UserController extends AbstractController
// 发送消息
$arg = array();
$arg['From_Account'] = "10000"; // 发送方user_id 如系统发送,无需填写
$arg['From_Account'] = "10002"; // 发送方user_id 如系统发送,无需填写
$arg['To_Account'] = "123456"; // 接收方user_id
$arg['ForbidCallbackControl'] = ['ForbidBeforeSendMsgCallback'];
@ -157,7 +157,7 @@ class UserController extends AbstractController
[
"MsgType" => "TIMTextElem",
"MsgContent" => [
"Text" => "测试消息22",
"Text" => "测试消息33",
],
]
];

View File

@ -8,6 +8,7 @@ use App\Request\DoctorAuthRequest;
use App\Request\UserDoctorRequest;
use App\Services\DoctorAuthService;
use App\Services\DoctorInquiryService;
use App\Services\ImService;
use App\Services\UserDoctorService;
use Extend\TencentIm\Account;
use Hyperf\Amqp\Producer;
@ -309,6 +310,19 @@ class UserDoctorController extends AbstractController
*/
public function getDoctorMessageList(): ResponseInterface
{
// $data['order_inquiry_id'] = 3;
// $data['patient_name'] = "测试用户3";
// $data['patient_sex'] = 1;
// $data['patient_age'] = 19;
// $data['inquiry_status'] = 1;
// $data['message_send_time'] = 10000;
// $data['message_seq'] = 101;
// $data['last_message_content'] = "";
//
// $imService = new ImService();
// $imService->addRecentContactRecordCache("491925054779883520",2,"3",$data);
$request = $this->container->get(UserDoctorRequest::class);
$request->scene('getDoctorMessageList')->validateResolved();

View File

@ -1339,10 +1339,26 @@ class UserDoctorService extends BaseService
$message_inquiry_type = $this->request->input('message_inquiry_type');
$redis_key = "recentContact" . $user_info['client_user_id'] . $message_inquiry_type;
dump($redis_key);
$redis = $this->container->get(Redis::class);
$result = $redis->hKeys($redis_key);
dump($result);
$result = $redis->hVals($redis_key);
if (empty($result)){
return success();
}
foreach ($result as &$item){
$item = json_decode($item,true);
}
// 获取 message_send_time 和 message_seq 两个字段的值,分别存储在不同的数组中
foreach ($result as $key => $row) {
$messageSendTime[$key] = $row['message_send_time'];
$messageSeq[$key] = $row['message_seq'];
}
// 通过 array_multisort 函数对两个字段进行排序
// 优先按照 message_send_time 排序,如果 message_send_time 相同,则按照 message_seq 排序
array_multisort($messageSendTime, SORT_DESC, $messageSeq, SORT_DESC, $result);
return success($result);
}