Swdz-WangHaiJun 4 anni fa
parent
commit
cbd94a70be
1 ha cambiato i file con 35 aggiunte e 33 eliminazioni
  1. 35 33
      app/Community/Controllers/ApiController.php

+ 35 - 33
app/Community/Controllers/ApiController.php

xqd xqd xqd xqd xqd xqd xqd xqd
@@ -112,11 +112,12 @@ class ApiController extends Controller
 
         $set_time = request('time');//时间
         $user = Admin::user();
-        $org_id = $user->org_id;
+
         $doc_id = $user->docter_id;
 
         $docter_id = request('docter_id');
-        $role = request('role');
+        $role = request('role',1);
+
 
         $is_docter = CdmsUsers::where('docter_id',$doc_id)->where('docter_id','!=','')->first();
 
@@ -126,8 +127,10 @@ class ApiController extends Controller
 
         if($is_docter){
             $role =2;
+            $org_id = request('org_id');
+        } else {
+            $org_id = $user->org_id;
         }
-
         $all_time = explode('至',$set_time);
         if(count($all_time) <2){
             return json_encode(['code'=>601,'msg'=>'缺少必要参数','data'=>'']);
@@ -137,6 +140,7 @@ class ApiController extends Controller
         $end_time  = intval(str_replace('-','',$all_time[1]));
         $first_day = strtotime($all_time[0]);
 //        DB::enableQueryLog();
+
         $sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time])
             ->where(['docter_id'=>$docter_id])
             ->pluck('id')
@@ -187,7 +191,6 @@ class ApiController extends Controller
         $times[] = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start'])->where('end_time_period','<=',$schedule_config['morning_end'])->pluck('id')->toArray();
         $times[] = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start'])->where('end_time_period','<=',$schedule_config['afternoon_end'])->pluck('id')->toArray();
         $times[] = TimePeriod::where('start_time_period','>=',$schedule_config['evening_start'])->where('end_time_period','<=',$schedule_config['evening_end'])->pluck('id')->toArray();
-
         if(empty($sche_dule)){
             return ['code'=>200,'msg'=>'ok','data'=>['docter'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
         }
@@ -204,13 +207,10 @@ class ApiController extends Controller
 
                     //检测上午
                     $is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$times[$j])
-                        ->where('docter_id','!=',$docter_id)->count();
-//                    echo '<pre>';
-//                    print_r(DB::getQueryLog());
-//                    echo '</pre>';
-//                    dd($is_mo_have);
+                        ->where('organization_id','!=',$org_id)->where('docter_id',$docter_id)->count();
                     $is_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$times[$j])
-                        ->where('docter_id',$docter_id)->count();
+                        ->where('organization_id','=',$org_id)->where('docter_id',$docter_id)->count();
+
                     if($is_self){
                         $sche_dule_arr[$j][$week_arr[$i]] = true;
                     }
@@ -221,18 +221,15 @@ class ApiController extends Controller
             }
         } else {
 
-            $ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id');
             $name = Docter::where('id',$docter_id)->value('name');
             $user_id = $docter_id;
             for ($i=0; $i<=6; $i++){
                 $str_time =  date('Y-m-d',($first_day + $i * 86400));
                 for($j=0;$j<=2;$j++){
-
                     $is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$times[$j])
-                        ->where('organization_id','!=',$org_id)->where('docter_id','=',$docter_id)->count();
+                        ->where('organization_id','!=',$org_id)->where('docter_id',$docter_id)->count();
                     $is_mo_self = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$times[$j])
                         ->where('organization_id',$org_id)->where('docter_id',$docter_id)->count();
-
                     if($is_mo_self){
                         $sche_dule_arr[$j][$week_arr[$i]] = true;
                     }
@@ -273,13 +270,29 @@ class ApiController extends Controller
         }
 
         $all_time = explode('至',$set_time);
-        $schedule_id = Schedule::where(['organization_id'=>$org_id,'docter_id'=>$docter_id,'schedule_date'=>$all_time[0]])->value('id');
         if(count($all_time) <2) {
             return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
         }
+        $first_day = strtotime($all_time[0]);
         $start_time  = intval(str_replace('-','',$all_time[0]));
         $end_time  = intval(str_replace('-','',$all_time[1]));
-        $first_day = strtotime($start_time);
+        $schedule_id = Schedule::where(['docter_id'=>$docter_id])->whereBetween('schedule_day',[$start_time,$end_time])->pluck('id');
+        if(empty($schedule_id) || count($schedule_id) < 7){
+//           Schedule::whereIn('id',$schedule_id)->delete();
+//           SchedulePeriod::whereIn('schedule_id',$schedule_id);
+            for($i = 0;$i<=6;$i++){
+                $real_time = $first_day + (86400 * $i);
+                $schedule=  [
+                    'schedule_date'=> date('Y-m-d',$real_time),
+                    'schedule_day'=>intval(str_replace('-','',date('Y-m-d H:i:s',$real_time))),
+                    'docter_id'=>$docter_id
+                ] ;
+                Schedule::Insert($schedule);
+//                echo '日期:'.date('Y-m-d H:i:s',$real_time).'<br>';
+//                echo $i;
+            }
+        }
+
         //周字段映射
         $week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
 //        $data = [
@@ -334,50 +347,39 @@ class ApiController extends Controller
                 $time_period[] = $t;
             }
         }
-
         $data[0] = array_values(object_array(json_decode($data[0])));
         $data[1] = array_values(object_array(json_decode($data[1])));
         $data[2] = array_values(object_array(json_decode($data[2])));
-
-        $mo_schedule = array_values($data[0]);
-        $af_schedule = array_values($data[1]);
-        $ev_schedule = array_values($data[2]);
-
-
         DB::beginTransaction();
         try {
+
             $schedule_insert = [
                 'organization_id'=>$org_id,
                 'docter_id'=>$docter_id,
                 'schedule_date'=>$all_time[0],
-                'schedule_day'=>$start_time,
                 'created_at'=>Carbon::now(),
                 'updated_at'=>Carbon::now(),
             ];
-            if(!$schedule_id){
-                $schedule_id = Schedule::insertGetId($schedule_insert);
-            }
-            unset($schedule_insert['schedule_day']);
-            $schedule_insert['schedule_id'] =$schedule_id;
             $info = [];
             for ($i = 1 ;$i<=3;$i++){
                 $mo_schedule = array_values($data[$i-1]);
                 foreach ($mo_schedule as $key=>$val){
                     if($key==0) continue;
-                    $schedule_date = $start_time + $key;
-                    $strtime = "$schedule_date";
                     $time_insert = $schedule_insert;
                     $time_insert['type'] = $i;
 
                     $schedule_time = $times[$i];
                     $real_time = date('Y-m-d',($first_day + ($key-1)*86400));
+                    $schedule_id = Schedule::where(['docter_id'=>$docter_id,'schedule_date'=>$real_time])->value('id');
+                    if(empty($schedule_id)) continue;
+                    $time_insert['schedule_id'] = $schedule_id;
                     $time_insert['schedule_date'] = $real_time;
                     $time_insert['me_sure'] = 1;
 
                     if($val == true){
-                        $data['schedule_date'] = $start_time ;
+                        $data['schedule_date'] = $start_time;
                         foreach ($schedule_time as $time_id){
-                            $is_have = SchedulePeriod::where(['time_period_id'=>$time_id,'type'=>($i),'schedule_date'=>$real_time,'organization_id'=>$org_id])->value('id');
+                            $is_have = SchedulePeriod::where(['time_period_id'=>$time_id,'type'=>($i),'schedule_date'=>$real_time])->value('id');
                             if($is_have) break;
                             $time_insert['time_period_id'] = $time_id;
                             $info[] = $time_insert;