| xqd
@@ -30,7 +30,7 @@ class OrderController extends AuthController
|
|
|
{
|
|
|
$req = request()->post();
|
|
|
$this->validate(request(), [
|
|
|
- 'payment_type' => 'required|in:1,2',
|
|
|
+ 'payment_type' => 'required|in:1,2,3',
|
|
|
'product_type' => 'required|in:1,2',
|
|
|
'docter_id' => 'required|integer',
|
|
|
'patient_id' => 'required|integer',
|
| xqd
@@ -40,6 +40,7 @@ class OrderController extends AuthController
|
|
|
'phone_minutes' => 'required_if:product_type,1|integer',
|
|
|
'symptoms' => 'required_if:product_type,2|max:2000',
|
|
|
'medical_imgs' => 'required_if:product_type,2|json|max:3000',
|
|
|
+ 'order_pack_id' => 'required_if:payment_type,3|integer',
|
|
|
'pay_password|支付密码' => 'integer',
|
|
|
]);
|
|
|
$user = $this->user;
|
| xqd
@@ -61,7 +62,7 @@ class OrderController extends AuthController
|
|
|
$payment_amount = $req['total_amount'] - $discount_amount;
|
|
|
$payment_amount = $payment_amount < 0 ? 0 : $payment_amount;
|
|
|
|
|
|
- if ($req['payment_type'] == 2 && $payment_amount > 0 && empty($req['pay_password'])) {
|
|
|
+ if (in_array($req['payment_type'], [2,3]) && $payment_amount > 0 && empty($req['pay_password'])) {
|
|
|
return out(null, 10011, '请输入支付密码');
|
|
|
}
|
|
|
|
| xqd
@@ -71,9 +72,13 @@ class OrderController extends AuthController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ($req['payment_type'] == 3) {
|
|
|
+ OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['payment_type'], $payment_amount);
|
|
|
+ }
|
|
|
+
|
|
|
$order_status = $payment_status = 1;
|
|
|
$payment_time = 0;
|
|
|
- if ($payment_amount == 0 || $req['payment_type'] == 2) {
|
|
|
+ if ($payment_amount == 0 || in_array($req['payment_type'], [2,3])) {
|
|
|
$order_status = $payment_status = 2;
|
|
|
$payment_time = time();
|
|
|
}
|
| xqd
@@ -82,7 +87,7 @@ class OrderController extends AuthController
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
//保存订单数据
|
|
|
- $order = Order::create([
|
|
|
+ $create = [
|
|
|
'user_id' => $user['id'],
|
|
|
'payment_type' => $req['payment_type'],
|
|
|
'product_type' => $req['product_type'],
|
| xqd
@@ -94,7 +99,11 @@ class OrderController extends AuthController
|
|
|
'order_status' => $order_status,
|
|
|
'payment_status' => $payment_status,
|
|
|
'payment_time' => $payment_time,
|
|
|
- ]);
|
|
|
+ ];
|
|
|
+ if ($req['payment_type'] == 3) {
|
|
|
+ $create['pay_order_pack_id'] = $req['order_pack_id'];
|
|
|
+ }
|
|
|
+ $order = Order::create($create);
|
|
|
$order_sn = build_sn($order['id']);
|
|
|
Order::where('id', $order['id'])->update(['order_sn' => $order_sn]);
|
|
|
//保存订单患者信息
|
| xqd
@@ -148,11 +157,13 @@ class OrderController extends AuthController
|
|
|
//改变用户余额
|
|
|
$change_amount = 0 - $payment_amount;
|
|
|
User::changeBalance($user['id'], $change_amount, 1, $order['id'], '咨询订单消费');
|
|
|
-
|
|
|
- Order::payCompletedHandle($order['id']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ($payment_amount == 0 || in_array($req['payment_type'], [2, 3])) {
|
|
|
+ Order::payCompletedHandle($order['id']);
|
|
|
+ }
|
|
|
+
|
|
|
DB::commit();
|
|
|
} catch (\Exception $e) {
|
|
|
DB::rollBack();
|
| xqd
@@ -166,7 +177,7 @@ class OrderController extends AuthController
|
|
|
{
|
|
|
$req = request()->post();
|
|
|
$this->validate(request(), [
|
|
|
- 'payment_type' => 'required|in:1,2',
|
|
|
+ 'payment_type' => 'required|in:1,2,3',
|
|
|
'product_type' => 'required|in:3,4,5',
|
|
|
'patient_id' => 'required|integer',
|
|
|
'organization_id' => 'required|integer',
|
| xqd
@@ -177,6 +188,7 @@ class OrderController extends AuthController
|
|
|
'docter_id' => 'required_if:product_type,3|integer',
|
|
|
'vaccine_id' => 'required_if:product_type,4|integer',
|
|
|
'nurse_ids' => 'required_if:product_type,5|json',
|
|
|
+ 'order_pack_id' => 'required_if:payment_type,3|integer',
|
|
|
'pay_password|支付密码' => 'integer',
|
|
|
]);
|
|
|
$user = $this->user;
|
| xqd
@@ -209,7 +221,7 @@ class OrderController extends AuthController
|
|
|
$payment_amount = $req['total_amount'] - $discount_amount;
|
|
|
$payment_amount = $payment_amount < 0 ? 0 : $payment_amount;
|
|
|
|
|
|
- if ($req['payment_type'] == 2 && $payment_amount > 0 && empty($req['pay_password'])) {
|
|
|
+ if (in_array($req['payment_type'], [2,3]) && $payment_amount > 0 && empty($req['pay_password'])) {
|
|
|
return out(null, 10011, '请输入支付密码');
|
|
|
}
|
|
|
|
| xqd
@@ -219,9 +231,13 @@ class OrderController extends AuthController
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ($req['payment_type'] == 3) {
|
|
|
+ OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['payment_type'], $payment_amount);
|
|
|
+ }
|
|
|
+
|
|
|
$order_status = $payment_status = 1;
|
|
|
$payment_time = 0;
|
|
|
- if ($payment_amount == 0 || $req['payment_type'] == 2) {
|
|
|
+ if ($payment_amount == 0 || in_array($req['payment_type'], [2,3])) {
|
|
|
$order_status = 3;
|
|
|
$payment_status = 2;
|
|
|
$payment_time = time();
|
| xqd
@@ -231,7 +247,7 @@ class OrderController extends AuthController
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
//保存订单数据
|
|
|
- $order = Order::create([
|
|
|
+ $create = [
|
|
|
'user_id' => $user['id'],
|
|
|
'docter_id' => $req['docter_id'] ?? 0,
|
|
|
'patient_id' => $req['patient_id'],
|
| xqd
@@ -244,7 +260,11 @@ class OrderController extends AuthController
|
|
|
'payment_amount' => $payment_amount,
|
|
|
'discount_amount' => $discount_amount,
|
|
|
'payment_time' => $payment_time,
|
|
|
- ]);
|
|
|
+ ];
|
|
|
+ if ($req['payment_type'] == 3) {
|
|
|
+ $create['pay_order_pack_id'] = $req['order_pack_id'];
|
|
|
+ }
|
|
|
+ $order = Order::create($create);
|
|
|
$order_sn = build_sn($order['id']);
|
|
|
Order::where('id', $order['id'])->update(['order_sn' => $order_sn]);
|
|
|
//保存订单患者信息
|
| xqd
@@ -312,11 +332,13 @@ class OrderController extends AuthController
|
|
|
//改变用户余额
|
|
|
$change_amount = 0 - $payment_amount;
|
|
|
User::changeBalance($user['id'], $change_amount, 1, $order['id'], '预约订单消费');
|
|
|
-
|
|
|
- Order::payCompletedHandle($order['id']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ($payment_amount == 0 || in_array($req['payment_type'], [2, 3])) {
|
|
|
+ Order::payCompletedHandle($order['id']);
|
|
|
+ }
|
|
|
+
|
|
|
DB::commit();
|
|
|
} catch (\Exception $e) {
|
|
|
DB::rollBack();
|
| xqd
@@ -407,12 +429,18 @@ class OrderController extends AuthController
|
|
|
OrderPatient::create($addPatient);
|
|
|
//保存订单服务包表
|
|
|
$addPack = ServicePack::select(['id as service_pack_id', 'name as pack_name', 'intro as pack_intro', 'price as pack_price', 'insurance_policy', 'insurance_img_url', 'team_id', 'phone_minutes', 'chat_num', 'appoint_num', 'vaccine_limit_amount', 'nurses_limit_amount', 'effective_days'])->where('id', $req['service_pack_id'])->first()->getOriginal();
|
|
|
+ $addPack['user_id'] = $user['id'];
|
|
|
$addPack['order_id'] = $order['id'];
|
|
|
$addPack['is_security'] = $req['is_security'];
|
|
|
$addPack['guardian_name'] = $req['guardian_name'];
|
|
|
$addPack['relationship_type'] = $req['relationship_type'];
|
|
|
$addPack['start_time'] = time();
|
|
|
$addPack['end_time'] = time() + $addPack['effective_days']*24*3600;
|
|
|
+ $addPack['total_phone_minutes'] = $addPack['phone_minutes'];
|
|
|
+ $addPack['total_chat_num'] = $addPack['chat_num'];
|
|
|
+ $addPack['total_appoint_num'] = $addPack['appoint_num'];
|
|
|
+ $addPack['total_vaccine_limit_amount'] = $addPack['vaccine_limit_amount'];
|
|
|
+ $addPack['total_nurses_limit_amount'] = $addPack['nurses_limit_amount'];
|
|
|
OrderPack::create($addPack);
|
|
|
|
|
|
//判断是微信支付
|