$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'], 'fenzu_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 ]); } }