test_8(); // $this->test_3(); // $this->test_4(); // $this->test_6(); // $this->test_9(); $this->test_10(); } // 获取云证书-首次 public function test_1(){ $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(); } } // 获取用户云证书数据-验证PKCS7签名 public function test_2(){ $ca = new Ca(); $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'] = "2023-03-01 12:44:10"; $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" => "感冒药1(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药2(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药3(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药4(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药5(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], ]; $result = $ca->getCertSign("491925054435950592","491925054435950592",$data); // 验证PKCS7签名-验证无需处理,只要不返回错误即可 $ca->verifyPkcs7($result['signP7'],$data); } // 添加签章配置(首次) public function test_3(){ $ca = new Ca(); // 下载阿里云图片 $oss = new Oss(); $filename = "applet/doctor/cert/f2abdb81-fac0-4264-bc11-aa2b6cf2761c.png"; $style = "image/resize,m_lfit,w_100,h_350"; $sign_image = $oss->getCusTomObjectToRAM($filename,$style); $sign_image = base64_encode($sign_image); if (!$sign_image){ return fail(HttpEnumCode::SERVER_ERROR); } $sign_param = [ [ "llx"=> "500", // 左边底部X坐标 "lly"=>"3015", // 左边底部Y坐标 "urx"=>"850", // 右边上部x坐标 "ury"=>"3115", // 右边上部y坐标 "pageList"=>[1], "sealImg"=>$sign_image ] ]; $data = array(); $data['sign_param'] = json_encode($sign_param); $data['seal_img'] = $sign_image; $result = $ca->addUserSignConfig("491925054435950592","410323199603261241",$data); } // 获取用户签章图片 public function test_4(){ $ca = new Ca(); $result = $ca->getFetchUserSeal("491925054435950592"); $data = urldecode($result[0]['sealImg']); dump($data); } // 生成处方pdf图片 public function test_5(){ // 下载阿里云图片 $oss = new Oss(); $filename = "Basic/images/prescription_img.jpg"; $sign_image = $oss->getObjectToRAM($filename); $manager = new ImageManager(); $image = $manager->make($sign_image); $fontPath = './runtime/ZiYuYongSongTi-2.ttf'; // 处方号 $image->text('1234567890', 1480, 540, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 日期 $image->text('2023-03-21', 354, 675, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 科室 $image->text('测试科室1', 1385, 675, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 姓名 $image->text('测试姓名', 354, 795, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 性别 $image->text('男', 1385, 790, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 年龄 $image->text('19', 354, 900, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 过敏史 $image->text('对阿莫西林过敏对阿莫西林过敏', 405, 1030, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 初步诊断 $image->text('对阿莫西林过敏对阿莫西林过敏', 445, 1145, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); // 医生建议 $image->text('没有建议', 445, 1252, function ($font) use($fontPath) { $font->file($fontPath); $font->size(60); $font->align('left'); }); $data = array(); $data['product'] = [ [ "product_name" => "感冒药1(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药2(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药3(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药4(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], [ "product_name" => "感冒药5(50ml*10)", "single_unit" => "一次一包", "frequency_use" => "1天3次", "single_use" => "口服", "prescription_product_num" => "X1盒", ], ]; // 用药 foreach ($data['product'] as $key => $item){ if ($key <= 2){ $x_axis = 229; $y_axis = 1600 + $key * 350; }else{ $x_axis = 1240; $y_axis = 1600 + ($key - 3) * 350; } $image->text($item['product_name'], $x_axis, $y_axis, function ($font) use($fontPath) { $font->file($fontPath); $font->size(50); $font->align('left'); }); $image->text("用量:" . $item['single_unit'] . " " . $item['frequency_use'], $x_axis, $y_axis+90, function ($font) use($fontPath) { $font->file($fontPath); $font->size(50); $font->align('left'); }); $image->text("用法:" . $item['single_use'], $x_axis, $y_axis+180, function ($font) use($fontPath) { $font->file($fontPath); $font->size(50); $font->align('left'); }); } // 将处理后的图片重新保存到其他路径 // $image->save('./runtime/2.jpg'); $result = (string) $image->encode('png', 75); // 图片生成pdf $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); $pdf->AddPage(); $pdf->Image('@' . $result, 10, 10, 0, 0, '', '', '', false, 300, '', false, false, 0, false, false, false); $pdf->Output(dirname(__DIR__, 2) . "/prescription_img.pdf","F"); } // pdf进行签章 public function test_6(){ $pdf_file = fopen("./runtime/prescription_img.pdf",'r'); $oss = new Oss(); $filename = "applet/doctor/cert/f2abdb81-fac0-4264-bc11-aa2b6cf2761c.png"; $style = "image/resize,m_lfit,w_100,h_350"; $sign_image = $oss->getCusTomObjectToRAM($filename,$style); $sign_image = base64_encode($sign_image); if (!$sign_image){ return fail(HttpEnumCode::SERVER_ERROR); } $sign_param = [ [ // 医生端 "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); $data['pdf_file'] = $pdf_file; $ca = new Ca(); $result = $ca->addSignPdf("491925054435950592",$data); $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); } // 延迟队列测试 public function test_7(){ $out_trade_no = $this->request->input('out_trade_no'); if ($out_trade_no == 1){ // 增加至取消订单延迟队列 $data = array(); $data['order_no'] = 111; $data['order_type'] = 1; $message = new CancelUnpayOrdersDelayDirectProducer($data); $message->setDelayMs(1000 * 5 * 1); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); } }else{ // 增加至取消订单延迟队列 $data = array(); $data['order_no'] = 2222; $data['order_type'] = 1; $message = new CancelUnpayOrdersDelayDirectProducer($data); $message->setDelayMs(1000 * 15 * 1); $producer = $this->container->get(Producer::class); $res = $producer->produce($message); if (!$res) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败"); } } } // 删除签章配置 public function test_8(){ $ca = new Ca(); $result = $ca->deleteUserSignConfig("491925054435950592"); } // 下载签章的pdf文件 public function test_9(){ $ca = new Ca(); $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); } public function test_10(){ // $MessagePush = new MessagePush(2,"491923510680424449","499172549291458560"); // $result = $MessagePush->noInquiry(); // $MessagePush = new MessagePush(3,"491925054435950592","499176434366210048"); // $result = $MessagePush->doctorAcceptedInquiry(); // $ImService = new ImService(); // // $params = array(); // $params['order_inquiry_id'] = "499313028868112385"; // $order_inquiry = OrderInquiry::getOne($params); // if (!empty($order_inquiry)) { // $this->order_inquiry = $order_inquiry->toArray(); // } // // // 获取订单医生数据 // $params = array(); // $params['doctor_id'] = $order_inquiry['doctor_id']; // $user_doctor = UserDoctor::getOne($params); // // // 自定义消息 // $cloud_custom_data = array(); // $cloud_custom_data['order_inquiry_id'] = $order_inquiry['order_inquiry_id']; // $cloud_custom_data['is_system'] = 1; // $cloud_custom_data['inquiry_type'] = $order_inquiry['inquiry_type']; // $cloud_custom_data['message_rounds'] = 0; // $cloud_custom_data['patient_family_data']['patient_name'] = $order_inquiry['patient_name']; // $cloud_custom_data['patient_family_data']['patient_sex'] = $order_inquiry['patient_sex']; // $cloud_custom_data['patient_family_data']['patient_age'] = $order_inquiry['patient_age']; // // // 消息内容 // $message_content_data = array(); // $message_content_data['message_type'] = 6; // $message_content_data['title'] = "--等待医生接诊--"; // $message_content_data['desc'] = "温馨提示:您可继续补充问诊内容,便于更快确认病情,医生均在临床一线工作,还请耐心等待,医生接诊会第一时间短信通知您。"; // $message_content_data['data'] = [ // "order_inquiry_id" => "499313028868112385", // "order_prescription_id" => "498938545791315968", // "product_name" => "测试药品", // "pharmacist_verify_time" => date('Y-m-d H:i:s',time()), // ]; // $message_content = [ // 'Data' => json_encode($message_content_data,JSON_UNESCAPED_UNICODE), // ]; // // $ImService->sendMessage($user_doctor['user_id'], $order_inquiry['user_id'], $message_content, "TIMCustomElem", $cloud_custom_data); // $data = array(); // $data['order_inquiry_id'] = "499654588596031489"; // // $message = new AssignDoctorProducer($data); // $producer = ApplicationContext::getContainer()->get(Producer::class); // $result = $producer->produce($message); } }