zilong 4 yıl önce
ebeveyn
işleme
7a2c2ef802
1 değiştirilmiş dosya ile 25 ekleme ve 0 silme
  1. 25 0
      app/Http/Controllers/Api/V1/OrderController.php

+ 25 - 0
app/Http/Controllers/Api/V1/OrderController.php

xqd xqd xqd
@@ -8,6 +8,7 @@
 
 namespace App\Http\Controllers\Api\V1;
 
+use App\Models\DocterSetting;
 use App\Models\Nurse;
 use App\Models\Order;
 use App\Models\OrderNurse;
@@ -17,6 +18,7 @@ use App\Models\OrderVaccine;
 use App\Models\OrganizationVaccine;
 use App\Models\Patient;
 use App\Models\Payment;
+use App\Models\SchedulePeriod;
 use App\Models\ServicePack;
 use App\Models\Team;
 use App\Models\TeamDocter;
@@ -230,6 +232,29 @@ class OrderController extends AuthController
             return out(null, 10011, '请输入支付密码');
         }
 
+        //检查号源
+        if ($product_type == 3) {
+            $schedulePeriod = SchedulePeriod::where('docter_id', $req['docter_id'])->where('time_period_id', $req['time_period_id'])->where('schedule_date', date('schedule_date'))->where('schedule_type', 1)->first();
+            if (empty($schedulePeriod)) {
+                return out(null, 10012, '医生无该时间段的排班');
+            }
+            $docterSettings = DocterSetting::select(['service_num'])->where('docter_id', $req['docter_id'])->where('type', 1)->first();
+            if ($docterSettings['service_num'] <= $schedulePeriod['order_sn']) {
+                return out(null, 10014, '医生该时间段已经预约满了');
+            }
+        }
+        elseif (in_array($product_type, [4,5])) {
+            $schedule_type_map = [4 => 2, 5 => 3];
+            $schedulePeriod = SchedulePeriod::where('time_period_id', $req['time_period_id'])->where('schedule_date', date('schedule_date'))->where('organization_id', $req['organization_id'])->where('schedule_type', $schedule_type_map[$product_type])->first();
+            if (empty($schedulePeriod)) {
+                return out(null, 10013, '机构无该时间段的排班');
+            }
+            $docterSettings = DocterSetting::select(['service_num'])->where('org_id', $req['organization_id'])->where('type', $req['schedule_type'])->first();
+            if ($docterSettings['service_num'] <= $schedulePeriod['order_sn']) {
+                return out(null, 10015, '机构该时间段已经预约满了');
+            }
+        }
+
         if ($req['payment_type'] == 2) {
             if ($user['balance'] < $payment_amount) {
                 return out(null, 601, '余额不足');