601,'msg'=>'缺少必要参数','data'=>'']); } else{ echo 'what happend'; } $all_time = explode('至',$set_time); if(count($all_time) <2){ return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']); } $start_time = intval(str_replace('-','',$all_time[0])); $end_time = intval(str_replace('-','',$all_time[1])); // DB::enableQueryLog(); $sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time]) ->where(['docter_id'=>$docter_id]) ->pluck('id') ->toArray(); // echo '
';
//        print_r(DB::getQueryLog());
//        echo '
'; //dd($sche_dule); $sche_dule_arr = [ [ 'date'=>"上午", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ], [ 'date'=>"下午", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ], [ 'date'=>"晚上", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ] ]; //周字段映射 $week_arr = ['mondy','tuesday','wednesday','thursday','friday','saturday','sunday']; //时段区间id $schedule_config = SystemConfig::get('docter_config'); $mo = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start'])->where('end_time_period','<=',$schedule_config['morning_end'])->pluck('id')->toArray(); $af = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start'])->where('end_time_period','<=',$schedule_config['afternoon_end'])->pluck('id')->toArray(); $ev = 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 ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]]; } $role = 2; if($role == 1){ $ids = DocterOrganization::where(['organization_id'=>$org_id])->pluck('docter_id'); $list = Docter::whereIn('id',$ids)->get(['id','name'])->toArray(); $user_id = $org_id; for ($i = $start_time; $i<=$end_time; $i++){ $j = 0; $strtime = "$i"; $str_time = substr($strtime,0,4).'-'.substr($strtime,4,2).'-'.substr($strtime,6,2); //检测上午 $is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo) ->where('organization_id','!=',$org_id)->count(); if($is_mo_have){ $sche_dule_arr[0][$week_arr[$j]] = 'other'; } //检测下午 $is_af_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af) ->where('organization_id','!=',$org_id)->count(); if($is_af_have){ $sche_dule_arr[1][$week_arr[$j]] = 'other'; } //检测晚上 $is_ev_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev) ->where('organization_id','!=',$org_id)->count(); if($is_ev_have){ $sche_dule_arr[2][$week_arr[$j]] = 'other'; } } } else { $ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id'); $list = Organization::whereIn('id',$ids)->get(['id','name'])->toArray(); $user_id = $docter_id; for ($i = $start_time; $i<=$end_time; $i++){ $j = 0; $strtime = "$i"; $str_time = substr($strtime,0,4).'-'.substr($strtime,4,2).'-'.substr($strtime,6,2); //检测上午 $is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo) ->where('organization_id','!=',$org_id)->where('docter_id','!=',$docter_id)->count(); if($is_mo_have){ $sche_dule_arr[0][$week_arr[$j]] = 'other'; } //检测下午 $is_af_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af) ->where('organization_id','!=',$org_id)->where('docter_id','!=',$docter_id)->count(); if($is_af_have){ $sche_dule_arr[1][$week_arr[$j]] = 'other'; } //检测晚上 $is_ev_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev) ->where('organization_id','!=',$org_id)->where('docter_id','!=',$docter_id)->count(); if($is_ev_have){ $sche_dule_arr[2][$week_arr[$j]] = 'other'; } } } // "morning_start" => "09:00" // "morning_end" => "12:00" // "afternoon_start" => "13:00" // "afternoon_end" => "18:00" // "evening_start" => "19:00" // "evening_end" => "20:00" $data['docter'] = $sche_dule_arr; $data['list'] = array_column($list,'name','id'); $data['role'] = $role; $data['user_id'] = $user_id; return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data])); } public function setDocChedule() { $docter_id = request('docter_id'); $org_id = request('org_id'); $role = request('role'); $set_time = request('schdule_date'); $shcdule_id = request('schdule_id'); $set_time = '2020-11-30至2020-12-06'; $all_time = explode('至',$set_time); if(count($all_time) <2) { return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']); } $start_time = intval(str_replace('-','',$all_time[0])); $end_time = intval(str_replace('-','',$all_time[1])); //周字段映射 $week_arr = ['mondy','tuesday','wednesday','thursday','friday','saturday','sunday']; $data = [ [ 'date'=>"上午", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ], [ 'date'=>"下午", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ], [ 'date'=>"晚上", 'mondy'=>true, 'tuesday'=>true, 'wednesday'=>true, 'thursday'=>true, 'friday'=>true, 'saturday'=>true, 'sunday'=>true, ] ]; //时段区间id $schedule_config = SystemConfig::get('docter_config'); $mo = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start']) ->where('end_time_period','<=',$schedule_config['morning_end']) ->pluck('id')->toArray(); $af = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start']) ->where('end_time_period','<=',$schedule_config['afternoon_end']) ->pluck('id')->toArray(); $ev = TimePeriod::where('start_time_period','>=',$schedule_config['evening_start']) ->where('end_time_period','<=',$schedule_config['evening_end']) ->pluck('id')->toArray(); $mo_schedule = array_values($data[0]); $af_schedule = array_values($data[1]); $ev_schedule = array_values($data[2]); $org_id = 1; $docter_id = 47; DB::beginTransaction(); try { if(!$shcdule_id){ $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(), ]; $shcdule_id = Schedule::insertGetId($schedule_insert); } unset($schedule_insert['schedule_day']); $schedule_insert['schedule_id'] =$shcdule_id; for ($i = 0 ;$i<=2;$i++){ $mo_schedule = array_values($data[$i]); foreach ($mo_schedule as $key=>$val){ if($key==0) continue; $schedule_date = $start_time + $key; $strtime = "$schedule_date"; $first_day = strtotime('this week'); $time_insert = $schedule_insert; $time_insert['type'] = $i; $real_time = date('Y-m-d',($first_day + ($key-1)*86400)); $time_insert['schedule_date'] = $real_time; $time_insert['me_sure'] = 1; foreach ($mo as $time_id){ $is_have = SchedulePeriod::where(['time_period_id'=>$time_id,'type'=>1,'docter_id'=>$docter_id,'schedule_date'=>$real_time]); if(!$is_have){ $time_insert['time_period_id'] = $time_id; $info[] = $time_insert; SchedulePeriod::insert($time_insert); } } if($val){ $data['schedule_date'] = $start_time ; } } } DB::commit(); } catch (Exception $e){ DB::rollBack(); Log::info($e->getMessage()); } return json_encode(['status'=>200,'msg'=>'插入成功','data'=>count($info)]); } public function getScheduleInfo () { $docter_id = request('docter_id'); $org_id = request('org_id'); $docter_id = 47; $org_id = 1; $role = 1; if($role == 1){ $ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id'); $list = Organization::whereIn('id',$ids)->get(['id','name'])->toArray(); $user_id = $org_id; } else { $ids = DocterOrganization::where(['docter_id'=>$docter_id])->pluck('organization_id'); $list = Organization::whereIn('id',$ids)->get(['id','name'])->toArray(); $user_id = $docter_id; } $data['user_id'] = $user_id; $data['role'] = $role; $data['list'] = $list; return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data])); } public function get_chat_order() { $org_id = 1; $docter_id = 1; $list = Order::where(['organization_id'=>$org_id,'docter_id'=>$docter_id,'order_status'=>3])->with('orderUser')->distinct('user_id')->get('user_id'); foreach ($list as $val){ $user_list[] = [ 'user_id'=>$val->user_id, 'avatar'=>$val->orderUser->avatar, 'name'=>$val->orderUser->nickname, ]; } $data['docter_id'] = $docter_id; $data['order_list'] = $user_list; return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data])); } }