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.

295 lines
10 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Http\Controllers\API\Web;
use App\Http\Controllers\API\H5\PersonController;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ComboController extends Controller
{
//医生端网页打开页面获取套餐列表
public function GetList(){
$hospital = request('hospital');
$sex=request('sex');
$combo_sort = request('combo_sort');
$combo_type = request('combo_type');
$combo_crowd = request('combo_crowd');
$combo_price =request('combo_price');
$combo_item = request('combo_item');
$hospital = DB::table('hospitals')->select('id', 'name', 'address', 'latitude', 'longitude')->where(['id' => $hospital])->first();
$canshu = [];
$canshu[]=$sex;
$sql = '';
if (isset($combo_price)) {
$price_list = [
"1" => [0, 299],
"2" => [300, 999],
"3" => [1000, 1499],
"4" => [1500, 2999],
"5" => [3000, 999999],
];
$sql = " and (a.price>=? and a.price<=?) ";
$canshu[] = $price_list[$combo_price][0];
$canshu[] = $price_list[$combo_price][1];
}
if (isset($combo_type)) {
$sql = $sql . " and a.type_id=? ";
$canshu[] = $combo_type;
}
if (isset($combo_crowd)) {
$sql = $sql . " and a.crowd_id=? ";
$canshu[] = $combo_crowd;
}
if (isset($combo_sort)) {
if ($combo_sort == 1) {
$sql = $sql . " ";
}
if ($combo_sort == 2) {
$sql = $sql . " ";
}
if ($combo_sort == 3) {
$sql = $sql . " order by a.price";
}
if ($combo_sort == 4) {
$sql = $sql . " order by a.price desc";
}
}
$combos = DB::select("select * from combos as a LEFT JOIN (
select combo_id as c_id,count(*) as count from orders where status in(2,4) group by combo_id
) as b on a.combo_id=b.c_id where a.status=1 and a.sex=?" . $sql, $canshu);
foreach ($combos as $key => $combo) {
$combo->count=$combo->count?$combo->count:0;
$tags = json_decode($combo->tags, true);
$combo->tags2 = json_decode($combo->tags2, true);
foreach ($tags as $k => $tag) {
$tags[$k] = ['text' => $tag,
'text_color' => '#47ABD8',
'color' => '#EBF5FC'
];
}
$combo->tag = $tags;
$combo->tag[] = [
'text' => $combo->item_count . '个项目',
'text_color' => '#34C292',
'color' => '#E9F8F3',
];
}
$hospital_info = $hospital;
return \Yz::Return(true, '获取成功', [
'list' => $combos,
'hospital' => $hospital_info
]);
}
//医生端网页打开页面获取购买详情内容(详情页信息)
public function BuyInfo()
{
$hospital_id = request('hospital');
$combo_id = request('combo_id'); //购买的套餐id
$item_ids = request('item_ids'); //自选项目ids
$group_id = request('group_id'); //团检登记id
if (!isset($hospital_id)) return \Yz::echoError1("医院id不能为空");
$hospital = DB::table('hospitals')->where(['id' => 1, 'status' => 1, 'is_del' => 0])->first();
$combo_info = false;//套餐信息
$pay_item_count = 0;//需自费项目个数
$all_original_price = 0;
$true_price = 0;
$nmr_list=[];
if (isset($combo_id) and $combo_id != 0) {
// $combo=DB::table('combos')->where(['hospital_id'=>$hospital_id,'combo_id'=>$combo_id,'status'=>1])->first();
$combo = DB::select("select a.*,b.*,c.name as crowd_name from combos as a LEFT JOIN (
select combo_id as c_id,count(*) as sale_count from orders where status in(2,4) group by combo_id
) as b on a.combo_id=b.c_id left join combo_crowd as c on a.crowd_id=c.id where a.combo_id=? and a.status=1 ", [$combo_id]);
if (!$combo) return \Yz::echoError1("套餐不存在");
$combo = $combo[0];
$combo_info['hospital_name'] = $hospital->name;
$combo_info['combo_name'] = $combo->name;
$combo_info['crowd_name'] = $combo->crowd_name;
$combo_info['img'] = $combo->cover;
$combo_info['sale_count'] = $combo->sale_count==null?0:$combo->sale_count;
$tags = json_decode($combo->tags, true);
$combo->tags2 = json_decode($combo->tags2, true);
foreach ($tags as $k => $tag) {
$tags[$k] = ['text' => $tag,
'text_color' => '#47ABD8',
'color' => '#EBF5FC'
];
}
$combo->tag = $tags;
$combo->tag[] = [
'text' => $combo->item_count . '个项目',
'text_color' => '#34C292',
'color' => '#E9F8F3',
];
$combo_info['tags'] = $combo->tag;
$combo_info['tags2'] = $combo->tags2;
$combo_info['price'] = $combo->price;
$combo_info['original_price'] = $combo->original_price;
$all_original_price += $combo_info['original_price'];
$combo_items = json_decode($combo->items, true);
$groupedData = [];
foreach ($combo_items as $item) {
$keshiName = $item['keshi_name'];
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = $item;
}
foreach ($groupedData as $keshiName => $children) {
$combo_info['items'][] = [
'keshi_name' => $keshiName,
'children' => $children
];
}
$pay_item_count += $combo->item_count;
$true_price += $combo_info['price'];
//如果有影像科则存储在nmr_list
$comboItem=DB::table('combo_items')->where(['combo_id' => $combo_id, 'status' => 1,'keshi_name'=>'影像科'])->get();
if(count($comboItem)>0){
foreach ($comboItem as $item){
$nmr_list[]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
$items_info = false;//自选项目信息
if (isset($item_ids) and !empty($item_ids)) {
$price = 0;
$items_original_price = 0;
$items = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
$groupedData = [];
foreach ($items as $item) {
// $price=$price+$item->price;
$price = bcadd($price, $item->price, 2);
// $all_original_price+=$item->original_price;
$all_original_price = bcadd($all_original_price, $item->original_price, 2);
// $items_original_price+=$item->original_price;
$items_original_price = bcadd($items_original_price, $item->original_price, 2);
$keshiName = $item->keshi_name;
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = ['id'=>$item->item_id,'desc' => $item->jianjie, 'name' => $item->name,'price'=>$item->price];
//如果有影像科则存储在nmr_list字段
if($item->keshi_name=='影像科'){
$nmr_list[]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
$items_info['price'] = $price;
$items_info['original_price'] = $items_original_price;
foreach ($groupedData as $keshiName => $children) {
$items_info['items'][] = [
'keshi_name' => $keshiName,
'children' => $children
];
}
$pay_item_count += count($items);
$true_price += $items_info['price'];
}
//调用his接口查询用户积分和预存款计算可以抵扣的金额
$integral_money = 90;//积分抵扣金额
$save_money = 150;//预存款抵扣金额
$coupon_money = 50;//优惠券抵扣金额
//用户真实支付价格,应减去抵扣(二期实现)
$group_info = false;
$lose_price=0;
if (!!$group_id) {
$P = new PersonController();
$data = [
'电话号码' => null,
'证件号码' => null,
'预约Id' => $group_id
];
$group_info = $P->group_info($hospital_id, $data);
if(count($group_info)==0) return \Yz::echoError1("获取团检登记信息失败");
//如果是团检统收限额大于0并且没有自带项目则判断剩余金额
if($group_info[0]['tongshou_xiane']>0 and count($group_info[0]['items'])==0){
$lose_price=$group_info[0]['tongshou_xiane']- $true_price;
if($lose_price<0) $lose_price=0;
}
$true_price = $true_price + $group_info[0]['sixi_zong_ji_jin_e'];
$true_price = ($true_price - $group_info[0]['tongshou_xiane']) > 0 ? $true_price - $group_info[0]['tongshou_xiane'] : 0;
$all_items = DB::table('items')->where(['status' => 1])->get();
$item_new = [];
foreach ($group_info[0]['items'] as $item) {
$item['keshi_name'] = '其他';
$item['desc'] = '';
foreach ($all_items as $it) {
if ($it->item_id == $item['id']) {
$item['keshi_name'] = $it->keshi_name;
$item['desc'] = $it->jianjie;
if($it->keshi_name=='影像科'){
$nmr_list[]=[
'item_id' => $it->item_id,
'name' => $it->name,
];
}
break;
}
}
$item_new[] = $item;
}
$groupedData = [];
foreach ($item_new as $item) {
$keshiName = $item['keshi_name'];
if (!isset($groupedData[$keshiName])) {
$groupedData[$keshiName] = [];
}
$groupedData[$keshiName][] = ['desc' => $item['desc'], 'name' => $item['name'], 'id' => $item['id'], 'keshi_name' => $item['keshi_name']];
}
$group_info[0]['items'] = [];//清空原来的item
foreach ($groupedData as $keshiName => $children) {
$group_info[0]['items'][] = [
'keshi_name' => $keshiName,
'children' => $children
];
}
}
$data = [
'group_info' => $group_info,
'combo_info' => $combo_info,
'items_info' => $items_info,
'integral_money' => number_format($integral_money, 2, '.', ''),
'save_money' =>number_format($save_money, 2, '.', ''),
'coupon_money' => number_format($coupon_money, 2, '.', ''),
'true_price' =>number_format($true_price, 2, '.', ''),//需要用户支付的金的
'original_price' =>number_format($all_original_price, 2, '.', '') ,//总原价
'pay_item_count' => $pay_item_count,//需要付费的项目数量
'lose_price'=>number_format($lose_price, 2, '.', ''),//剩余的不用就会浪费的金额
'nmr_list' => $nmr_list//核磁项目列表
];
return \Yz::Return(true, "查询成功", $data);
}
}