新增处理音视频回调-云端录制2

This commit is contained in:
wucongxing8150 2024-03-13 10:23:22 +08:00
parent 25656ad6be
commit a104314a9e
2 changed files with 65 additions and 32 deletions

View File

@ -2110,12 +2110,15 @@ class CallBackController extends AbstractController
}
// 处理业务逻辑
Db::beginTransaction();
try {
// 获取视频预约记录
$params = array();
$params['room_id'] = $request_params['EventInfo']['RoomId'];
$order_inquiry_video_reservation = OrderInquiryVideoReservation::getLastOne($params);
if (empty($order_inquiry_video_reservation)){
Db::rollBack();
return $this->videoRecordingErrorReturn("未查询到该房间号,此条数据不接收");
}
@ -2125,11 +2128,13 @@ class CallBackController extends AbstractController
$params['order_inquiry_id'] = $order_inquiry_video_reservation['order_inquiry_id'];
$order_inquiry_video_record = OrderInquiryVideoRecord::getLastOne($params);
if (empty($order_inquiry_video_record)){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少视频开启记录");
}
if (!empty($order_inquiry_video_record['doctor_vod_path']) && !empty($order_inquiry_video_record['patient_vod_path'])){
// 已存在点播路径,此次请求无需处理
Db::rollBack();
return $this->videoRecordingSuccessReturn();
}
@ -2142,44 +2147,51 @@ class CallBackController extends AbstractController
$redis->set($redis_key, $request_params['EventType'], 20);
if (!empty($redis_value)){
// 事件正在处理,重复请求不处理
Db::rollBack();
return $this->videoRecordingSuccessReturn();
}
// 处理业务逻辑
if (!isset($request_params['EventInfo']['Payload']['TencentVod'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少关键参数");
}
if (empty($request_params['EventInfo']['Payload']['TencentVod'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少关键参数");
}
if (!isset($request_params['EventInfo']['Payload']['TencentVod']['UserId'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少用户id参数");
}
if (empty($request_params['EventInfo']['Payload']['TencentVod']['UserId'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少用户id参数");
}
// 获取用户数据
$params = array();
$params['user_id'] = $request_params['EventInfo']['Payload']['TencentVod']['UserId'];
$user = User::getOne($params);
if (empty($user)){
Db::rollBack();
return $this->videoRecordingErrorReturn("非法用户");
}
if ($request_params['EventInfo']['Payload']['Status'] == 0){
// 录制上传成功
if (!isset($request_params['EventInfo']['Payload']['TencentVod'])){
return $this->videoRecordingErrorReturn("缺少关键参数");
}
if (empty($request_params['EventInfo']['Payload']['TencentVod'])){
return $this->videoRecordingErrorReturn("缺少关键参数");
}
if (!isset($request_params['EventInfo']['Payload']['TencentVod']['UserId'])){
return $this->videoRecordingErrorReturn("缺少用户id参数");
}
if (empty($request_params['EventInfo']['Payload']['TencentVod']['UserId'])){
return $this->videoRecordingErrorReturn("缺少用户id参数");
}
if (!isset($request_params['EventInfo']['Payload']['TencentVod']['VideoUrl'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少播放地址参数");
}
if (empty($request_params['EventInfo']['Payload']['TencentVod']['VideoUrl'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("缺少播放地址参数");
}
// 获取用户数据
$params = array();
$params['user_id'] = $request_params['EventInfo']['Payload']['TencentVod']['UserId'];
$user = User::getOne($params);
if (empty($user)){
return $this->videoRecordingErrorReturn("非法用户");
}
// 修改视频状态
$params = array();
$params['records_id'] = $order_inquiry_video_record['records_id'];
@ -2187,28 +2199,34 @@ class CallBackController extends AbstractController
if ($user['user_type'] == 1){
$data = array();
$data['vod_path_patient'] = $request_params['EventInfo']['Payload']['TencentVod']['VideoUrl'];
$data['vod_save_status'] = 1;
$data['vod_status_patient'] = 1;
$res = OrderInquiryVideoRecord::edit($params,$data);
if (!$res){
Db::rollBack();
return $this->videoRecordingErrorReturn("播放地址存储失败");
}
}elseif($user['user_type'] == 2){
$data = array();
$data['vod_path_doctor'] = $request_params['EventInfo']['Payload']['TencentVod']['VideoUrl'];
$data['vod_status_doctor'] = 1;
$res = OrderInquiryVideoRecord::edit($params,$data);
if (!$res){
Db::rollBack();
return $this->videoRecordingErrorReturn("播放地址存储失败");
}
}else{
Db::rollBack();
return $this->videoRecordingErrorReturn("非法用户类型");
}
}else{
// 录制上传失败
if (!isset($request_params['EventInfo']['Payload']['Errmsg'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("录制上传失败但缺少错误描述");
}
if (empty($request_params['EventInfo']['Payload']['Errmsg'])){
Db::rollBack();
return $this->videoRecordingErrorReturn("录制上传失败但错误描述为空");
}
@ -2217,17 +2235,30 @@ class CallBackController extends AbstractController
$params['records_id'] = $order_inquiry_video_record['records_id'];
$data = array();
$data['vod_save_status'] = 2;
$data['vod_err_message'] = $request_params['EventInfo']['Payload']['Errmsg'];
if ($user['user_type'] == 1){
$data['vod_status_patient'] = 2;
$data['vod_err_patient'] = $request_params['EventInfo']['Payload']['Errmsg'];
}elseif($user['user_type'] == 2){
$data['vod_status_doctor'] = 2;
$data['vod_err_doctor'] = $request_params['EventInfo']['Payload']['Errmsg'];
}else{
Db::rollBack();
return $this->videoRecordingErrorReturn("非法用户类型");
}
$res = OrderInquiryVideoRecord::edit($params,$data);
if (!$res){
return $this->videoRecordingErrorReturn("播放地址存储失败");
Db::rollBack();
return $this->videoRecordingErrorReturn("修改视频状态失败");
}
}
Db::commit();
// 删除缓存
$redis->del($redis_key);
}catch (\Throwable $e){
Db::rollBack();
return $this->videoRecordingErrorReturn($e->getMessage());
}

View File

@ -17,9 +17,11 @@ use Hyperf\Snowflake\Concern\Snowflake;
* @property string $start_video_time 开始视频时间
* @property string $stop_video_time 结束视频时间
* @property string $vod_path_doctor 医生云点播路径
* @property int $vod_status_doctor 医生云点播存储状态0:未开始存储 1:成功 2:存储失败)
* @property string $vod_err_doctor 医生云点播存储失败原因
* @property string $vod_path_patient 患者云点播路径
* @property int $vod_save_status 云点播存储状态0:未开始存储 1:成功 2:存储失败)
* @property string $vod_err_message 云点播存储失败原因
* @property int $vod_status_patient 患者云点播存储状态0:未开始存储 1:成功 2:存储失败)
* @property string $vod_err_patient 患者云点播存储失败原因
* @property \Carbon\Carbon $created_at 创建时间
* @property \Carbon\Carbon $updated_at 修改时间
*/
@ -35,7 +37,7 @@ class OrderInquiryVideoRecord extends Model
/**
* The attributes that are mass assignable.
*/
protected array $fillable = ['records_id', 'order_inquiry_id', 'room_id', 'video_status', 'start_video_time', 'stop_video_time', 'vod_path_doctor', 'vod_path_patient', 'vod_save_status', 'vod_err_message', 'created_at', 'updated_at'];
protected array $fillable = ['records_id', 'order_inquiry_id', 'room_id', 'video_status', 'start_video_time', 'stop_video_time', 'vod_path_doctor', 'vod_status_doctor', 'vod_err_doctor', 'vod_path_patient', 'vod_status_patient', 'vod_err_patient', 'created_at', 'updated_at'];
protected string $primaryKey = "records_id";