修改了预约视频时间、增加了创建音视频房间接口

This commit is contained in:
2024-02-01 15:04:40 +08:00
parent fcfb84e6c6
commit 10aae768cb
11 changed files with 652 additions and 318 deletions
+64 -30
View File
@@ -37,6 +37,7 @@ use App\Model\UserCoupon;
use App\Model\UserDoctor;
use App\Model\UserPatient;
use App\Model\UserSystem;
use App\Model\VideoReservation;
use App\Services\BaseService;
use App\Services\ImService;
use App\Services\InquiryService;
@@ -1714,10 +1715,10 @@ class CallBackController extends AbstractController
$request_params = $this->request->getBody()->getContents();
$SdkAppId = $this->request->header("SdkAppId");
$Sign = $this->request->header("Sign");
$Sign = stripslashes($Sign);
try {
Log::getInstance("CallBackController-trtcRoomCallBack")->info(json_encode($request_params, JSON_UNESCAPED_UNICODE));
Log::getInstance("CallBackController-trtcRoomCallBack")->info(json_encode($SdkAppId, JSON_UNESCAPED_UNICODE));
Log::getInstance("CallBackController-trtcRoomCallBack")->info(json_encode($Sign, JSON_UNESCAPED_UNICODE));
if (empty($SdkAppId)) {
return $this->TrtcErrorReturn("缺少SdkAppId字段");
@@ -1730,42 +1731,77 @@ class CallBackController extends AbstractController
// 鉴定回调签名
$VideoSafe = new VideoSafe();
$result = $VideoSafe->validateSign($request_params,$Sign);
dump($result);
// if (!$result) {
// return $this->TrtcErrorReturn("回调签名不匹配");
// }
if (!$result) {
return $this->TrtcErrorReturn("回调签名不匹配");
}
$request_params = json_decode($request_params,true);
die;
// 验证参数
if (empty($request_params['EventGroupId'])){
return $this->ImErrorReturn("回调事件为空");
return $this->TrtcErrorReturn("回调事件为空");
}
$userService = new UserService();
if ($request_params['CallbackCommand'] == "State.StateChange"){
// 用户状态变更
$result = $userService->userImLoginStatus($request_params);
if ($result['code'] == 0){
return $this->ImErrorReturn($result['message']);
}
}elseif ($request_params['CallbackCommand'] == "C2C.CallbackAfterSendMsg"){
// 用户im消息发送后回调
$result = $userService->userImAfterSendMsg($request_params);
if ($result['code'] == 0){
return $this->ImErrorReturn($result['message']);
}
}else{
return $this->ImErrorReturn("非法事件");
if (empty($request_params['EventType'])){
return $this->TrtcErrorReturn("回调事件类型为空");
}
} catch (\Exception $e) {
if (empty($request_params['EventInfo'])){
return $this->TrtcErrorReturn("回调事件信息为空");
}
if (empty($request_params['EventInfo']['RoomId'])){
return $this->TrtcErrorReturn("缺少房间id");
}
// 排除数据
if ($request_params['EventGroupId'] != 1){
return $this->TrtcErrorReturn("回调地址推送错误");
}
if (!in_array($request_params['EventType'],[101,102,103])){
return $this->TrtcErrorReturn("事件类型错误");
}
} catch (\Throwable $e) {
// 验证失败
return $this->ImErrorReturn($e->getMessage());
return $this->TrtcErrorReturn($e->getMessage());
}
Log::getInstance()->info("Im回调数据处理成功");
// 处理业务逻辑
try {
// 检测缓存-只允许同时处理同一房间的一个请求,防止数据库冲突
$redis = $this->container->get(Redis::class);
$redis_key = "trtcCallBack_" . $request_params['EventInfo']['RoomId'];
$redis_value = $redis->get($redis_key);
if (!empty($redis_value)){
return $this->TrtcErrorReturn("存在正在处理的回调");
}
$redis->set($redis_key, 1, 10);
// 获取房间id
$params = array();
$params['room_id'] = $request_params['EventInfo']['RoomId'];
$video_reservation = VideoReservation::getLastOne($params);
if (empty($video_reservation)){
return $this->TrtcErrorReturn("存在正在处理的回调");
}
// 处理创建房间
// 处理解散房间
// 处理进入房间
// 删除缓存
}catch (\Throwable $e){
// 验证失败
return $this->TrtcErrorReturn($e->getMessage());
}
Log::getInstance("CallBackController-trtcRoomCallBack")->info("音视频回调-房间数据处理成功");
return $this->ImSuccessReturn();
}
@@ -1783,8 +1819,6 @@ class CallBackController extends AbstractController
try {
Log::getInstance("CallBackController-trtcMediaCallBack")->info(json_encode($request_params, JSON_UNESCAPED_UNICODE));
Log::getInstance("CallBackController-trtcMediaCallBack")->info(json_encode($SdkAppId, JSON_UNESCAPED_UNICODE));
Log::getInstance("CallBackController-trtcMediaCallBack")->info(json_encode($Sign, JSON_UNESCAPED_UNICODE));
if (empty($SdkAppId)) {
return $this->TrtcErrorReturn("缺少SdkAppId字段");
-16
View File
@@ -164,22 +164,6 @@ class InquiryController extends AbstractController
return $this->response->json($data);
}
/**
* 医生设置视频预约时间
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function addVideoReservationDate(): ResponseInterface
{
$request = $this->container->get(InquiryRequest::class);
$request->scene('addVideoReservationDate')->validateResolved();
$InquiryService = new InquiryService();
$data = $InquiryService->addVideoReservationDate();
return $this->response->json($data);
}
/**
* 获取视频问诊消息内页基础数据
* @return ResponseInterface
+49
View File
@@ -0,0 +1,49 @@
<?php
namespace App\Controller;
use App\Request\InquiryRequest;
use App\Request\VideoRequest;
use App\Services\InquiryService;
use App\Services\VideoService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Http\Message\ResponseInterface;
/**
* 视频
*/
class VideoController extends AbstractController
{
/**
* 医生设置视频预约时间
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function addVideoReservationDate(): ResponseInterface
{
$request = $this->container->get(VideoRequest::class);
$request->scene('addVideoReservationDate')->validateResolved();
$videoService = new VideoService();
$data = $videoService->addVideoReservationDate();
return $this->response->json($data);
}
/**
* 创建音视频房间
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function addVideoRoom(): ResponseInterface
{
$request = $this->container->get(VideoRequest::class);
$request->scene('addVideoRoom')->validateResolved();
$videoService = new VideoService();
$data = $videoService->addVideoRoom();
return $this->response->json($data);
}
}