diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 9b04f5b..47402a5 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -757,10 +757,27 @@ class CallBackController extends AbstractController return $this->platformLogisticsErrorReturn("缺少数据体"); } + // 验证签名 + $sign_params = array(); + $sign_params['clientId'] = config('prescription_platform.client_id'); + $sign_params['paramJsonStr'] = $request_params['paramJsonStr']; + $sign_params['timestamp'] = $request_params['timestamp']; + $sign_params['nonce'] = $request_params['nonce']; + $sign_params['clientSecret'] = config('prescription_platform.client_secret'); + $sign = md5(http_build_query($sign_params, '', '&')); + if ($sign != $sign_params['sign']){ + Log::getInstance()->error("处方平台物流回调数据处理失败:签名错误"); + Log::getInstance()->error("系统签名:" . $sign); + Log::getInstance()->error("处方平台签名:" . $sign); + Log::getInstance()->error("处方平台签名:" . $sign_params['sign']); + return $this->platformLogisticsErrorReturn("签名错误"); + } + $param_json_str = json_decode($request_params['paramJsonStr'],true); if (empty($param_json_str)){ - Log::getInstance()->error("处方平台物流回调数据处理失败:数据体解析失败"); - return $this->platformLogisticsErrorReturn("数据体解析失败"); + // 数据体为空,直接返回成功,不进行验证签名 + Log::getInstance()->info("处方平台物流回调数据处理成功:数据体解析为空"); + return $this->platformLogisticsSuccessReturn(); } diff --git a/app/Controller/TestController.php b/app/Controller/TestController.php index 6920453..640b9ad 100644 --- a/app/Controller/TestController.php +++ b/app/Controller/TestController.php @@ -19,7 +19,7 @@ class TestController extends AbstractController // $this->test_8(); // $this->test_3(); // $this->test_4(); -// $this->test_6(); + $this->test_6(); // $this->test_9(); } @@ -117,7 +117,7 @@ class TestController extends AbstractController // 下载阿里云图片 $oss = new Oss(); - $filename = "applet/doctor/cert/b09ebb06-be90-40cf-9329-fab5b15139ec.png"; + $filename = "applet/doctor/cert/f2abdb81-fac0-4264-bc11-aa2b6cf2761c.png"; $style = "image/resize,m_lfit,w_100,h_350"; @@ -129,10 +129,10 @@ class TestController extends AbstractController $sign_param = [ [ - "llx"=> "700", // 左边底部X坐标 - "lly"=>"2985", // 左边底部Y坐标 - "urx"=>"1101", // 右边上部x坐标 - "ury"=>"2896", // 右边上部y坐标 + "llx"=> "500", // 左边底部X坐标 + "lly"=>"3015", // 左边底部Y坐标 + "urx"=>"850", // 右边上部x坐标 + "ury"=>"3115", // 右边上部y坐标 "pageList"=>[1], "sealImg"=>$sign_image ] @@ -317,7 +317,7 @@ class TestController extends AbstractController $oss = new Oss(); - $filename = "applet/doctor/cert/b09ebb06-be90-40cf-9329-fab5b15139ec.png"; + $filename = "applet/doctor/cert/f2abdb81-fac0-4264-bc11-aa2b6cf2761c.png"; $style = "image/resize,m_lfit,w_100,h_350"; @@ -328,14 +328,22 @@ class TestController extends AbstractController } $sign_param = [ - [ - "llx"=> "700", // 左边底部X坐标 - "lly"=>"2985", // 左边底部Y坐标 - "urx"=>"1101", // 右边上部x坐标 - "ury"=>"2896", // 右边上部y坐标 + [ // 医生端 + "llx"=>"120", // 左边底部X坐标 + "lly"=>"190", // 左边底部Y坐标 + "urx"=>"190", // 右边上部x坐标 + "ury"=>"140", // 右边上部y坐标 "pageList"=>[1], "sealImg"=>$sign_image - ] + ], +// [ // 药师端 +// "llx"=>"350", // 左边底部X坐标 +// "lly"=>"190", // 左边底部Y坐标 +// "urx"=>"440", // 右边上部x坐标 +// "ury"=>"140", // 右边上部y坐标 +// "pageList"=>[1], +// "sealImg"=>$sign_image +// ] ]; $data = array(); $data['sign_param'] = json_encode($sign_param); @@ -343,8 +351,26 @@ class TestController extends AbstractController $ca = new Ca(); $result = $ca->addSignPdf("491925054435950592",$data); -// fclose($data['pdf_file']); + $file_id = $result[0]['fileId']; + + $result = $ca->getSignedFile("491925054435950592",$file_id); + if (empty($result)){ + return fail(); + } + +// $file = fopen("./runtime/test.pdf", "w") or die("Unable to open file!"); +// fwrite($file, $result); +// fclose($file); + + // 上传阿里云oss + + $oss = new Oss(); + + $filename = "applet/doctor/prescription/test.pdf"; + + $result = $oss->putObject($filename, $result); + dump($result); } // 延迟队列测试 @@ -390,13 +416,19 @@ class TestController extends AbstractController // 下载签章的pdf文件 public function test_9(){ $ca = new Ca(); - $result = $ca->getSignedFile("491925054435950592","1638477783898161153"); + $result = $ca->getSignedFile("491925054435950592","1638734851418783746"); if (empty($result)){ return fail(); } // 上传阿里云oss + $oss = new Oss(); + + $filename = "applet/doctor/prescription/491925054435950592.pdf"; + + $result = $oss->putObject($filename, $result); + dump($result); } } \ No newline at end of file diff --git a/app/Controller/UserDoctorController.php b/app/Controller/UserDoctorController.php index a8d4b68..73b0bb1 100644 --- a/app/Controller/UserDoctorController.php +++ b/app/Controller/UserDoctorController.php @@ -198,6 +198,22 @@ class UserDoctorController extends AbstractController return $this->response->json($data); } + /** + * 删除常用语 + * @return ResponseInterface + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface + */ + public function deleteDoctorWords(): ResponseInterface + { + $request = $this->container->get(UserDoctorRequest::class); + $request->scene('deleteDoctorWords')->validateResolved(); + + $UserDoctorService = new UserDoctorService(); + $data = $UserDoctorService->deleteDoctorWords(); + return $this->response->json($data); + } + /** * 获取医生评价 * @return ResponseInterface diff --git a/app/Model/DoctorWord.php b/app/Model/DoctorWord.php index d1d0e8b..17ce745 100644 --- a/app/Model/DoctorWord.php +++ b/app/Model/DoctorWord.php @@ -72,4 +72,14 @@ class DoctorWord extends Model { return self::create($data); } + + /** + * 删除 + * @param array $params + * @return int|mixed + */ + public static function deleteDoctorWord(array $params): mixed + { + return self::where($params)->delete(); + } } diff --git a/app/Request/UserDoctorRequest.php b/app/Request/UserDoctorRequest.php index dd8d8c3..1f80100 100644 --- a/app/Request/UserDoctorRequest.php +++ b/app/Request/UserDoctorRequest.php @@ -50,6 +50,10 @@ class UserDoctorRequest extends FormRequest 'words', 'words_type' ], + 'deleteDoctorWords' => [ // 删除常用语 + 'words', + 'words_type' + ], 'getDoctorEvaluationList' => [ // 获取医生评价 'doctor_id', 'evaluation_type', diff --git a/app/Services/UserDoctorService.php b/app/Services/UserDoctorService.php index 9b1fd56..2a9d242 100644 --- a/app/Services/UserDoctorService.php +++ b/app/Services/UserDoctorService.php @@ -590,7 +590,7 @@ class UserDoctorService extends BaseService foreach ($basic_words as $item) { $data = array(); $data['words'] = $item['basics_words']; - + $data['is_system'] = 1; $result[] = $data; } } @@ -605,7 +605,7 @@ class UserDoctorService extends BaseService foreach ($doctor_words as $item) { $data = array(); $data['words'] = $item['words']; - + $data['is_system'] = 0; $result[] = $data; } } @@ -653,6 +653,33 @@ class UserDoctorService extends BaseService return success(); } + /** + * 删除常用语 + * @return array + */ + public function deleteDoctorWords(): array + { + $user_info = $this->request->getAttribute("userInfo") ?? []; + + $words = $this->request->input('words'); + $words_type = $this->request->input('words_type'); + + // 查询是否重复 + $params = array(); + $params['doctor_id'] = $user_info['client_user_id']; + $params['words_type'] = $words_type; + $params['words'] = $words; + $doctor_words = DoctorWord::getOne($params); + if (empty($doctor_words)) { + return fail(); + } + + $params = array(); + $params['doctor_words_id'] = $doctor_words['doctor_words_id']; + DoctorWord::deleteDoctorWord($params); + return success(); + } + /** * 获取医生评价 * @return array diff --git a/config/config.php b/config/config.php index 6ebfc52..b2dfb37 100644 --- a/config/config.php +++ b/config/config.php @@ -85,4 +85,9 @@ return [ "secret" => env('CA_APP_SECRET', 'facded39929f4aef9893cb766cd52e25'), "api_url" => env('CA_APP_URL', 'http://testmicrosrv.scca.com.cn:9527'), ], + 'prescription_platform' => [ // 处方平台 + "client_id" => env('PRE_PLAT_CLIENT_ID', 'ZD-004'), + "client_secret" => env('PRE_PLAT_CLIENT_SECRET', '0baa5927164710b9f800bf33546b6da3'), + "api_url" => env('PRE_PLAT_APP_URL', 'http://49.233.3.200:6304/api/thridapi/'), + ], ]; diff --git a/config/routes.php b/config/routes.php index 8894b64..2078ef1 100644 --- a/config/routes.php +++ b/config/routes.php @@ -161,6 +161,9 @@ Router::addGroup('/doctor', function () { // 新增常用语列表 Router::post('', [UserDoctorController::class, 'addDoctorWords']); + + // 删除常用语列表 + Router::delete('', [UserDoctorController::class, 'deleteDoctorWords']); }); // 医生数据 diff --git a/extend/Prescription/Prescription.php b/extend/Prescription/Prescription.php index 24e6f8c..8119e8a 100644 --- a/extend/Prescription/Prescription.php +++ b/extend/Prescription/Prescription.php @@ -32,9 +32,9 @@ class Prescription public function __construct(){ // 请求地址 - $this->api_url = "http://49.233.3.200:6304/api/thridapi/"; - $this->client_id = "ZD-004"; - $this->client_secret = "0baa5927164710b9f800bf33546b6da3"; + $this->api_url = config('prescription_platform.api_url'); + $this->client_id = config('prescription_platform.client_id'); + $this->client_secret = config('prescription_platform.client_secret'); $this->container = ApplicationContext::getContainer(); $this->client = $this->container->get(Client::class); } diff --git a/hospital-deploy.sh b/hospital-deploy.sh index 1b8807f..6b78cd8 100644 --- a/hospital-deploy.sh +++ b/hospital-deploy.sh @@ -56,6 +56,11 @@ AMQP_VHOST=gdxz_2022rabbitmq # [CA] CA_APP_ID=SCCA1560150113940832258 CA_APP_SECRET=facded39929f4aef9893cb766cd52e25 + +# [处方平台] +PRE_PLAT_CLIENT_ID=ZD-004 +PRE_PLAT_CLIENT_SECRET=0baa5927164710b9f800bf33546b6da3 +PRE_PLAT_APP_URL=http://49.233.3.200:6304/api/thridapi/ ">.env #nginx_upstrame="/Users/wucongxing/Desktop/test/hospital-upstream.conf"