创建订单增加团检类型、完善细节、对接思信套餐项目检查。

wenjuan
yanzai 1 year ago
parent f6980ed1f1
commit bd2dfeddf4

@ -46,6 +46,7 @@ class ApiMapController extends Controller
'NMRGetDayPlanList' => $base_url . '/api/H5/NMRGetDayPlanList',//核磁每日号源 'NMRGetDayPlanList' => $base_url . '/api/H5/NMRGetDayPlanList',//核磁每日号源
'GetGroupUnit' => $base_url . '/api/H5/GetGroupUnit',//团检登记查询获取单位分组 'GetGroupUnit' => $base_url . '/api/H5/GetGroupUnit',//团检登记查询获取单位分组
'GetGroupCombo' => $base_url . '/api/H5/GetGroupCombo',//获取团检套餐 'GetGroupCombo' => $base_url . '/api/H5/GetGroupCombo',//获取团检套餐
'OrderCreate' => $base_url . '/api/H5/OrderCreate',//创建订单
]; ];
} }

@ -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;
}
} }

@ -12,7 +12,6 @@ class PersonController extends Controller
{ {
$peis = new PEISApiController(); $peis = new PEISApiController();
$info = $peis::Post('团检登记查询', $hospital, $data); $info = $peis::Post('团检登记查询', $hospital, $data);
$group_list=[]; $group_list=[];
foreach ($info['data'] as $it) { foreach ($info['data'] as $it) {
$items = []; $items = [];

@ -3,6 +3,7 @@
namespace App\Http\Controllers\API; namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
@ -18,7 +19,16 @@ class PEISApiController extends Controller
$api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}"; $api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}";
$api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}"; $api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}";
$api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}"; $api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}";
$api['套餐项目检查'] = "{$url}/PEISCommon/CheckComboAndGroup/{$code}";
$api['个检预约'] = "{$url}/PEISCommon/PersonAppointment/{$code}";
$api['个检预约查询'] = "{$url}/PEISCommon/QueryPersonAppointment/{$code}";
$api['个检预约取消'] = "{$url}/PEISCommon/CancelPersonAppointment/{$code}";
$api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg/{$code}"; $api['团检登记查询'] = "{$url}/PEISCommon/QueryUnitAppointmentReg/{$code}";
$api['团检预约'] = "{$url}/PEISCommon/UnitAppointment/{$code}";
$api['团检预约查询'] = "{$url}/PEISCommon/QueryUnitAppointment/{$code}";
$api['团检预约取消'] = "{$url}/PEISCommon/CancelUnitAppointment/{$code}";
return $api["{$url_code}"] ?? $url_code; return $api["{$url_code}"] ?? $url_code;
} }
@ -42,7 +52,6 @@ class PEISApiController extends Controller
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$res_string = curl_exec($ch); $res_string = curl_exec($ch);
curl_close($ch); curl_close($ch);
$str_len = mb_strlen($res_string, 'utf-8'); $str_len = mb_strlen($res_string, 'utf-8');
$str_size = $str_len / 1024; $str_size = $str_len / 1024;
$save_res = $res_string; $save_res = $res_string;
@ -60,7 +69,9 @@ class PEISApiController extends Controller
]); ]);
} }
$res = json_decode($res_string, true); $res = json_decode($res_string, true);
if ($res['ResultCode'] != 0){
throw new HttpResponseException( \Yz::echoError1("体检系统提示:". $res['ResultContent']));
}
return [ return [
'code' => $res['ResultCode'], 'code' => $res['ResultCode'],

Loading…
Cancel
Save