创建订单接口

wenjuan
yanzai 1 year ago
parent 4f86c86977
commit e7106173f2

@ -14,19 +14,19 @@ class OrderController extends Controller
{
// status 1-待支付 2-已预约 3-交易关闭 4-已完成 5-已退款
$openid = $request->post('openid');
$user=DB::table('web_users')->where(['openid'=>$openid,'is_del'=>0])->first();
if(!$user) return \Yz::echoError1("openid对应用户不存在");
$OrderList=DB::table('orders')
->select('id','title','status','name','appointment_time as time','order_number as order',
DB::raw("CASE WHEN type = 1 THEN '个检' WHEN type = 2 THEN '团检' ELSE 'unknown' END as type"),
'price','true_price','pay_time','refund_time','created_at')
->where(['web_user_id'=>$user->id])->get();
$WaitingPaymentTime=config('app.globals.WaitingPaymentTime');//支付等待時間
foreach ($OrderList as $key=>$list){
if($list->status==1){
$user = DB::table('web_users')->where(['openid' => $openid, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1("openid对应用户不存在");
$OrderList = DB::table('orders')
->select('id', 'title', 'status', 'name', 'appointment_time as time', 'order_number as order',
DB::raw("CASE WHEN type = 1 THEN '个检' WHEN type = 2 THEN '团检' ELSE 'unknown' END as type"),
'price', 'true_price', 'pay_time', 'refund_time', 'created_at')
->where(['web_user_id' => $user->id])->get();
$WaitingPaymentTime = config('app.globals.WaitingPaymentTime');//支付等待時間
foreach ($OrderList as $key => $list) {
if ($list->status == 1) {
$datetime = new DateTime($list->created_at);
$timestamp = $datetime->getTimestamp();
$list->end_time=$timestamp + (60 * $WaitingPaymentTime);
$list->end_time = $timestamp + (60 * $WaitingPaymentTime);
}
}
$list = [[
@ -89,4 +89,133 @@ class OrderController extends Controller
'list' => $OrderList
]);
}
//创建订单
public function Create()
{
$hospital_id = request('hospital');
$openid = request('openid');
$person_id = request('person_id');
$combo_id = request('combo_id');
$type = request('type');//1个检2团检
$group_id = request('group_id');//团检id
$item_ids = request('item_ids');//自选item的ids
$plan_id = request('plan_id');//自选item的ids
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1('用户不存在');
$person = DB::table('web_user_person')->where(['id' => $person_id, 'is_del' => 0])->first();
if (!$person) return \Yz::echoError1('体检人不存在');
$title = "自选项目";
$price = 0;
$buy_info = [
'combo' => [
'id' => 0,
'name' => $title,
'price' => 0,
],
'items' => [],
'group' => [
'id' => '',
],
];
//如果是套餐
if (isset($combo_id) and $combo_id <> 0) {
$combo_info = DB::table('combos')->where(['combo_id' => $combo_id, 'status' => 1])->first();
if(!$combo_info) return \Yz::echoError1("套餐不存在");
$price += $combo_info->price;
$title = $combo_info->name;
$buy_info['combo'] = [
'id' => $combo_info->combo_id,
'name' => $combo_info->name,
'price' => $combo_info->price,
];
}
//如果有自选项目
$items_list = [];
if (count($item_ids) != 0) {
$items_list = DB::table('items')->whereIn('item_id', $item_ids)->where(['status' => 1])->get();
foreach ($items_list as $item) {
$price += $item->price;
$buy_info['items'][] = [
'id' => $item->item_id,
'name' => $item->name,
'price' => $item->price
];
}
}
//判断号源是否可用vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
$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->use_type <> 0 and $plan->use_type <> $type) {
$type_temp = '';
if ($plan->use_type == 1) $type_temp = '个检';
if ($plan->use_type == 2) $type_temp = '团检';
return \Yz::echoError1("此号源为" . $type_temp . "号源,不可用");
}
//判断是否是预留号源
if ($plan->type <> 1) return \Yz::echoError1("此号源为预留号源,不可用");
//判断是否是vip
//判断性别
if ($plan->sex <> 0 and $plan->sex <> $person->sex) return \Yz::echoError1("此号源性别与体检人性别不符,不可用");
//判断体检类型checkup_type
//判断金额
if ($plan->use_type == 1 and $plan->amount_limit1 <> 0) {
if ($price < $plan->amount_limit1) return \Yz::echoError1("未达到此号源限制的金额,不可用");
}
if ($plan->use_type == 2 and $plan->amount_limit2 <> 0) {
if ($price < $plan->amount_limit2) return \Yz::echoError1("未达到此号源限制的金额,不可用");
}
//判断时间是否过期
$plan_datetime=$plan->date.' '.$plan->time;
if($plan_datetime < date('Y-m-d H:i:s')) return \Yz::echoError1("");
//判断号源是否可用^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//构建订单号
$order_num=$this->generateOrderNumber();
$data=[
'title'=>$title,
'type'=>$type,
'web_user_id'=>$user->id,
'person_id'=>$person->id,
'name'=>$person->name,
'id_number'=>$person->id_number,
'buy_info'=>json_encode($buy_info, JSON_UNESCAPED_UNICODE),
'price'=>$price,
'true_price'=>$price,
'order_number'=>$order_num,
'status'=>1,
'appointment_date'=>$plan->date,
'appointment_time'=>$plan->time,
'plan_id'=>$plan->id,
'plan_number'=>$plan->plan_number,
'combo_id'=>$combo_id,
'hospital_id'=>$hospital_id,
'phone'=>$person->phone,
'sex'=>$person->sex,
'birthday'=>$person->birthday,
'married'=>$person->married,
];
$insert=DB::table('orders')->insert($data);
if($insert){
return \Yz::return(true,"操作成功",[]);
}else{
return \Yz::echoError1("创建订单失败");
}
}
function generateOrderNumber() {
// 获取当前时间的时间戳(精确到毫秒)
$timestamp = round(microtime(true) * 1000);
// 生成一个随机数(可以根据需要调整长度)
$randomPart = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 6);
// 拼接时间戳和随机部分
$orderNumber = date("YmdHis", $timestamp / 1000) . substr($timestamp % 1000, -3) . $randomPart;
return $orderNumber;
}
}

@ -38,6 +38,7 @@ Route::group(['prefix' => 'H5'], function () {
Route::post('/GetReadme', 'App\Http\Controllers\API\H5\HospitalExtraController@GetReadme');//获取注意事项
Route::post('/GetMonthPlanCount', 'App\Http\Controllers\API\H5\PlanController@GetMonthPlanCount');//获取本月每日剩余号源数量
Route::post('/GetDayPlanList', 'App\Http\Controllers\API\H5\PlanController@GetDayPlanList');//获取某日号源数量
Route::post('/OrderCreate', 'App\Http\Controllers\API\H5\OrderController@Create');//创建订单
});

Loading…
Cancel
Save