hospital-applets-api/app/Services/DetectionService.php

260 lines
9.1 KiB
PHP

<?php
namespace App\Services;
use App\Model\Area;
use App\Model\BasicCompany;
use App\Model\DetectionProject;
use App\Model\DetectionProjectPurpose;
use App\Model\UserDoctor;
use App\Model\UserLocation;
class DetectionService extends BaseService
{
/**
* 获取合作公司检测项目列表
* @return array
*/
public function getDetectionProjectList(): array
{
$company_id = $this->request->input("company_id",1);
// 获取合作公司数据
$params = array();
$params['company_id'] = $company_id;
$basic_company = BasicCompany::getOne($params);
if (empty($basic_company)){
return fail();
}
// 获取项目数据
$params = array();
$params['company_id'] = $company_id;
$detection_projects = DetectionProject::getList($params);
if (empty($detection_projects)){
return fail();
}
foreach ($detection_projects as &$value){
$value['img_path'] = addAliyunOssWebsite($value['img_path']);
}
return success($detection_projects->toArray());
}
/**
* 获取合作公司检测项目详情
* @return array
*/
public function getDetectionProject(): array
{
$company_id = $this->request->input("company_id",1);
$detection_project_id = $this->request->route('detection_project_id',1);
// 获取合作公司数据
$params = array();
$params['company_id'] = $company_id;
$basic_company = BasicCompany::getOne($params);
if (empty($basic_company)){
return fail();
}
// 获取项目数据
$params = array();
$params['detection_project_id'] = $detection_project_id;
$detection_project = DetectionProject::getOne($params);
if (empty($detection_project)){
return fail();
}
$detection_project['img_path'] = addAliyunOssWebsite($detection_project['img_path']);
return success($detection_project->toArray());
}
/**
* 获取检测机构合作医生列表
* @return array
*/
public function getDetectionDoctorList(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$company_id = $this->request->input("company_id",1);
$province_id = $this->request->input("province_id");
$city_id = $this->request->input("city_id");
$county_id = $this->request->input("county_id");
// 获取合作公司数据
$params = array();
$params['company_id'] = $company_id;
$basic_company = BasicCompany::getOne($params);
if (empty($basic_company)){
return fail();
}
// 返回数据
$response_data = array(
"area" => [
"province_id" => "",
"province" => "",
"city_id" => "",
"city" => "",
"county_id" => "",
"county" => "",
],
"doctors" => [],
);
// 搜索数据
$hospital_params = array();
if (empty($province_id) && empty($city_id) && empty($county_id)){
// 获取用户定位地址数据
$params = array();
$params['user_id'] = $user_info['user_id'];
$user_location = UserLocation::getOne($params);
if (!empty($user_location)){
// 处理省市区对应
if (!empty($user_location['province']) && !empty($user_location['city'])){
$params = array();
$params['area_name'] = $user_location['province'];
$params['area_type'] = 2;
$area_province = Area::getOne($params);
if (!empty($area_province)){
$response_data['area']['province_id'] = $area_province['area_id'];
$response_data['area']['province'] = $area_province['area_name'];
// 搜索条件
$hospital_params['province_id'] = $area_province['area_id'];
}
if (!empty($response_data['area']['province_id'])){
$params = array();
$params['area_name'] = $user_location['city'];
$params['parent_id'] = $response_data['area']['province_id'];
$params['area_type'] = 3;
$area_city = Area::getOne($params);
if (!empty($area_city)){
$response_data['area']['city_id'] = $area_city['area_id'];
$response_data['area']['city'] = $area_city['area_name'];
// 搜索条件
$hospital_params['city_id'] = $area_city['area_id'];
}
}
}
if (!empty($response_data['area']['city_id']) && !empty($user_location['county'])){
$params = array();
$params['area_name'] = $user_location['county'];
$params['parent_id'] = $response_data['area']['city_id'];
$params['area_type'] = 4;
$area_county = Area::getOne($params);
if (!empty($area_county)){
$response_data['area']['county_id'] = $area_county['area_id'];
$response_data['area']['county'] = $area_county['area_name'];
// 搜索条件
$hospital_params['county_id'] = $area_county['area_id'];
}
}
}
} else{
if (!empty($province_id)){
$params = array();
$params['area_id'] = $province_id;
$params['area_type'] = 2;
$area_province = Area::getOne($params);
if (!empty($area_province)){
$response_data['area']['province_id'] = $area_province['area_id'];
$response_data['area']['province'] = $area_province['area_name'];
// 搜索条件
$hospital_params['province_id'] = $area_province['area_id'];
}
}
if (!empty($response_data['area']['province_id']) && !empty($city_id)){
$params = array();
$params['area_id'] = $city_id;
$params['parent_id'] = $response_data['area']['province_id'];
$params['area_type'] = 3;
$area_city = Area::getOne($params);
if (!empty($area_city)){
$response_data['area']['city_id'] = $area_city['area_id'];
$response_data['area']['city'] = $area_city['area_name'];
// 搜索条件
$hospital_params['city_id'] = $area_city['area_id'];
}
}
if (!empty($response_data['area']['city_id']) && !empty($county_id)){
$params = array();
$params['area_id'] = $county_id;
$params['parent_id'] = $response_data['area']['city_id'];
$params['area_type'] = 4;
$area_county = Area::getOne($params);
if (!empty($area_county)){
$response_data['area']['county_id'] = $area_county['area_id'];
$response_data['area']['county'] = $area_county['area_name'];
// 搜索条件
$hospital_params['county_id'] = $area_county['area_id'];
}
}
}
// 获取医生
$params = array();
$params['status'] = 1;
$params['idcard_status'] = 1;
$params['iden_auth_status'] = 1;
$params['is_sys_diagno_cooperation'] = 1;
$fields = [
"doctor_id",
"user_id",
"user_name",
"avatar",
"doctor_title",
];
$user_doctors = UserDoctor::getDiagnoCoopDoctorList($params,$hospital_params,$fields);
if (!empty($user_doctors)){
foreach ($user_doctors as &$value){
$doctor = array();
if (!empty($value['Hospital'])){
$doctor['hospital_name'] = $value['Hospital']['hospital_name'];
}
unset($value['Hospital']);
$value['avatar'] = addAliyunOssWebsite($value['avatar']);
}
$response_data['doctors'] = $user_doctors->toArray();
}
return success($response_data);
}
/**
* 获取检测项目用途列表
* @return array
*/
public function getDetectionProjectPurposeList(): array
{
$detection_project_id = $this->request->input("detection_project_id",1);
// 获取项目数据
$params = array();
$params['detection_project_id'] = $detection_project_id;
$detection_project_purpose = DetectionProjectPurpose::getList($params);
if (empty($detection_project_purpose)){
return fail();
}
return success($detection_project_purpose->toArray());
}
}