diff --git a/app/Controller/UserController.php b/app/Controller/UserController.php index 111975a..b5dd4f8 100644 --- a/app/Controller/UserController.php +++ b/app/Controller/UserController.php @@ -6,6 +6,7 @@ use App\Amqp\Producer\PrescriptionDistributePhProducer; use App\Constants\HttpEnumCode; use App\Exception\BusinessException; use App\Model\DoctorInquiryTime; +use App\Model\DoctorPharmacistCert; use App\Model\OrderInquiry; use App\Model\UserDoctor; use App\Request\UserRequest; @@ -297,5 +298,56 @@ class UserController extends AbstractController // // $RecentContact = new RecentContact(); // $result = $RecentContact->getRecentContactPage(); + + + + + $ca = new Ca(); + + // 获取云证书 + $data = array(); + $data['user_id'] = "491925054435950592"; + $data['card_num'] = "410323199603261241"; + $result = $ca->getCloudCert($data); + + $data = array(); + $data['user_id'] = "491925054435950592"; + $data['cert_base64'] = $result['certBase64']; + $data['cert_chain_p7'] = $result['certP7']; + $data['cert_serial_number'] = $result['certSerialnumber']; + $data['ca_pin'] = "491925054435950592"; + $doctor_pharmacist_cert = DoctorPharmacistCert::addDoctorPharmacistCert($data); + if (empty($doctor_pharmacist_cert)){ + return fail(); + } + + // 获取用户云证书数据 + $params = array(); + $params['user_id'] = "491925054435950592"; + $doctor_pharmacist_cert = DoctorPharmacistCert::getOne($params); + if (empty($doctor_pharmacist_cert)){ + return fail(HttpEnumCode::HTTP_ERROR,"用户数据错误"); + } + + // 获取云证书签名 + $data = array(); + $data['created_at'] = date('Y-m-d H:i:s',time()); + $data['department_custom_name'] = "外科"; + $data['user_name'] = "测试用户1"; + $data['sex'] = "男"; + $data['age'] = 19; + $data['allergy_history'] = "无"; + $data['icd_name'] = "感冒"; + $data['doctor_advice'] = "多吃药"; + $data['product'] = [ + [ + "product_name" => "感冒药", + "product_name" => "感冒药", + ] + ]; + + + $result = $ca->getCertSign($data); + } } \ No newline at end of file diff --git a/app/Model/DoctorPharmacistCert.php b/app/Model/DoctorPharmacistCert.php index ac0c5e4..bfb9a20 100644 --- a/app/Model/DoctorPharmacistCert.php +++ b/app/Model/DoctorPharmacistCert.php @@ -66,4 +66,14 @@ class DoctorPharmacistCert extends Model { return self::where($params)->get($fields); } + + /** + * 新增 + * @param array $data + * @return \Hyperf\Database\Model\Model|DoctorPharmacistCert + */ + public static function addDoctorPharmacistCert(array $data = []): \Hyperf\Database\Model\Model|DoctorPharmacistCert + { + return self::create($data); + } } diff --git a/app/Services/UserService.php b/app/Services/UserService.php index bc2f346..532dab4 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -254,11 +254,14 @@ class UserService extends BaseService } $token = explode(' ', $bearer_token[0]); + if (!isset($token[1])){ + return fail(); + } $redis = $this->container->get(Redis::class); // 旧token加入黑名单 5天有效期,5天内,无法继续进行访问 - $res = $redis->set('jwt_black_' . $token, time(), 60*60*24*5); + $res = $redis->set('jwt_black_' . $token[1], time(), 60*60*24*5); if (!$res) { return fail(HttpEnumCode::SERVER_ERROR); } diff --git a/extend/Ca/Ca.php b/extend/Ca/Ca.php index 5ec24c9..e376707 100644 --- a/extend/Ca/Ca.php +++ b/extend/Ca/Ca.php @@ -54,24 +54,42 @@ class Ca } } - // 获取云证书签名 - public function getCertSign(array $data){ + /** + * 获取云证书签名 + * @param array $data + * @return mixed + */ + public function getCertSign(array $data): mixed + { $option = [ 'form_params' => [ 'entityId' => $data['user_id'], // 用户唯一标识,由业务系统定义 - 'entityType' => "Personal",// 用户类型,可选值[Personal/Organizational] + 'toSign' => $this->getRequestSign($data), 'pin' => $data['user_id'], // 证书PIN码 - 'cardNumber' => $data['card_num'], // 证件号码(个人身份证;企业统一社会信用代码) ] ]; + + try { + $response = $this->httpRequest( + config("ca.api_url") . '/cloud-certificate-service' . '/api/cloudCert/open/cert/sign', + $option + ); + if (empty($response)){ + // 返回值为空 + throw new BusinessException(HttpEnumCode::getMessage(HttpEnumCode::SERVER_ERROR)); + } + return $response; + } catch (GuzzleException $e) { + throw new BusinessException($e->getMessage()); + } } /** - * 获取签名 + * 获取请求签名 * @param array $data * @return string */ - protected function getSign(array $data): string + protected function getRequestSign(array $data): string { ksort($data['form_params']); @@ -86,19 +104,17 @@ class Ca * @return mixed * @throws GuzzleException */ - public function httpRequest(string $path,array $arg = []): mixed + protected function httpRequest(string $path,array $arg = []): mixed { $option = [ "headers" => [ "app_id" => config("ca.app_id"), - "signature" => $this->getSign($arg) + "signature" => $this->getRequestSign($arg) ], ]; $arg = array_merge($arg,$option); - dump($arg); - dump($path); $response = $this->client->post($path, $arg); if ($response->getStatusCode() != '200'){ // 请求失败