checkAccountStatus($user_patient['user_id']); if (!$res){ // 创建单个账号 $account->createAccount($user_id,$user_name,$avatar); } // 医生检测并设置资料 if ($user['user_type'] == 2){ // 检测用户资料 $profile = new Profile(); $result = $profile->getOneAccountPortraitList("123456"); if (!empty($result)){ // 获取订单医生医院 $params = array(); $params['hospital_id'] = $user_doctor['hospital_id']; $hospital = Hospital::getOne($params); if (empty($hospital)){ throw new BusinessException("医生医院数据错误"); } // 设置用户资料 $arg = array(); // 性别 if (in_array('Tag_Profile_IM_Gender',$result)){ $arg['Tag_Profile_IM_Gender'] = sexToImSex($user_doctor['sex']); } // 医院 if (in_array('Tag_Profile_Custom_Hname',$result)){ $arg['Tag_Profile_Custom_Hname'] = $hospital['hospital']; } // 职称 if (in_array('Tag_Profile_Custom_Hname',$result)){ $arg['Tag_Profile_Custom_Title'] = $user_doctor['doctor_title'] ?? DoctorTitleCode::getMessage($user_doctor['doctor_title']); } if (!empty($arg)){ $profile->setProfile($user_doctor['user_id'],$arg); } } } return true; } catch (\Exception $e) { throw new BusinessException($e->getMessage()); } } /** * 验证回调签名 * @param string $request_time 签名时间戳 * @param string $sign 签名 * @return bool */ public function validateSign(string $request_time,string $sign): bool { $token = config('im.token'); if (empty($token)){ throw new BusinessException("Im Token Config Error"); } $sys_sign = hash("sha256", $token . $request_time); if ($sign != $sys_sign){ return false; } return true; } /** * 添加最近联系人会话记录缓存 * @param string $doctor_id 医生id * @param string $inquiry_type 订单类型(自定义字段 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) * @param string $patient_user_id 患者用户id * @param array $content 内容 * @return void * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function addRecentContactRecordCache(string $doctor_id,string $inquiry_type,string $patient_user_id,array $content): void { $redis_key = "recentContact" . $doctor_id . $inquiry_type; $hash_key = $patient_user_id; $redis = $this->container->get(Redis::class); $redis->hSet($redis_key,$hash_key,json_encode($content,JSON_UNESCAPED_UNICODE)); } }