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.
398 lines
11 KiB
PHP
398 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Appointment;
|
|
use App\Models\HospitalAdditional;
|
|
use Illuminate\Http\Request;
|
|
use Login;
|
|
use Yo;
|
|
|
|
class ComboItemController extends Controller
|
|
{
|
|
public function group_info($hospital, $data)
|
|
{
|
|
$peis = new PEISApiController();
|
|
$info = $peis::Post('团检登记查询', $hospital, $data);
|
|
$items = [];
|
|
$group_info = $info['data'][0];
|
|
if (isset($group_info['项目列表'])) {
|
|
foreach ($group_info['项目列表'] as $datum) {
|
|
$items[] = [
|
|
'id' => $datum['Id'],
|
|
'name' => $datum['名称'],
|
|
];
|
|
}
|
|
}
|
|
return [
|
|
'name' => $group_info['姓名'],
|
|
'id_number' => $group_info['证件号码'],
|
|
'combo_name' => $group_info['套餐名称'],
|
|
'combo_id' => $group_info['套餐Id'],
|
|
'start_time' => $group_info['预约开始日期'],
|
|
'end_time' => $group_info['预约结束日期'],
|
|
'group_name' => $group_info['单位名称'] . ($group_info['部门名称']),
|
|
'danwei_id' => $group_info['单位Id'],
|
|
'items' => $items,
|
|
'appointment_number' => $group_info['预约Id']
|
|
];
|
|
}
|
|
|
|
public function combo($hospital, $data)
|
|
{
|
|
$peis = new PEISApiController();
|
|
$combo_list = $peis::Post('套餐查询', $hospital, $data)['data'];
|
|
$list = [];
|
|
foreach ($combo_list as $item) {
|
|
$list[] = [
|
|
'id' => $item['Id'],
|
|
'name' => $item['名称'],
|
|
'py' => $item['拼音'],
|
|
'price' => $item['价格'],
|
|
'original_price' => $item['原价'],
|
|
'sex' => $item['性别限制'],
|
|
'desc' => $item['简介'],
|
|
'count' => $item['简介'],
|
|
// 'original_info' => $item
|
|
];
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
public function combo_info($hospital, $data)
|
|
{
|
|
$peis = new PEISApiController();
|
|
$combo_info = $peis::Post('套餐详情查询', $hospital, $data)['data'][0];
|
|
$info = [
|
|
'id' => $combo_info['Id'],
|
|
'name' => $combo_info['名称'],
|
|
'price' => $combo_info['价格'],
|
|
'original_price' => $combo_info['原价'],
|
|
'sex' => $combo_info['性别限制'],
|
|
'items' => [],
|
|
];
|
|
foreach ($combo_info['包含项目'] as $item) {
|
|
$info['items'][] = [
|
|
'id' => $item['Id'],
|
|
'name' => $item['名称'],
|
|
'price' => $item['价格'],
|
|
];
|
|
}
|
|
$info['count'] = count($info['items']);
|
|
return $info;
|
|
}
|
|
|
|
public function items($hospital, $data)
|
|
{
|
|
$peis = new PEISApiController();
|
|
$items = $peis::Post('自选项目查询', $hospital, $data)['data'];
|
|
$list = [];
|
|
foreach ($items as $item) {
|
|
$list[] = [
|
|
'id' => $item['Id'],
|
|
'name' => $item['名称'],
|
|
'py' => $item['拼音'],
|
|
'price' => $item['价格'],
|
|
'sex' => $item['性别限制'],
|
|
'clinic' => $item['科室Id'],
|
|
'clinic_name' => $item['科室名称'],
|
|
'choose' => $item['可选'],
|
|
];
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
public function mp_items_list(Request $request)
|
|
{
|
|
Login::user();
|
|
$hospital = $request->post('hospital');
|
|
$combo = $request->post('combo');
|
|
$list = self::items($hospital, [
|
|
'价格下限' => "0",
|
|
'价格上限' => "999999",
|
|
"性别" => null,
|
|
"妇检" => null,
|
|
"套餐Id" => $combo ? (string)$combo : null,
|
|
"项目Id列表" => []
|
|
]);
|
|
// Yo::error_exit([
|
|
// 'message' => "res",
|
|
// 'code' => 2001,
|
|
// 'data' => $list
|
|
// ]);
|
|
|
|
$group = $request->post('group');
|
|
$group_info = false;
|
|
$group_items=[];
|
|
if (!!$group) {
|
|
$group_info = self::group_info($hospital, [
|
|
"电话号码" => null,
|
|
"证件号码" => null,
|
|
"预约Id" => $group
|
|
]);
|
|
if(!!$group_info){
|
|
foreach ($group_info['items'] as $g_items){
|
|
$group_items[]=$g_items['id'];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
$list_map = [];
|
|
foreach ($list as $item) {
|
|
if (!!$item['choose']) {
|
|
//判断套餐内是否有这个检查项目,如果有则跳过
|
|
if(in_array($item['id'],$group_items)) continue;
|
|
if (!isset($list_map['g' . $item['clinic']])) {
|
|
$list_map['g' . $item['clinic']] = [
|
|
'id' => $item['clinic'],
|
|
'name' => $item['clinic_name'],
|
|
'items' => []
|
|
];
|
|
}
|
|
$list_map['g' . $item['clinic']]['items'][] = [
|
|
'id' => $item['id'],
|
|
'name' => $item['name'],
|
|
'py' => $item['py'],
|
|
'price' => $item['price'],
|
|
'sex' => $item['sex'],
|
|
];
|
|
}
|
|
}
|
|
$l = [];
|
|
foreach ($list_map as $item) {
|
|
$l[] = $item;
|
|
}
|
|
|
|
$arrayB=[
|
|
"一般检查",
|
|
"人体成分分析",
|
|
"内科",
|
|
"外科",
|
|
"眼科",
|
|
"口腔科室",
|
|
"耳鼻喉科",
|
|
"妇科",
|
|
"妇科(病理)",
|
|
"心电图",
|
|
"骨密度",
|
|
"动脉硬化",
|
|
"碳13呼气试验",
|
|
"碳14",
|
|
"肺功能",
|
|
"电测听",
|
|
"检验科",
|
|
"超声科",
|
|
"CT科",
|
|
"放射科",
|
|
"基因检测"
|
|
];
|
|
$mapB = array_flip($arrayB);
|
|
// 定义排序函数
|
|
usort($l, function ($a, $b) use ($mapB, $arrayB) {
|
|
$posA = isset($mapB[$a['name']]) ? $mapB[$a['name']] : count($arrayB);
|
|
$posB = isset($mapB[$b['name']]) ? $mapB[$b['name']] : count($arrayB);
|
|
|
|
return $posA <=> $posB;
|
|
});
|
|
|
|
return Yo::echo([
|
|
'list' => $l
|
|
]);
|
|
}
|
|
|
|
public function combo_list(Request $request)
|
|
{
|
|
Login::admin([], [17, 24]);
|
|
$hospital = $request->post('hospital');
|
|
$list = self::combo($hospital, [
|
|
'价格下限' => "0",
|
|
'价格上限' => "999999",
|
|
'性别' => null,
|
|
'妇检' => false
|
|
]);
|
|
return Yo::echo([
|
|
'list' => $list
|
|
]);
|
|
}
|
|
|
|
public function mp_buy_info(Request $request)
|
|
{
|
|
Login::user();
|
|
$hospital = $request->post('hospital');
|
|
$combo = $request->post('combo');
|
|
$count = 0;
|
|
$price = 0;
|
|
$original_price = 0;
|
|
$combo_info = false;
|
|
if (!!$combo) {
|
|
$combo_info = self::combo_info($hospital, [
|
|
'套餐Id' => $combo,
|
|
]);
|
|
$count += $combo_info['count'];
|
|
$price += $combo_info['price'];
|
|
if ($combo_info['original_price'] > $combo_info['price']) {
|
|
$original_price += $combo_info['original_price'];
|
|
} else {
|
|
$original_price += $combo_info['price'];
|
|
}
|
|
}
|
|
$items = $request->post('items');
|
|
//$group = $request->post('group');
|
|
|
|
// if(!!$group and count($items) != 0){
|
|
// //调用团检登记查询获取单位id
|
|
// $data=[
|
|
// "预约Id"=>$group
|
|
// ];
|
|
// $peis = new PEISApiController();
|
|
// $combo_info = $peis::Post('团检登记查询', $hospital, $data)['data'][0];
|
|
// var_dump($combo_info);
|
|
// }
|
|
$group = $request->post('group');
|
|
$group_info = false;
|
|
if (!!$group) {
|
|
$group_info = self::group_info($hospital, [
|
|
"电话号码" => null,
|
|
"证件号码" => null,
|
|
"预约Id" => $group
|
|
]);
|
|
}
|
|
|
|
$items_list = [];
|
|
if (count($items) != 0) {
|
|
$items_list = self::items($hospital, [
|
|
'价格下限' => "0",
|
|
'价格上限' => "999999",
|
|
"性别" => null,
|
|
"妇检" => null,
|
|
"套餐Id" => null,
|
|
"项目Id列表" => $items
|
|
]);
|
|
}
|
|
$item_list_ret = [];
|
|
|
|
//如果是团检并且选择了自选
|
|
$fenzu=false;
|
|
if(!!$group and count($items) != 0){
|
|
$data=[
|
|
"单位Id"=>$group_info['danwei_id']
|
|
];
|
|
$peis = new PEISApiController();
|
|
$fenzu = $peis::Post('获取单位分组', $hospital, $data)['data'][0];
|
|
}
|
|
|
|
foreach ($items_list as $item) {
|
|
$count++;
|
|
if($fenzu !==false and isset($fenzu['分组'])){
|
|
$item['price']=$item['price']*$fenzu['分组'][0]['增项折扣'];
|
|
}
|
|
|
|
$price += $item['price'];
|
|
$original_price += $item['price'];
|
|
$item_list_ret[] = [
|
|
'id' => $item['id'],
|
|
'name' => $item['name'],
|
|
'price' => $item['price']
|
|
];
|
|
}
|
|
$time = $request->post('time');
|
|
$time_info = Appointment::where('id', $time['id'])->where('status', 1)->where('del', 2)->first();
|
|
if (!!$time_info) {
|
|
if ($time_info->max_count <= $time_info->used_count) {
|
|
$time_info = false;
|
|
}
|
|
}
|
|
if (!!$time_info) {
|
|
$show = date('Y-m-d H:i', strtotime($time_info->date . ' ' . $time_info->start_time)) . ' - ' . date('H:i', strtotime($time_info->date . ' ' . $time_info->end_time));
|
|
$time_info = [
|
|
'id' => $time_info->id,
|
|
'date' => $time_info->date,
|
|
'show' => $show,
|
|
];
|
|
}
|
|
|
|
if ($group_info !==false) {
|
|
// $group_info = self::group_info($hospital, [
|
|
// "电话号码" => null,
|
|
// "证件号码" => null,
|
|
// "预约Id" => $group
|
|
// ]);
|
|
$count += count($group_info['items']);
|
|
// $items =$request->post('items');
|
|
// if(count($items )>0){
|
|
// $data=[
|
|
// "单位Id"=>$group_info['danwei_id']
|
|
// ];
|
|
// $peis = new PEISApiController();
|
|
// $fenzu = $peis::Post('获取单位分组', $hospital, $data)['data'][0];
|
|
// var_dump($fenzu);
|
|
// if(isset($fenzu['分组'])){
|
|
// foreach ($fenzu['分组'] as $key=>$zu){
|
|
// foreach ($fenzu['包含项目信息'] as $key2=>$item){
|
|
// if($item['Id']==)
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
|
|
}
|
|
return Yo::echo([
|
|
'price' => $price,
|
|
'original_price' => $original_price,
|
|
'group' => $group_info,
|
|
'count' => $count,
|
|
'combo' => $combo_info,
|
|
'items' => $item_list_ret,
|
|
'time' => !!$time_info ? $time_info : [
|
|
'id' => 0,
|
|
'date' => date('Y-m-d'),
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function mp_combo_list(Request $request)
|
|
{
|
|
Login::user();
|
|
$hospital = $request->post('hospital');
|
|
$list = self::combo($hospital, [
|
|
'价格下限' => "0",
|
|
'价格上限' => "999999",
|
|
'性别' => null,
|
|
'妇检' => false
|
|
]);
|
|
|
|
$list_map = [];
|
|
foreach ($list as $item) {
|
|
$item['count'] = 0;
|
|
$list_map['i' . $item['id']] = $item;
|
|
}
|
|
$hospital_additional = HospitalAdditional::where('hospital', $hospital)->first();
|
|
$self_count = [];
|
|
if (!!$hospital_additional) $self_count = json_decode($hospital_additional->combo_count, true);
|
|
$public_additional = HospitalAdditional::where('hospital', 0)->first();
|
|
$public_count = [];
|
|
if (!!$public_additional) $public_count = json_decode($public_additional->combo_count, true);
|
|
foreach ($public_count as $item) {
|
|
if (isset($list_map['i' . $item['id']])) {
|
|
$list_map['i' . $item['id']]['count'] = $item['count'];
|
|
}
|
|
|
|
}
|
|
foreach ($self_count as $item) {
|
|
if (isset($list_map['i' . $item['id']])) {
|
|
$list_map['i' . $item['id']]['count'] = $item['count'];
|
|
}
|
|
}
|
|
$l = [];
|
|
foreach ($list_map as $item) {
|
|
$l[] = $item;
|
|
}
|
|
return Yo::echo([
|
|
'list' => $l
|
|
]);
|
|
}
|
|
}
|