diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index acadb50..c8624a1 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -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()); } diff --git a/app/Model/OrderInquiryVideoRecord.php b/app/Model/OrderInquiryVideoRecord.php index 0f23289..a7e18ed 100644 --- a/app/Model/OrderInquiryVideoRecord.php +++ b/app/Model/OrderInquiryVideoRecord.php @@ -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";