|
|
|
@ -3,6 +3,7 @@
|
|
|
|
namespace App\Http\Controllers\API\H5;
|
|
|
|
namespace App\Http\Controllers\API\H5;
|
|
|
|
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
|
|
|
|
use App\Http\Controllers\API\PEISApiController;
|
|
|
|
use App\Services\ConfigService;
|
|
|
|
use App\Services\ConfigService;
|
|
|
|
use DateTime;
|
|
|
|
use DateTime;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
@ -100,7 +101,15 @@ class OrderController extends Controller
|
|
|
|
$type = request('type');//1个检2团检
|
|
|
|
$type = request('type');//1个检2团检
|
|
|
|
$group_id = request('group_id');//团检id
|
|
|
|
$group_id = request('group_id');//团检id
|
|
|
|
$item_ids = request('item_ids');//自选item的ids
|
|
|
|
$item_ids = request('item_ids');//自选item的ids
|
|
|
|
$plan_id = request('plan_id');//自选item的ids
|
|
|
|
$plan_id = request('plan_id');//号源id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!isset($hospital_id)) return \Yz::echoError1('医院id不能为空');
|
|
|
|
|
|
|
|
if (!isset($openid)) return \Yz::echoError1('openid不能为空');
|
|
|
|
|
|
|
|
if (!isset($person_id)) return \Yz::echoError1('person_id不能为空');
|
|
|
|
|
|
|
|
if (!isset($type)) return \Yz::echoError1('type体检类型不能为空');
|
|
|
|
|
|
|
|
if (!isset($plan_id)) return \Yz::echoError1('号源id不能为空');
|
|
|
|
|
|
|
|
if ($type == 2 and !isset($group_id)) return \Yz::echoError1('团检,group_id不能为空');
|
|
|
|
|
|
|
|
if ($type == 1 and isset($group_id)) return \Yz::echoError1('体检类型:个检 与group_id冲突');
|
|
|
|
|
|
|
|
|
|
|
|
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
|
|
|
|
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
|
|
|
|
if (!$user) return \Yz::echoError1('用户不存在');
|
|
|
|
if (!$user) return \Yz::echoError1('用户不存在');
|
|
|
|
@ -136,15 +145,64 @@ class OrderController extends Controller
|
|
|
|
$items_list = [];
|
|
|
|
$items_list = [];
|
|
|
|
if (count($item_ids) != 0) {
|
|
|
|
if (count($item_ids) != 0) {
|
|
|
|
$items_list = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
|
|
|
|
$items_list = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
|
|
|
|
|
|
|
|
$existingIds=[];
|
|
|
|
foreach ($items_list as $item) {
|
|
|
|
foreach ($items_list as $item) {
|
|
|
|
$price += $item->price;
|
|
|
|
$price += $item->price;
|
|
|
|
|
|
|
|
$existingIds[]=$item->item_id;
|
|
|
|
$buy_info['items'][] = [
|
|
|
|
$buy_info['items'][] = [
|
|
|
|
'id' => $item->item_id,
|
|
|
|
'id' => $item->item_id,
|
|
|
|
'name' => $item->name,
|
|
|
|
'name' => $item->name,
|
|
|
|
'price' => $item->price
|
|
|
|
'price' => $item->price
|
|
|
|
];
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$missingIds = array_diff($item_ids, $existingIds);
|
|
|
|
|
|
|
|
if(count($missingIds)>0) return \Yz::echoError1("部分自选项目不可用,Id:".implode(', ', $missingIds));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//如果是团检
|
|
|
|
|
|
|
|
$group_info = false;
|
|
|
|
|
|
|
|
if ($type == 2) {
|
|
|
|
|
|
|
|
$P = new PersonController();
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
|
|
|
|
'电话号码' => null,
|
|
|
|
|
|
|
|
'证件号码' => null,
|
|
|
|
|
|
|
|
'预约Id' => $group_id
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
$group_info = $P->group_info($hospital_id, $data);
|
|
|
|
|
|
|
|
$group_info=$group_info[0];
|
|
|
|
|
|
|
|
$buy_info['group'] = [
|
|
|
|
|
|
|
|
'id' => $group_id,
|
|
|
|
|
|
|
|
'combo_name' => $group_info['combo_name'],
|
|
|
|
|
|
|
|
'combo_id' => $group_info['combo_id'],
|
|
|
|
|
|
|
|
'group_name' => $group_info['group_name'],
|
|
|
|
|
|
|
|
'items' => $group_info['items'],
|
|
|
|
|
|
|
|
'group_id' => $group_info['group_id'],
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
$title ="单位团检". $group_info['combo_name'];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//调用思信接口判断各个项目是否可用
|
|
|
|
|
|
|
|
$check_items = [];
|
|
|
|
|
|
|
|
foreach ($item_ids as $item_id) {
|
|
|
|
|
|
|
|
$check_items[] = ['Id' => $item_id];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((isset($combo_id) and $combo_id <> 0) || count($check_items) != 0) {
|
|
|
|
|
|
|
|
$item_check = self::item_check($hospital_id, [
|
|
|
|
|
|
|
|
'人员信息列表' => [[
|
|
|
|
|
|
|
|
"序号" => 0,
|
|
|
|
|
|
|
|
"性别" => $person->sex == 1 ? '男' : '女',
|
|
|
|
|
|
|
|
"年龄" => floor((time() - strtotime($person->birthday)) / 86400 / 360),
|
|
|
|
|
|
|
|
"婚姻状态" => $person->married == 1 ? '已婚' : '未婚',
|
|
|
|
|
|
|
|
]],
|
|
|
|
|
|
|
|
'套餐Id' => $combo_id == 0 ? null : $combo_id,
|
|
|
|
|
|
|
|
'可选项目信息' => $check_items,
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
if (count($item_check['data']) != 1) {
|
|
|
|
|
|
|
|
return \Yz::echoError1("体检系统提示:". $item_check['message']);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//判断号源是否可用vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
|
|
|
//判断号源是否可用vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
|
|
|
$plan = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first();
|
|
|
|
$plan = DB::table('plans')->where(['id' => $plan_id, 'hospital_id' => $hospital_id, 'status' => 1, 'is_del' => 0])->first();
|
|
|
|
if (!$plan) return \Yz::echoError1("号源不可用");
|
|
|
|
if (!$plan) return \Yz::echoError1("号源不可用");
|
|
|
|
@ -173,6 +231,13 @@ class OrderController extends Controller
|
|
|
|
if ($plan_datetime < date('Y-m-d H:i:s')) return \Yz::echoError1("号源已过期,不可用");
|
|
|
|
if ($plan_datetime < date('Y-m-d H:i:s')) return \Yz::echoError1("号源已过期,不可用");
|
|
|
|
//判断号源是否可用^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
//判断号源是否可用^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//如果是团检 判断 团检登记人的有效时间范围
|
|
|
|
|
|
|
|
if (!!$group_info) {
|
|
|
|
|
|
|
|
if(!($plan_datetime>$group_info['start_time'] . ' 00:00:00' and $plan_datetime<$group_info['end_time'] . ' 23:59:59')){
|
|
|
|
|
|
|
|
return \Yz::echoError1("预约日期不在单位有效时间范围内,请重新选择");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//构建订单号
|
|
|
|
//构建订单号
|
|
|
|
$order_num = $this->generateOrderNumber();
|
|
|
|
$order_num = $this->generateOrderNumber();
|
|
|
|
$data = [
|
|
|
|
$data = [
|
|
|
|
@ -212,7 +277,8 @@ class OrderController extends Controller
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function generateOrderNumber() {
|
|
|
|
function generateOrderNumber()
|
|
|
|
|
|
|
|
{
|
|
|
|
// 获取当前时间的时间戳(精确到毫秒)
|
|
|
|
// 获取当前时间的时间戳(精确到毫秒)
|
|
|
|
$timestamp = round(microtime(true) * 1000);
|
|
|
|
$timestamp = round(microtime(true) * 1000);
|
|
|
|
|
|
|
|
|
|
|
|
@ -224,4 +290,11 @@ class OrderController extends Controller
|
|
|
|
|
|
|
|
|
|
|
|
return $orderNumber;
|
|
|
|
return $orderNumber;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function item_check($hospital, $data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
$peis = new PEISApiController();
|
|
|
|
|
|
|
|
$check = $peis::Post('套餐项目检查', $hospital, $data);
|
|
|
|
|
|
|
|
return $check;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|