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.

317 lines
8.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Appointment;
use App\Models\HospitalAdditional;
use Illuminate\Http\Request;
use Login;
use Yo;
use Illuminate\Support\Facades\DB;
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['部门名称']),
'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列表" => []
]);
$list_map = [];
foreach ($list as $item) {
if (!!$item['choose']) {
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;
}
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');
$items_list = [];
if (count($items) != 0) {
$items_list = self::items($hospital, [
'价格下限' => "0",
'价格上限' => "999999",
"性别" => null,
"妇检" => null,
"套餐Id" => null,
"项目Id列表" => $items
]);
}
$item_list_ret = [];
foreach ($items_list as $item) {
$count++;
$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,
];
}
$group = $request->post('group');
$group_info = false;
if (!!$group) {
$group_info = self::group_info($hospital, [
"电话号码" => null,
"证件号码" => null,
"预约Id" => $group
]);
$count += count($group_info['items']);
}
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
]);
}
//保存套餐介绍图片
public function SaveComboImage(Request $request){
$hospital = $request->post('hospital');
$combo = $request->post('combo');
$img_list = implode(',', $request->post('img_list'));
$info=[
"hospital"=>$hospital,
"combo_id"=>$combo,
"imgs"=>$img_list
];
$cc=0;
$cha=DB::table('hospital_combo')->where(['hospital'=>$hospital,'combo_id'=>$combo])->get();
if(count($cha)>0){
$cc=DB::table('hospital_combo')->where('id',$cha[0]->id)->update($info);
}else{
$cc= DB::table('hospital_combo')->insert($info);
}
return Yo::echo([
'info' => $cc
]);
}
//获取套餐图片详情
public function GetComboImageList(Request $request){
$hospital = $request->post('hospital');
$combo = $request->post('combo');
$info=DB::table('hospital_combo')->where(['hospital'=>$hospital,'combo_id'=>$combo])->first();
return Yo::echo([
'info' => $info
]);
}
}