132 lines
4.1 KiB
PHP
132 lines
4.1 KiB
PHP
<?php
|
|
namespace service\models\forms;
|
|
|
|
use common\core\BaseModel;
|
|
use common\models\DoctorInfo;
|
|
use common\models\PharmacistrInfo;
|
|
use common\models\Store;
|
|
use common\models\StoreDoctor;
|
|
use common\validators\MobileValidator;
|
|
use GuzzleHttp\Client;
|
|
use yii\base\Exception;
|
|
use yii\helpers\Json;
|
|
use function PHPUnit\Framework\any;
|
|
|
|
//医生完善信息第一步
|
|
class DoctorCompleteOne extends BaseModel
|
|
{
|
|
public $name;
|
|
public $avatar;
|
|
public $mobile;
|
|
public $idcard;
|
|
public $store_id;
|
|
public $depart_id;
|
|
public $identity;
|
|
public $title_id;
|
|
|
|
public $good_at;
|
|
public $intro;
|
|
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['name','avatar','mobile','idcard','store_id','depart_id','identity','title_id','good_at','intro'],'required'],
|
|
['mobile',MobileValidator::class],
|
|
['idcard', 'match', 'pattern' => '/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/i'],
|
|
['idcard', 'checkCard'],
|
|
[['good_at','intro'], 'string', 'max' => 500],
|
|
];
|
|
}
|
|
|
|
public function checkCard($attribute, $params)
|
|
{
|
|
$response = (new Client(['http_errors' => false]))->post("https://eid.shumaidata.com/eid/check", [
|
|
'headers' => ['Authorization' =>"APPCODE f98bba3251714c759f5bd29d00e1c46e"],
|
|
'query' => [
|
|
'idcard' => $this->idcard,
|
|
'name' => $this->name
|
|
],
|
|
]);
|
|
$result = json_decode($response->getBody(),true);
|
|
ds($result);
|
|
if(!($result['code']==0 && $result['result']['res']==1)){
|
|
$this->addError($attribute, '身份证名字不匹配');
|
|
}
|
|
}
|
|
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'name' => '姓名',
|
|
'avatar' => '头像',
|
|
'mobile' => '手机号',
|
|
'idcard' => '身份证号',
|
|
'store_id' => '门店',
|
|
'depart_id' => '科室',
|
|
'identity' => '身份',
|
|
'title_id' => '职称',
|
|
'good_at' => '擅长',
|
|
'intro' => '个人简介',
|
|
];
|
|
}
|
|
|
|
public function save()
|
|
{
|
|
if(!$this->validate()){
|
|
throw new Exception($this->getErrorMsg());
|
|
}
|
|
$su_id=\Yii::$app->user->identity->getId();
|
|
|
|
$model = DoctorInfo::find()->where([
|
|
'su_id' => $su_id,
|
|
])->one();
|
|
|
|
|
|
$t=\Yii::$app->db->beginTransaction();
|
|
try
|
|
{
|
|
if(!$model){//新增
|
|
$model = new DoctorInfo();
|
|
$model->su_id = $su_id;
|
|
|
|
$docinfo=DoctorInfo::find()->where(['idcard'=>$this->idcard,'is_delete'=>0])->one();
|
|
$pharmacistrInfo=PharmacistrInfo::find()->where(['idcard'=>$this->idcard])->one();
|
|
if ($pharmacistrInfo){
|
|
throw new \yii\db\Exception('您的身份证不能同时注册医生和药师');
|
|
}
|
|
if ($docinfo){
|
|
throw new \yii\db\Exception('您的身份证已经注册过医生了');
|
|
}
|
|
}
|
|
|
|
|
|
$model->attributes = $this->attributes;
|
|
$model->saveOrFail();
|
|
|
|
$store= Json::decode($this->store_id,true);
|
|
foreach ($store as $value){
|
|
$store=Store::find()->where(['id'=>$value])->one();
|
|
if ($store){
|
|
if (!StoreDoctor::find()->where([
|
|
'su_id'=>$su_id,
|
|
'store_id'=>$value
|
|
])->one())
|
|
{
|
|
$StoreDoctor=new StoreDoctor();
|
|
$StoreDoctor->store_id=$value;
|
|
$StoreDoctor->su_id=$su_id;
|
|
$StoreDoctor->last_login_time=time();
|
|
$StoreDoctor->saveOrFail();
|
|
}
|
|
}
|
|
}
|
|
|
|
$t->commit();
|
|
return ['已完善基本信息'];
|
|
}
|
|
catch (\Exception $e){
|
|
$t->rollBack();
|
|
throw new Exception($e->getMessage());
|
|
}
|
|
}
|
|
} |