request->getAttribute("userInfo") ?? []; $params = array(); $params['patient_id'] = $user_info['client_user_id']; $params['status'] = 1; $field = [ 'family_id', 'patient_id', 'relation', 'is_default', 'card_name', 'card_name_mask', 'sex', 'age', ]; $patient_familys = PatientFamilyModel::getList($params, $field); return empty($patient_familys) ? success() : success($patient_familys->toArray()); } /** * 新增家庭成员 * @return array */ public function addFamily(): array { $user_info = $this->request->getAttribute("userInfo") ?? []; $request_params = $this->request->all(); // 获取全部家庭成员 $params = array(); $params['patient_id'] = $user_info['client_user_id']; $params['status'] = 1; $patient_familys = PatientFamilyModel::getList($params); if (!empty($patient_familys)) { foreach ($patient_familys as $patient_family) { // 检测该家庭成员是否已存在 if ($patient_family['type'] == $request_params['type'] && $patient_family['id_number'] == $request_params['id_number']) { return fail(HttpEnumCode::HTTP_ERROR, "证件号码重复"); } // 检测姓名是否重复 if ($patient_family['card_name'] == $request_params['card_name']) { return fail(HttpEnumCode::HTTP_ERROR, "姓名重复"); } // 检测是否默认字段是否重复 if (isset($request_params['is_default'])) { if ($request_params['is_default'] == 1 && $patient_family['is_default'] == 1) { // 记录原默认id $is_default_id = $patient_family['family_id']; } } } } // 检测省市区 if (!empty($request_params['county_id']) ){ if (empty($request_params['city_id']) || empty($request_params['province_id'])){ // 区县存在时需和城市、省份在一块 return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } } if (!empty($request_params['city_id']) ){ if (empty($request_params['province_id'])){ // 城市存在时需和省份在一块 return fail(HttpEnumCode::CLIENT_HTTP_ERROR); } } if (!empty($request_params['province_id'])){ $areaService = new AreaService(); $req = $areaService->checkAreaById($request_params['province_id'],$request_params['city_id'],$request_params['county_id']); if(empty($req)){ return fail(HttpEnumCode::HTTP_ERROR,"地区选择错误"); } } if ($request_params['type'] == 1) { // 解析年龄、性别字段 $age = getIdCardAge($this->request->input('id_number')); $sex = getIdCardSex($this->request->input('id_number')); } // 民族 if (!empty($request_params['nation_id'])){ $params = array(); $params['nation_id'] = $request_params['nation_id']; $nation = BasicNation::getOne($params); if (empty($nation)){ return fail(HttpEnumCode::HTTP_ERROR,"民族选择错误"); } } // 职业 if (!empty($request_params['job_id'])){ $params = array(); $params['job_id'] = $request_params['job_id']; $job = BasicJob::getOne($params); if (empty($job)){ return fail(HttpEnumCode::HTTP_ERROR,"职位选择错误"); } } // 实人认证-生产环境开启 if (env("APP_ENV") == "prod"){ $IdCard = new IdCard(); $params =array(); $params['name'] = $request_params['card_name']; $params['cardNo'] = $request_params['id_number']; $res = $IdCard->checkIdCard($params); if (!empty($res)){ return fail(HttpEnumCode::HTTP_ERROR,$res); } } Db::beginTransaction(); try { // 修改是否默认 if (isset($is_default_id)) { $params = array(); $params['family_id'] = $is_default_id; $data = array(); $data['is_default'] = 0; $data['updated_at'] = date('Y-m-d H:i:s', time()); $res = PatientFamilyModel::edit($params, $data); if (!$res) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } } // 新增 患者家庭成员信息表-基本信息(patient_family) $data = array(); $data['patient_id'] = $user_info['client_user_id']; $data['relation'] = $request_params['relation']; $data['status'] = 1; $data['is_default'] = empty($request_params['is_default']) ? 0 : 1; $data['card_name'] = $request_params['card_name']; $data['card_name_mask'] = Mask::maskNameStr($request_params['card_name']); $data['mobile'] = $request_params['mobile']; $data['mobile_mask'] = Mask::maskPhoneStr($request_params['mobile']); $data['type'] = $request_params['type']; $data['id_number'] = $request_params['id_number']; $data['sex'] = $sex ?? 0; $data['age'] = empty($age) ? null : $age; if (isset($area)) { $data['province_id'] = $request_params['province_id']; $data['province'] = $area['province']['area_name']; $data['city_id'] = $request_params['city_id']; $data['city'] = $area['city']['area_name']; $data['county_id'] = $request_params['county_id']; $data['county'] = $area['county']['area_name']; } $data['marital_status'] = $request_params['marital_status'] ?? 0; $data['nation_id'] = $request_params['nation_id'] ?? null; $data['nation_name'] = $nation['nation_name'] ?? ""; $data['job_id'] = $request_params['job_id'] ?? null; $data['job_name'] = $job['job_name'] ?? ""; $patient_family = PatientFamilyModel::addPatientFamily($data); if (empty($patient_family)) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR); } Db::commit(); } catch (\Exception $e) { Db::rollBack(); return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage()); } $result = array(); $result['family_id'] = $patient_family['family_id']; return success($result); } }