|
|
<?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 and strpos($orderInfo->source, '线下体检预约') !== false ){
|
|
|
return $this->CreateOrder($exam_id,$orderInfo->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("订单已退款");
|
|
|
|
|
|
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,$order_id=0)
|
|
|
{
|
|
|
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['登记时间'],
|
|
|
];
|
|
|
if($order_id>0){
|
|
|
if(empty($dataInfo['title'])){
|
|
|
$dataInfo['title']='自选项目';
|
|
|
}
|
|
|
unset($dataInfo['source']);
|
|
|
unset($dataInfo['person_id']);
|
|
|
unset($dataInfo['person_id']);
|
|
|
$insert = DB::table('orders')->where('id',$order_id)->update($dataInfo);
|
|
|
}else{
|
|
|
$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
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
//线下预约完后,未支付,未到检,推送过来订单,由H5进行后续流程,支付改约等
|
|
|
public function OfflineOrderPush()
|
|
|
{
|
|
|
$password = request('password');
|
|
|
if ($password !== 'YRtA1rx1iWgbpYKX') return \Yz::echoErrorJson("校验密码失败");
|
|
|
$hospital_id = request('hospital_id'); //秀英院区1,府城院区4
|
|
|
$appointment_number = request('appointment_number');
|
|
|
$plan_id = request('plan_id');
|
|
|
$combo_id = request('combo_id');
|
|
|
if (!isset($plan_id) or empty($plan_id)) return \Yz::echoErrorJson("占用的号源id不能为空");
|
|
|
$check=DB::table('orders')->where(['appointment_number' => $appointment_number])->first();
|
|
|
if (!!$check) return \Yz::echoErrorJson("预约已存在,无需重复推送");
|
|
|
$plan_info=DB::table('plans')->where('id', $plan_id)->first();
|
|
|
$data = [
|
|
|
"证件号码" => null,
|
|
|
"电话号码" => null,
|
|
|
"预约Id" => $appointment_number,
|
|
|
];
|
|
|
$peis = new PEISApiController();
|
|
|
$info = $peis::Post('个检预约查询', $hospital_id, $data);
|
|
|
if (isset($info['data'][0])) {
|
|
|
$res = $info['data'][0];
|
|
|
$checkup_type_id = null;
|
|
|
$checkup_type = DB::table('checkup_type')->where('name', $res['体检类型'])->first();
|
|
|
if(!!$checkup_type) $checkup_type_id = $checkup_type->id;
|
|
|
// $title=$res['项目列表'];
|
|
|
// if(empty($res['项目列表']) and $res['总计金额']==0){
|
|
|
// $title='空号源';
|
|
|
// }
|
|
|
$items = [];
|
|
|
foreach ($res['项目列表'] as $it) {
|
|
|
if($it['自选项目']){
|
|
|
$items[] = [
|
|
|
'id' => $it['Id'],
|
|
|
'name' => $it['名称'],
|
|
|
'price' => $it['价格'],
|
|
|
'youhui_fangshi' => $it['优惠方式'],
|
|
|
'youhui_zhi' => $it['优惠值'],
|
|
|
];
|
|
|
}
|
|
|
|
|
|
}
|
|
|
$buyInfo = [
|
|
|
'combo' => [
|
|
|
'id' => empty($combo_id)?0:$combo_id,
|
|
|
'name' => '',
|
|
|
'price' => ''
|
|
|
],
|
|
|
'items' => $items,
|
|
|
'group' => [
|
|
|
'id' => '',
|
|
|
]
|
|
|
];
|
|
|
$orderController= new \App\Http\Controllers\API\H5\OrderController();
|
|
|
if((empty($res['套餐名称']) or $res['套餐名称']=='无') and count($items)>0){
|
|
|
$res['套餐名称']='自选项目';
|
|
|
}
|
|
|
$save_data = [
|
|
|
'title' => $res['套餐名称'],
|
|
|
'type' => 1,
|
|
|
'source' => (count($items)==0 and empty($combo_id))?'线下体检预约-空号源':'线下体检预约-项目',
|
|
|
'checkup_type_id' => $checkup_type_id,
|
|
|
'person_id' => 0,
|
|
|
'name' => $res['姓名'],
|
|
|
'id_number' => $res['证件号码'],
|
|
|
'buy_info' => json_encode($buyInfo, JSON_UNESCAPED_UNICODE),
|
|
|
'price' => $res['总计金额'],
|
|
|
'true_price' => $res['总计金额'],
|
|
|
'order_number' =>$orderController->generateOrderNumber(),
|
|
|
'status' =>1,
|
|
|
'appointment_date' =>$plan_info->date,
|
|
|
'appointment_time' =>$plan_info->time,
|
|
|
'appointment_number' =>$res['预约Id'],
|
|
|
'appointment_back_info' => json_encode($res, JSON_UNESCAPED_UNICODE),
|
|
|
'plan_id' =>$plan_info->id,
|
|
|
'plan_number' =>$plan_info->plan_number,
|
|
|
'combo_id' =>empty($combo_id)?0:$combo_id,
|
|
|
'hospital_id' =>$hospital_id,
|
|
|
'phone' =>$res['电话号码'],
|
|
|
'sex' =>null,
|
|
|
'birthday' =>null,
|
|
|
'married' =>4,
|
|
|
];
|
|
|
$insert = DB::table('orders')->insert($save_data);
|
|
|
if ($insert) {
|
|
|
return \Yz::Return(true, "创建成功", ['id' => $insert]);
|
|
|
} else {
|
|
|
return \Yz::echoErrorJson("创建失败");
|
|
|
}
|
|
|
} else {
|
|
|
return \Yz::echoErrorJson("未获取到预约信息");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|