hospital-applets-api/app/Command/getCaCertCommand.php

134 lines
4.3 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Command;
use App\Model\User;
use App\Model\UserCaCert;
use App\Model\UserDoctor;
use App\Model\UserDoctorInfo;
use Extend\Ca\CaOnline;
use Hyperf\Command\Command as HyperfCommand;
use Hyperf\Command\Annotation\Command;
use Psr\Container\ContainerInterface;
#[Command]
class getCaCertCommand extends HyperfCommand
{
public function __construct(protected ContainerInterface $container)
{
parent::__construct('getCaCert:command');
}
public function configure()
{
parent::configure();
$this->setDescription('Ca证书申请');
}
public function handle()
{
$this->line('开始');
// 获取全部医生
$params = array();
$params['status'] = 1;
$params['idcard_status'] = 1;
$params['iden_auth_status'] = 1;
$params['multi_point_status'] = 1;
$user_doctors = UserDoctor::getList($params);
if (empty($user_doctors)){
$this->line('结束,无医生需处理');
return;
}
// 获取医院数据
$params = array();
$params['is_system'] = 1;
$params['type'] = 2;
$user_ca_cert = UserCaCert::getOne($params);
if (empty($user_ca_cert)){
$CaOnline = new CaOnline();
// 申请医院证书
$data = array();
$data['user_id'] = "5345345461";
$data['mobile'] = "18601047315";
$data['org_name'] = "成都金牛欣欣相照互联网医院有限公司";
$data['org_number'] = "91510106MABTJY4K9R";
$result = $CaOnline->getCloudCert($data,'Organizational');
$data = array();
$data['is_system'] = 1;
$data['type'] = 2;
$data['cert_base64'] = $result['certBase64'];
$data['cert_chain_p7'] = $result['certP7'];
$data['cert_serial_number'] = $result['certSerialnumber'];
$data['ca_pin'] = "5345345461";
$doctor_pharmacist_cert = UserCaCert::addDoctorPharmacistCert($data);
if (empty($doctor_pharmacist_cert)){
$this->line('错误:医院证书错误');
return;
}
}
foreach ($user_doctors as $user_doctor){
try {
// 获取医生ca证书数据
$params = array();
$params['user_id'] = $user_doctor['user_id'];
$user_ca_cert = UserCaCert::getOne($params);
if (!empty($user_ca_cert)){
continue;
}
// 获取用户数据
$params = array();
$params['user_id'] = $user_doctor['user_id'];
$user = User::getOne($params);
if (empty($user)){
continue;
}
$params = array();
$params['user_id'] = $user_doctor['user_id'];
$user_doctor_info = UserDoctorInfo::getOne($params);
if (empty($user_doctor_info)){
continue;
}
$CaOnline = new CaOnline();
$data = array();
$data['user_id'] = $user_doctor['user_id'];
$data['mobile'] = $user['mobile'];
$data['card_name'] = $user_doctor_info['card_name'];
$data['card_num'] = $user_doctor_info['card_num'];
$data['orgDept'] = $user_doctor['department_custom_name'];
$result = $CaOnline->getCloudCert($data);
$data = array();
$data['user_id'] = $user_doctor['user_id'];
$data['type'] = 2;
$data['cert_base64'] = $result['certBase64'];
$data['cert_chain_p7'] = $result['certP7'];
$data['cert_serial_number'] = $result['certSerialnumber'];
$data['ca_pin'] = $user_doctor['user_id'];
$doctor_pharmacist_cert = UserCaCert::addDoctorPharmacistCert($data);
if (empty($doctor_pharmacist_cert)){
$this->line('错误');
return;
}
$this->line('成功');
}catch (\Exception $e){
$this->line('错误:' . $e->getMessage());
continue;
}
}
$this->line('全部结束');
}
}