初始化提交
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Constants\HttpEnumCode;
|
||||
use App\Model\BasicJob;
|
||||
use App\Model\BasicNation;
|
||||
use App\Model\PatientFamily as PatientFamilyModel;
|
||||
use App\Utils\Mask;
|
||||
use Extend\VerifyDun\IdCard;
|
||||
use Hyperf\DbConnection\Db;
|
||||
use Hyperf\Validation\Contract\ValidatorFactoryInterface;
|
||||
|
||||
/**
|
||||
* 家庭成员
|
||||
*/
|
||||
class PatientFamilyService extends BaseService
|
||||
{
|
||||
/**
|
||||
* 获取家庭成员列表
|
||||
* @return array
|
||||
*/
|
||||
public function getFamilyList(): array
|
||||
{
|
||||
$user_info = $this->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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user