You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
5.0 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\API\Internal;
use App\Http\Controllers\API\PEISApiController;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class OrderController extends Controller
{
//到检
public function TJCheck()
{
$password = request('password');
$serve_id = request('serve_id');
$exam_id = request('exam_id');
if(!isset($exam_id) or empty($exam_id)) return \Yz::echoError1("体检号不能为空");
if ($password !== 'YRtA1rx1iWgbpYKX') return \Yz::echoError1("校验密码失败");
if (isset($serve_id) and !empty($serve_id) and $serve_id <> '') { //到检通知
$orderInfo = DB::table('orders')->where('appointment_number', $serve_id)->orderBy('id', 'desc')->first();
if (!$orderInfo){
return $this->CreateOrder($exam_id);
}else{
if (!!$exam_id) {
if ($orderInfo->status == 1) return \Yz::echoError1("订单未付款");
if ($orderInfo->status == 3) return \Yz::echoError1("订单已取消");
if ($orderInfo->status == 4 || $orderInfo->check_status == 2) return \Yz::echoError1("人员已经到检");
if ($orderInfo->status == 5) return \Yz::echoError1("订单已退款");
// $peis = new PEISApiController();
// $data = [
// "电话号码" => $orderInfo->phone,
// "证件号码" => $orderInfo->id_number,
// ];
// $info = $peis::Post('分诊查询体检号', $orderInfo->hospital_id,$data);
DB::table('orders')->where('id', $orderInfo->id)->update([
'status' => 4,
// 'tj_number'=>$info['data'][0]['体检号'],
'tj_number' => $exam_id,
'check_status' => 2,
'check_time' => date('Y-m-d H:i:s'),
'check_read_status'=>1
]);
return \Yz::Return(true, "", ['id' => $orderInfo->id]);
} else {
return \Yz::echoError1("体检号不能为空");
}
}
} else { //体检直接登记用户信息没经过h5登记。根据体检号查询信息入库
return $this->CreateOrder($exam_id);
}
}
//根据体检号拉取数据进行存储
public function CreateOrder($exam_id)
{
if (isset($exam_id)) {
$peis = new PEISApiController();
$data = [
'电话号码' => "",
'证件号码' => "",
'体检号' => $exam_id,
'包含内部信息' => true
];
$reports = $peis::Post('体检报告查询', 1, $data);
if (isset($reports['data'][0]['收费项目列表'])) {
$data = $reports['data'][0];
$items=[];
foreach ($data['收费项目列表'] as $it) {
$items[]=[
'id' => $it['收费项目Id'],
'name' => $it['收费项目名称'],
'price' => '',
];
}
$buyInfo=[
'combo'=>[
'id'=>0,
'name'=>'',
'price'=>''
],
'items'=>$items,
'group'=>[
'id'=>'',
]
];
$sex = 0;
if ($data['性别'] == '男') $sex = 1;
if ($data['性别'] == '女') $sex = 2;
$dataInfo = [
'hospital_id'=>1,
'title' => $data['套餐名称'],
'type' => $data['单位名称'] == '个人' ? 1 : 2,
'source' => '体检推送',
'name' => $data['姓名'],
'id_number' => $data['证件号码'],
'person_id'=>0,
'buy_info' => json_encode($buyInfo, JSON_UNESCAPED_UNICODE),
'status' => 4,
'plan_number' => $data['分诊信息'],
'appointment_date' => explode('T', $data['登记时间'])[0],
'tj_number' => $exam_id,
'phone' => $data['电话号码'],
'sex' => $sex,
'birthday' => explode('T', $data['出生日期'])[0],
'check_status' => 2,
'check_time' => $data['登记时间'],
];
$insert=DB::table('orders')->insert($dataInfo);
if($insert){
return \Yz::Return(true, "创建成功", ['id' => $insert]);
}else{
return \Yz::echoError1("创建失败");
}
} else {
return \Yz::echoError1("根据体检号查询用户信息出错,结果非预期");
}
} else {
return \Yz::echoError1("体检号不能为空");
}
}
public function GetH5Order()
{
$appointment_number = request('appointment_number');//思信预约完成后的id
if (!isset($appointment_number) || empty($appointment_number)) return \Yz::echoError1('预约id 不能为空');
$order_info = DB::table('orders')->where(['appointment_number' => $appointment_number, 'status' => 2, 'check_status' => 1])->first();
if (!!$order_info) {
$order_info->buy_info = json_decode($order_info->buy_info, true);
$order_info->erxian_appointment_info = json_decode($order_info->erxian_appointment_info, true);
} else {
return \Yz::echoError1('未找到有效订单');
}
return \Yz::Return(true, '获取成功', [
'info' => $order_info
]);
}
}