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.
227 lines
8.7 KiB
PHP
227 lines
8.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use http\Header;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yz;
|
|
|
|
class ViewController extends Controller
|
|
{
|
|
public function site()
|
|
{
|
|
$domain = request()->getHost();
|
|
$site = DB::table('site_organization')
|
|
->where('domain', 'like', "%\"$domain\"%")
|
|
->where('status', 1)
|
|
->where('is_del', 0)
|
|
->first();
|
|
if (!$site) return false;
|
|
return $site;
|
|
}
|
|
|
|
public function public_config()
|
|
{
|
|
$request = request();
|
|
$search = $request->get('search') ?? '';
|
|
return [
|
|
'search_value' => $search,
|
|
'search_tags' => ['女性', '男性', '入职', '父母', '高端']
|
|
];
|
|
}
|
|
|
|
public function combo_list(Request $request)
|
|
{
|
|
$site = self::site();
|
|
if (!$site) return '站点暂时关闭';
|
|
$hospital_ids = json_decode($site->hospital, true);
|
|
$type = $request->get('type') ?? '';
|
|
$combo_type = $request->get('combo_type') ?? '';
|
|
$price = $request->get('price') ?? '';
|
|
$sex = $request->get('sex') ?? '';
|
|
$order = $request->get('order') ?? 'zh';
|
|
$search = $request->get('search') ?? '';
|
|
|
|
$combos = DB::table('combos')
|
|
->whereIn('hospital_id', $hospital_ids)
|
|
->where(function ($query) use ($type) {
|
|
if ($type != '') $query->where('tags', 'like', "%\"$type\"%");
|
|
})
|
|
->where(function ($query) use ($combo_type) {
|
|
if ($combo_type != '') $query->where('tags', 'like', "%\"$combo_type\"%");
|
|
})
|
|
->where(function ($query) use ($price) {
|
|
if ($price != '') {
|
|
$price_arr = explode('-', $price);
|
|
if (count($price_arr) == 2) {
|
|
$query->whereBetween('price', [$price_arr[0], $price_arr[1]]);
|
|
} else {
|
|
$price_arr = explode('u', $price);
|
|
$query->where('price', '>=', $price_arr[0]);
|
|
}
|
|
}
|
|
})
|
|
->where(function ($query) use ($sex) {
|
|
if ($sex != '') $query->whereIn('sex', [0, $sex]);
|
|
})
|
|
->where(function ($query) use ($search) {
|
|
if ($search != '') $query->where('tags', 'like', "%\"$search\"%")
|
|
->orWhere('name', 'like', "%$search%");
|
|
})
|
|
->orderBy($order == 'zh' ? 'id' : 'price', $order == 'zh' ? 'desc' : 'asc')
|
|
->paginate(20)
|
|
->withQueryString()
|
|
->toArray();
|
|
$combo_count = DB::table('combos')
|
|
->whereIn('hospital_id', $hospital_ids)
|
|
->where(function ($query) use ($type) {
|
|
if ($type != '') $query->where('tags', 'like', "%\"$type\"%");
|
|
})
|
|
->where(function ($query) use ($combo_type) {
|
|
if ($combo_type != '') $query->where('tags', 'like', "%\"$combo_type\"%");
|
|
})
|
|
->where(function ($query) use ($price) {
|
|
if ($price != '') {
|
|
$price_arr = explode('-', $price);
|
|
if (count($price_arr) == 2) {
|
|
$query->whereBetween('price', [$price_arr[0], $price_arr[1]]);
|
|
} else {
|
|
$price_arr = explode('u', $price);
|
|
$query->where('price', '>=', $price_arr[0]);
|
|
}
|
|
}
|
|
})
|
|
->where(function ($query) use ($sex) {
|
|
if ($sex != '') $query->whereIn('sex', [0, $sex]);
|
|
})
|
|
->where(function ($query) use ($search) {
|
|
if ($search != '') $query->where('tags', 'like', "%\"$search\"%")
|
|
->orWhere('name', 'like', "%$search%");
|
|
})
|
|
->count();
|
|
|
|
$search_arr = [[
|
|
'label' => '体检类型',
|
|
'value' => 'type',
|
|
'options' => [
|
|
['label' => '不限', 'value' => ''],
|
|
['label' => '中老年', 'value' => '中老年'],
|
|
['label' => '青年女性', 'value' => '青年女性'],
|
|
['label' => '基础套餐', 'value' => '基础套餐'],
|
|
['label' => '入职体检', 'value' => '入职体检'],
|
|
]
|
|
], [
|
|
'label' => '体检套餐',
|
|
'value' => 'combo_type',
|
|
'options' => [
|
|
['label' => '不限', 'value' => ''],
|
|
['label' => '肝脏疾病', 'value' => '肝脏疾病'],
|
|
['label' => '糖尿病', 'value' => '糖尿病'],
|
|
['label' => '泌尿系统疾病', 'value' => '泌尿系统疾病'],
|
|
['label' => '高血脂', 'value' => '高血脂'],
|
|
['label' => '高血糖', 'value' => '高血糖'],
|
|
['label' => '消化系统疾病', 'value' => '消化系统疾病'],
|
|
['label' => '前列腺疾病', 'value' => '前列腺疾病'],
|
|
['label' => '妇科疾病', 'value' => '妇科疾病'],
|
|
['label' => '甲状腺疾病', 'value' => '甲状腺疾病'],
|
|
['label' => '心血管疾病', 'value' => '心血管疾病'],
|
|
['label' => '心脏病', 'value' => '心脏病'],
|
|
['label' => '骨质疏松', 'value' => '骨质疏松'],
|
|
['label' => '腰颈肩病', 'value' => '腰颈肩病'],
|
|
['label' => '风湿病', 'value' => '风湿病'],
|
|
['label' => '肺部疾病', 'value' => '肺部疾病'],
|
|
]
|
|
], [
|
|
'label' => '价格区间',
|
|
'value' => 'price',
|
|
'options' => [
|
|
['label' => '不限', 'value' => ''],
|
|
['label' => '100-300', 'value' => '100-300'],
|
|
['label' => '300-500', 'value' => '300-500'],
|
|
['label' => '500-800', 'value' => '500-800'],
|
|
['label' => '800以上', 'value' => '800u'],
|
|
]
|
|
], [
|
|
'label' => '性别',
|
|
'value' => 'sex',
|
|
'options' => [
|
|
['label' => '不限', 'value' => ''],
|
|
['label' => '男', 'value' => '1'],
|
|
['label' => '女', 'value' => '2'],
|
|
]
|
|
]];
|
|
foreach ($combos['data'] as $combo) {
|
|
$combo->tags_arr = json_decode($combo->tags, true);
|
|
}
|
|
// Yz::debug(['a' => $combos]);
|
|
return view('combo_list.combo_list', [
|
|
'public_config' => self::public_config(),
|
|
'combos' => $combos,
|
|
'combo_count' => $combo_count,
|
|
'search_arr' => $search_arr,
|
|
'search_choose' => [
|
|
'type' => $type,
|
|
'combo_type' => $combo_type,
|
|
'price' => $price,
|
|
'sex' => $sex,
|
|
'order' => $order,
|
|
]
|
|
]);
|
|
}
|
|
|
|
public function home()
|
|
{
|
|
$site = self::site();
|
|
if (!$site) return '站点暂时关闭';
|
|
$hospital_ids = json_decode($site->hospital, true);
|
|
$combos = DB::table('combos')
|
|
->whereIn('hospital_id', $hospital_ids)
|
|
->limit(8)
|
|
->orderBy('id', 'desc')
|
|
->get();
|
|
foreach ($combos as $combo) {
|
|
$combo->tags_arr = json_decode($combo->tags, true);
|
|
}
|
|
$hospital_list = DB::table('hospital')
|
|
->whereIn('id', $hospital_ids)
|
|
->limit(8)
|
|
->orderBy('id', 'desc')
|
|
->get();
|
|
foreach ($hospital_list as $hospital) {
|
|
$hospital->tags_arr = json_decode($hospital->tags, true);
|
|
}
|
|
return view('home.home', [
|
|
'public_config' => self::public_config(),
|
|
'combos' => $combos,
|
|
'hospitals' => $hospital_list,
|
|
]);
|
|
}
|
|
|
|
public function combo(Request $request)
|
|
{
|
|
$site = self::site();
|
|
if (!$site) return '站点暂时关闭';
|
|
$hospital_ids = json_decode($site->hospital, true);
|
|
$combo_id = $request->get('id');
|
|
$combo = DB::table('combos')
|
|
->where('id', $combo_id)
|
|
->whereIn('hospital_id', $hospital_ids)
|
|
->first();
|
|
$combo->items_data = json_decode($combo->items, true);
|
|
$hospital = DB::table('hospital')
|
|
->where('id', $combo->hospital_id)
|
|
->first();
|
|
$url = $hospital->mp_jump . '?combo=' . $combo->combo_id . '&hospital=' . $hospital->code;
|
|
// Yz::debug([
|
|
// 'a' => $hospital
|
|
// ]);
|
|
return view('combo.combo', [
|
|
'public_config' => self::public_config(),
|
|
'qrcode' => $url,
|
|
'combo' => $combo,
|
|
'hospital' => $hospital,
|
|
]);
|
|
}
|
|
}
|