浏览代码

用户设置和月排班接口

Swdz-WangHaiJun 4 年之前
父节点
当前提交
b152724198
共有 3 个文件被更改,包括 607 次插入10 次删除
  1. 73 8
      app/Community/Controllers/ApiController.php
  2. 528 2
      app/Http/Controllers/ScheDuleController.php
  3. 6 0
      routes/web.php

+ 73 - 8
app/Community/Controllers/ApiController.php

xqd xqd xqd xqd xqd
@@ -54,10 +54,10 @@ class ApiController extends Controller
     public function  sendmsg(){
 
         $config = [
-            'app_id' => 'wx1c2357232cd25f65',
-            'secret' => 'c8cab53e4e52234ed1bc2abbdeaba57d',
-//            'app_id' => 'wx13bedfcc62e9bab0',
-//            'secret' => '175e5518b6426dd12d3096f24ca68fb8',
+//            'app_id' => 'wx1c2357232cd25f65',
+//            'secret' => 'c8cab53e4e52234ed1bc2abbdeaba57d',
+            'app_id' => 'wx13bedfcc62e9bab0',
+            'secret' => '175e5518b6426dd12d3096f24ca68fb8',
             'response_type' => 'array'
 //            oVxTzvgYlGktIDZXwfLMLQ01Tr5s
         ];
@@ -80,7 +80,7 @@ class ApiController extends Controller
 
 
 //        oVxTzvgYlGktIDZXwfLMLQ01Tr5s 自己 oVxTzvhu4gs4RyCt4kJDRWOgsUXw周璐 oVxTzvgu4XnI5F2aF7DcrbJIp5fI 间行 oVxTzvl8DYQblYmLCIK3UXW_8jAY 落雨桐
-        $renyuan = ['oVxTzvhu4gs4RyCt4kJDRWOgsUXw','oVxTzvgYlGktIDZXwfLMLQ01Tr5s']; //周璐
+        $renyuan = ['o481Y5AtcbnOQef1vc4rL4TwYpDU','oVxTzvgYlGktIDZXwfLMLQ01Tr5s']; //周璐
 //        $renyuan = ['oVxTzvvTnnbjEE9jsalOYj4mtp6U','oVxTzvgu4XnI5F2aF7DcrbJIp5fI']; //简行
         $app = Factory::officialAccount($config );
 //        $res = $app->broadcasting->status(3147483751);
@@ -94,7 +94,6 @@ class ApiController extends Controller
 //  "errmsg" => "invalid openid rid: 5fc35ef3-7f3b3ef9-14537bc7"
 //]
         $user = $app->user->get('oVxTzvgYlGktIDZXwfLMLQ01Tr5s');
-        dd($user);
         $res = $app->template_message->send([
             'touser' => 'oVxTzvgYlGktIDZXwfLMLQ01Tr5s',
             'template_id' => '3LUhWGlyiljxrT3Jh8orwQZ2LSHjfRs9SIHaB40O6q0',
@@ -817,6 +816,7 @@ class ApiController extends Controller
         return apiReturn(200,'ok',$k);
     }
 
+    //月排班
     public function setmonthScheduel()
     {
         $docter_id = request('docter_id',1);
@@ -829,9 +829,74 @@ class ApiController extends Controller
         }
         $start_time = date('Y-m-d', strtotime($date));
         $end_time = date('Y-m-d',strtotime($date.'+1 month'));
-        $self_schedule = SelfSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])->whereBetween('schedule_date',[$start_time,$end_time])->get()->GroupBy('week')->toArray();
+        $docter_setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
+
+        $self_schedule = SelfSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])->whereBetween('schedule_date',[$start_time,$end_time])->distinct('type')->get(['type','week'])->GroupBy('week')->toArray();
         $week_schedule = WeekSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])->orderby('week')->distinct('type')->get(['type','week'])->GroupBy('week')->toArray();
+
+        for ($i=1;$i<=7;$i++){
+            $s = [];
+            $w=[];
+            if(!empty($self_schedule[$i])){
+                $s =array_column($self_schedule[$i],'type');
+            }
+            if(!empty($week_schedule[$i])){
+                $w =array_column($week_schedule[$i],'type');
+            }
+            if(!empty($s) || !empty($w)){
+                $sn = $s+$w;
+                $all_schedule[$i] = $sn;
+            } else {
+                $all_schedule[$i] = [];
+            }
+        }
+
+        if(!empty($docter_setting)){
+            $time_period = object_array(json_decode($docter_setting->service_time));
+            $times[1] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[0]['startTime']),intval($time_period[0]['endTime'])])->pluck('id')->toArray();
+            $times[2] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['startTime']),intval($time_period[1]['endTime'])])->pluck('id')->toArray();
+            $times[3] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['startTime']),intval($time_period[2]['endTime'])])->pluck('id')->toArray();
+        }
+
+        $start_time = strtotime($date);
+        $month_day = date("t",strtotime($date));
+        $begainDay = date("d",time()) - 1;
+
+        DB::beginTransaction();
+        try {
+            for($i=$begainDay;$i<=$month_day;$i++){
+                $today = $start_time + $i*86400;
+                $nutoday = intval(date('Ymd',$today));
+                $week = date('w',$today);
+                if($week == 0){
+                    $every_day = $all_schedule[7];
+                } else {
+                    $every_day = $all_schedule[$week];
+                }
+                $schedule_data = ['docter_id'=>$docter_id,'schedule_date'=>date('Y-m-d',$today),'schedule_day'=>$nutoday,'organization_id'=>$org_id];
+                $is_have_schedule = Schedule::where(['docter_id'=>$docter_id,'schedule_date'=>date('Y-m-d',$today),'organization_id'=>$org_id])->first();
+                dd($is_have_schedule);
+                $schedule_id = Schedule::insertGetId($schedule_data);
+                foreach ($every_day as $type){
+                    foreach ($times[$type] as $tp){
+                        $data = ['docter_id'=>$docter_id,'schedule_date'=>date('Y-m-d',$today),'organization_id'=>$org_id,'time_period_id'=>$tp,'type'=>$type,'schedule_id'=>$schedule_id];
+                        SchedulePeriod::insert($data);
+                    }
+                }
+                DB::commit();
+            }
+        } catch (\Exception $e){
+             dd('第'.$e->getLine().'行报错: '.$e->getMessage());
+             DB::rollBack();
+             return apiReturn('603','插入失败');
+        }
+
+
+        echo '<pre>';
+        print_r($self_schedule);
+        echo '</pre>';
+
         dd($week_schedule);
-        $data = $this->getWeekSchedule();
+
     }
 }

+ 528 - 2
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd xqd xqd
@@ -9,12 +9,15 @@ use App\Models\CdmsUsers;
 use App\Models\CommunitySchedule;
 use App\Models\Docter;
 use App\Models\DocterOrganization;
+use App\Models\DocterSetting;
 use App\Models\Order;
 use App\Models\Organization;
 use App\Models\Schedule;
 use App\Models\SchedulePeriod;
+use App\Models\SelfSchedule;
 use App\Models\SystemConfig;
 use App\Models\TimePeriod;
+use App\Models\WeekSchedule;
 use Carbon\Carbon;
 use Encore\Admin\Admin;
 use Illuminate\Support\Facades\DB;
@@ -47,7 +50,7 @@ class ScheDuleController  extends Controller
     }
 
     //获取排班页面
-    public function getComSchedule()
+    public function getComScheduleback()
     {
 
         $set_time = request('time');//时间
@@ -200,8 +203,105 @@ class ScheDuleController  extends Controller
         return  (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
     }
 
+    //获取周排班
+    public function getComSchedule(){
+        $docter_id = request('docter_id',1);
+        $org_id = request('org_id',1);
+        $type = request('type',2);
+        $role = request('role',2);
+        if(empty($docter_id) || empty($type)){
+            return apiReturn(604,'缺少必要参数');
+        }
+
+        $docter_id = 1;
+        $docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'type'=>$type])->first();
+        $times = [];
+        if(!empty($docter_setting)){
+            $time_period = object_array(json_decode($docter_setting->service_time));
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[0]['startTime']),intval($time_period[0]['endTime'])])->pluck('id')->toArray();
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['startTime']),intval($time_period[1]['endTime'])])->pluck('id')->toArray();
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['startTime']),intval($time_period[2]['endTime'])])->pluck('id')->toArray();
+        }
+
+        if(count($times) < 3){
+            dd('no have times');
+        }
+
+        //周字段映射
+        $week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
+        $data = [
+            [
+                'date'=>"上午",
+                'monday'=>false,
+                'tuesday'=>false,
+                'wednesday'=>false,
+                'thursday'=>false,
+                'friday'=>false,
+                'saturday'=>false,
+                'sunday'=>false,
+            ],
+            [
+                'date'=>"下午",
+                'monday'=>false,
+                'tuesday'=>false,
+                'wednesday'=>false,
+                'thursday'=>false,
+                'friday'=>false,
+                'saturday'=>false,
+                'sunday'=>false,
+            ],
+            [
+                'date'=>"晚上",
+                'monday'=>false,
+                'tuesday'=>false,
+                'wednesday'=>false,
+                'thursday'=>false,
+                'friday'=>false,
+                'saturday'=>false,
+                'sunday'=>false,
+            ]
+        ];
+        if($role == 2){
+            for ($i=0;$i<6;$i++){
+                for($j=0;$j<=2;$j++){
+                    $is_self_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'organization_id'=>$org_id,'week'=>$i+1])->whereIn('time_period_id',$times[$j])->count();
+                    $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('organization_id','!=',$org_id)->whereIn('time_period_id',$times[$j])->count();
+                    if($is_self_have){
+                        $data[$j][$week_arr[$i]] = true;
+                    }
+                    if($is_other_have){
+                        $data[$j][$week_arr[$i]] = 'other';
+                    }
+                }
+            }
+        } else {
+            for ($i=0;$i<6;$i++){
+                for($j=0;$j<=2;$j++){
+                    $is_self_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'organization_id'=>$org_id,'week'=>$i+1])->whereIn('time_period_id',$times[$j])->count();
+                    $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('docter_id','!=',$docter_id)->whereIn('time_period_id',$times[$j])->count();
+                    if($is_self_have){
+                        $data[$j][$week_arr[$i]] = true;
+                    }
+                    if($is_other_have){
+                        $data[$j][$week_arr[$i]] = 'other';
+                    }
+                }
+            }
+        }
+
+        $name = Docter::where('id',$docter_id)->value('name');
+
+        $shcedule_data['docter'] = $data;
+        $shcedule_data['name'] = $name;
+
+        $shcedule_data['role'] = $role;
+        $shcedule_data['user_id'] = $docter_id;
+
+        return apiReturn(200,'ok',$shcedule_data);
+    }
+
     //编辑排班
-    public function setDocChedule()
+    public function setDocCheduleback()
     {
         $docter_id = request('docter_id');
         $org_id = request('org_id');
@@ -341,6 +441,371 @@ class ScheDuleController  extends Controller
         return json_encode(['status'=>200,'msg'=>'插入成功','data'=>count($info)]);
     }
 
+    public function setDocChedule()
+    {
+        $docter_id = request('docter_id',1);
+        $org_id = request('org_id',1);
+        $type = request('type',2);
+        if(empty($docter_id) || empty($org_id) || empty($type)){
+            return apiReturn(601,'缺少必要参数');
+        }
+        $data = request('schedulingtime');
+        if(empty($org_id) || empty($docter_id) || $data){
+            return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
+        }
+
+        $docter_setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
+//        $data = [
+//            [
+//                'date'=>"上午",
+//                'monday'=>false,
+//                'tuesday'=>true,
+//                'wednesday'=>false,
+//                'thursday'=>false,
+//                'friday'=>true,
+//                'saturday'=>false,
+//                'sunday'=>false,
+//            ],
+//            [
+//                'date'=>"下午",
+//                'monday'=>false,
+//                'tuesday'=>false,
+//                'wednesday'=>false,
+//                'thursday'=>false,
+//                'friday'=>false,
+//                'saturday'=>true,
+//                'sunday'=>false,
+//            ],
+//            [
+//                'date'=>"晚上",
+//                'monday'=>true,
+//                'tuesday'=>true,
+//                'wednesday'=>false,
+//                'thursday'=>false,
+//                'friday'=>false,
+//                'saturday'=>false,
+//                'sunday'=>false,
+//            ]
+//        ];
+        if(!empty($docter_setting)){
+            $time_period = object_array(json_decode($docter_setting->service_time));
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[0]['startTime']),intval($time_period[0]['endTime'])])->pluck('id')->toArray();
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['startTime']),intval($time_period[1]['endTime'])])->pluck('id')->toArray();
+            $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['startTime']),intval($time_period[2]['endTime'])])->pluck('id')->toArray();
+        }
+
+
+        $week_data = [
+            'schedule_type'=>$type,
+            'organization_id'=>$org_id,
+            'docter_id'=>$docter_id
+        ];
+        $k = 0;
+        DB::beginTransaction();
+        $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])));
+
+
+//        $data[0] = array_values($data[0]);
+//        $data[1] = array_values($data[1]);
+//        $data[2] = array_values($data[2]);
+        try {
+            for($i=0;$i<=2;$i++){
+                $schedule_data = $data[$i];
+                foreach ($schedule_data as $key=>$schedule){
+                    if($key == 0) continue;
+                    $week_data ['type'] = $i+1;
+                    $week_data ['week'] = $key;
+                    if($schedule == true){
+//                        echo '时间列类型'.($i+1).'----'.$key.'星期数'.'<br>';
+                        foreach ($times[$i] as $id){
+                            $week_data['time_period_id'] = $id;
+                            $is_have = WeekSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id,'schedule_type'=>$type,'type'=>$i+1,'week'=>$key])->where('time_period_id',$id)->value('id');
+                            $is = $is_have?'有':'沒有';
+//                            echo '时间段id'.$id.'----'.$is.'</br>';
+                            if($is_have) continue;
+                            $k++;
+                            WeekSchedule::insert($week_data);
+                        }
+                    } else {
+                        $is_have = WeekSchedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id, 'schedule_type' => $type,'type'=>$i+1,'week'=>$key])->whereIn('time_period_id', $times[$i])->value('id');
+                        if($is_have) WeekSchedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id, 'schedule_type' => $type,'type'=>$i+1,'week'=>$key])->whereIn('time_period_id', $times[$i])->delete();
+                    }
+
+                }
+            }
+            DB::commit();
+        } catch (\Exception $e){
+            DB::rollBack();
+            return apiReturn(602,$e->getLine().'行'.$e->getMessage());
+        }
+        return apiReturn(200,'ok',$k);
+    }
+
+    //设置自己排班
+    public function setSelfSchedule()
+    {
+        $docter_id = request('docter_id');
+        $org_id = request('org_id');
+        $date = request('date');
+        $type = request('type','1,2'); //1 上午,2 下午,3 晚上
+        $schedule_type = request('schedule_type');
+        $self_setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
+        $times = [];
+        if(!empty($self_setting)){
+            $time_period = object_array(json_decode($self_setting->service_time));
+            $times[1] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[0]['startTime']),intval($time_period[0]['endTime'])])->pluck('id')->toArray();
+            $times[2] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['startTime']),intval($time_period[1]['endTime'])])->pluck('id')->toArray();
+            $times[3] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['startTime']),intval($time_period[2]['endTime'])])->pluck('id')->toArray();
+        }
+        if(count($times) <3){
+            return apiReturn(602,'请设置真确的时间段');
+        }
+
+        if(empty($docter_id) || empty($org_id) || empty('date') || empty($type) || empty($schedule_type)){
+            return apiReturn(601,'缺少必要参数');
+        }
+
+        if(strtotime($date) < strtotime('tomorrow')){
+            return apiReturn(602,'只能排明天以後的');
+        }
+
+        $week = date("w",strtotime($date));
+        $types = explode(',',$type);
+        if(!empty($types)){
+            foreach ($types  as $t){
+                $self_schedule = [
+                    'schedule_date'=>$date,
+                    'week'=>intval($week),
+                    'schedule_type'=>$schedule_type,
+                    'organization_id'=>$org_id,
+                    'docter_id'=>$docter_id,
+                    'type'=>intval($t)
+                ];
+                foreach ($times[intval($t)] as $id){
+                    $self_schedule['time_period_id'] = $id;
+                    $is_have = SelfSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id,'schedule_date'=>$date,'type'=>intval($t),'week'=>$week,'time_period_id'=>$id])->value('id');
+                    if($is_have) continue;
+                    SelfSchedule::insert($self_schedule);
+                }
+            }
+
+            $cha = array_diff([1,2,3],$types);
+            foreach ($cha as $t){
+                SelfSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id,'schedule_date'=>$date,'type'=>intval($t)])->delete();
+            }
+        }
+        return apiReturn(200,'ok');
+    }
+
+    //更新用戶設置
+    public function updateDocterSetting()
+    {
+        $docter_id = request('docter_id',1);
+        $configData = request('configData');
+        $type = request('type');
+        if(empty($docter_id) || $configData){
+            return apiReturn(604,'参数错误');
+        }
+
+        $configData = [
+            'amEndTime'=>"11:30",
+            'amNum'=>20,
+            'amStartTime'=>"09:00",
+            'nightEndTime'=>"19:30",
+            'nightNum'=>8,
+            'nightStartTime'=>"11:30",
+            'pmEndTime'=>"16:00",
+            'pmNum'=>20,
+            'pmStartTime'=>"13:30",
+            'serviceNum'=>2,
+            'status'=>false,
+            'timeSpan'=>15,
+        ];
+
+        $setting  = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
+
+        $self_config = object_array(json_decode($setting['service_time']));
+        $is_new = [];
+//
+//        if(intval($configData['timeSpan']) != $setting['service_num']){
+//            $is_new[] = 4 ;
+//        }
+//
+//        if($configData['amStartTime'] != $self_config[1]['amStartTime'] ||  $configData['amEndTime'] != $self_config[1]['amEndTime']){
+//            $is_new[] = 1;
+//        }
+//
+//        if($configData['pmStartTime'] != $self_config[2]['pmStartTime'] ||  $configData['pmEndTime'] != $self_config[2]['pmEndTime']){
+//            $is_new[] = 2;
+//        }
+//
+//        if($configData['nightStartTime'] != $self_config[3]['nightStartTime'] ||  $configData['nightEndTime'] != $self_config[3]['nightEndTime']){
+//            $is_new[] = 3;
+//        }
+//
+//        configData: {
+//                amEndTime: "11:30",    //上午结束时间  string
+        //        amNum: 20,  //上午号源 Num
+        //        amStartTime: "09:00",   //上午开始时间  string
+        //        nightEndTime: "19:30",    //晚上结束时间   string
+        //        nightNum: 8,  //晚上号源  num
+        //        nightStartTime: "18:30",   //晚上开始时间 staring
+        //        pmEndTime: "16:00",   //下午结束时间   string
+        //        pmNum: 20,   //下午号源   num
+        //        pmStartTime: "13:30",   //下午开始时间  string
+        //        serviceNum: 2,    //同时服务人数   Num
+        //        showDayNumber: 7,   //可预约服务天数  Num
+        //        status: false,   //  是否开启  true false
+        //        timeSpan: "15",   // 就诊时长  string
+//      },
+        //添加时间段
+        $is_new = [1];
+        if(count($is_new) > 0){
+//            $data = ['docter_id'=>$docter_id,'am_start'=>'8:30','am_end'=>'11:30','pm_start'=>'12:00','pm_end'=>'15:00','ev_start'=>'19:00','ev_end'=>'22:00','service_time'=>15];
+//            $amtimes[] = explode(':',$configData['amStartTime']);
+//            $amtimes[] = explode(':',$configData['amEndTime']);
+//            $amcha = ($amtimes[1][0] - $amtimes[0][0])*60 +($amtimes[1][1] - $amtimes[0][1]);
+//            $amCount = $amcha/$data['service_time'];
+//            $amCount = intval(floor((strtotime($configData['amEndTime']) - strtotime($configData['amStartTime'])) / (60*$configData['timeSpan'])));
+
+//            $pmtimes[] = explode(':',$configData['pmStartTime']);
+//            $pmtimes[] = explode(':',$configData['pmEndTime']);
+//            $pmCount =intval(floor((strtotime($configData['pmEndTime']) - strtotime($configData['pmStartTime'])) / (60*$configData['timeSpan'])));
+//
+//
+//            $evtimes[] = explode(':',$configData['nightStartTime']);
+//            $evtimes[] = explode(':',$configData['nightEndTime']);
+//            $evcha = ($evtimes[1][0] - $evtimes[0][0])*60 +($evtimes[1][1] - $evtimes[0][1]);
+//            $evCount = $evcha/$configData['service_time'];
+            $amCount = $configData['amNum'];
+            $pmCount = $configData['pmNum'];
+            $evCount = $configData['nightNum'];
+
+
+            $today_id = Schedule::where(['docter_id'=>$docter_id])->where('schedule_date','=',date('Y-m-d'))->value('id');
+            if(in_array(4,$is_new)){
+                TimePeriod::where(['docter_id'=>$docter_id])->delete();
+                $schuedule_ids = Schedule::where(['docter_id'=>$docter_id])->where(['schedule_date','>',date('Y-m-d')])->pluck('id')->toArray();
+                SchedulePeriod::where(['docter_id'=>$docter_id])->whereIn('schedule_id',$schuedule_ids)->delete();
+
+                for($i=1;$i<=$amCount;$i++){
+                    $amdata = [
+                        'docter_id'=>$docter_id,
+                        'start_time_period'=> date('H:i',strtotime($configData['amStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                        'end_time_period'=> date('H:i',strtotime($configData['amStartTime']) + $i*$configData['timeSpan']*60),
+                    ];
+                    TimePeriod::insert($amdata);
+                }
+
+                for($i=1;$i<=$pmCount;$i++){
+                    $pmdata = [
+                        'docter_id'=>$docter_id,
+                        'start_time_period'=> date('H:i',strtotime($configData['pmStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                        'end_time_period'=> date('H:i',strtotime($configData['pmStartTime']) + $i*$configData['timeSpan']*60),
+                    ];
+                    TimePeriod::insert($pmdata);
+                }
+
+                for($i=1;$i<=$evCount;$i++){
+                    $evdata = [
+                        'docter_id'=>$docter_id,
+                        'start_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                        'end_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + $i*$configData['timeSpan']*60),
+                    ];
+                    TimePeriod::insert($evdata);
+                }
+            } else {
+                if(in_array(1,$is_new)){
+
+                    TimePeriod::where(['docter_id'=>$docter_id,'type'=>1])->delete();
+                    $old_ids = SelfSchedule::where(['docter_id'=>$docter_id,'type'=>1])->distinct('week')->pluck('week','type')->toArray();
+
+                    $schedule_ids = Schedule::where(['docter_id'=>$docter_id])->where(['schedule_date','>',date('Y-m-d')])->pluck('id')->toArray();
+                    SelfSchedule::where(['docter_id'=>$docter_id,'type'=>1])->whereIn('schedule_id',$schedule_ids)->delete();
+
+                    SchedulePeriod::where(['docter_id'=>$docter_id])->whereIn('schedule_id',$schedule_ids)->delete();
+                    for($i=1;$i<=$amCount;$i++){
+                        $amdata = [
+                            'docter_id'=>$docter_id,
+                            'start_time_period'=> date('H:i',strtotime($configData['amStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                            'end_time_period'=> date('H:i',strtotime($configData['amStartTime']) + $i*$configData['timeSpan']*60),
+                        ];
+                        TimePeriod::insert($amdata);
+                    }
+                }
+
+                if(in_array(2,$is_new)){
+                    for($i=1;$i<=$pmCount;$i++){
+                        $pmdata = [
+                            'docter_id'=>$docter_id,
+                            'start_time_period'=> date('H:i',strtotime($configData['pmStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                            'end_time_period'=> date('H:i',strtotime($configData['pmStartTime']) + $i*$configData['timeSpan']*60),
+                        ];
+                        TimePeriod::insert($pmdata);
+                    }
+                }
+
+                if(in_array(2,$is_new)) {
+                    for($i=1;$i<=$evCount;$i++){
+                        $evdata = [
+                            'docter_id'=>$docter_id,
+                            'start_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + ($i-1)*$configData['timeSpan']*60),
+                            'end_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + $i*$configData['timeSpan']*60),
+                        ];
+                        TimePeriod::insert($evdata);
+                    }
+                }
+            }
+        }
+//        {"1":{"amStartTime":"08:00","amEndTime":"12:00","amPerson":3},"2":{"pmStartTime":"14:00","pmEndTime":"18:00","pmPerson":5},"3":{"nightStartTime":"18:00","nightEndTime":"23:00","nightPerson":4}}
+        $config = [
+            1=>['amStartTime'=>$configData['amStartTime'],"amEndTime"=>$configData['amEndTime'],'amPerson'=>$configData['amNum']],
+            2=>["pmStartTime"=>$configData['pmStartTime'],"pmEndTime"=>$configData['pmEndTime'],'pmPerson'=>$configData['pmNum']],
+            3=>["nightStartTime"=>$configData['nightStartTime'],"nightEndTime"=>$configData['nightEndTime'],'nightPerson'=>$configData['nightNum']]
+        ];
+        $setting = [
+            'docter_id'=>$docter_id,
+            'type'=>$type,
+            'status'=>$configData['status'],
+            'show_days'=>$configData['serviceNum'],
+            'service_num'=>$configData['serviceNum'],
+            'service_times'=>$configData['timeSpan'],
+            'service_time'=>json_encode($config)
+        ];
+
+
+
+        //        configData: {
+//                amEndTime: "11:30",    //上午结束时间  string
+        //        amNum: 20,  //上午号源 Num
+        //        amStartTime: "09:00",   //上午开始时间  string
+        //        nightEndTime: "19:30",    //晚上结束时间   string
+        //        nightNum: 8,  //晚上号源  num
+        //        nightStartTime: "18:30",   //晚上开始时间 staring
+        //        pmEndTime: "16:00",   //下午结束时间   string
+        //        pmNum: 20,   //下午号源   num
+        //        pmStartTime: "13:30",   //下午开始时间  string
+        //        serviceNum: 2,    //同时服务人数   Num
+        //        showDayNumber: 7,   //可预约服务天数  Num
+        //        status: false,   //  是否开启  true false
+        //        timeSpan: "15",   // 就诊时长  string
+//      },
+        $is_have = DocterSetting::where(['docter_id'=>$docter_id])->value('id');
+        if($is_have){
+            DocterSetting::where(['docter_id'=>$docter_id])->update($setting);
+        } else {
+            DocterSetting::insert($setting);
+        }
+        return  apiReturn(200,'ok');
+    }
+    public function getDocterSetting()
+    {
+        $docter_id = request('docter_id',1);
+        $setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
+    }
+
     //获取用户信息
     public function getScheduleInfo()
     {
@@ -403,4 +868,65 @@ class ScheDuleController  extends Controller
         $data['order_list'] = $user_list;
         return  (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
     }
+
+    public function get_month_schedule()
+    {
+        $date  = request('date');
+        $start_time = strtotime($date);
+        //$start_time = strtotime(date('Y-m',time()));
+        $month_day = date("t",$start_time);
+        $types = [1=>1,2=>2,3=>3];
+
+        $status = [1=>true,2=>'other',3=>false];
+
+        for($i=0;$i<$month_day;$i++){
+              $now_time = $start_time + $i*86400;
+              $now_date = date('Y-m-d',$now_time);
+              $week = date('N',$now_time);
+              $arr = [
+                  1=>['status'=>false],
+                  2=>['status'=>false],
+                  3=>['status'=>false]
+              ];
+              if($i%2 == 0){
+                  $arr = [
+                      1=>['status'=>true],
+                      2=>['status'=>false],
+                      3=>['status'=>false]
+                  ];
+              }
+
+            if($i%3 == 0){
+                $arr = [
+                    1=>['status'=>true],
+                    2=>['status'=>true],
+                    3=>['status'=>'other']
+                ];
+            }
+
+            if($i%3 == 0){
+                $arr = [
+                    1=>['status'=>false],
+                    2=>['status'=>false],
+                    3=>['status'=>'other']
+                ];
+            }
+
+//              $su = rand(1,3);
+//              if($su == 0){
+//                  $arr = [];
+//              } else {
+//                  $arr = array_rand($types,$su);
+//                  if(!is_array($arr)) {
+//                      $arr = [
+//                          1=>['status'=>true],
+//                          2=>['status'=>'other'],
+//                          3=>['status'=>false]
+//                      ];
+//                  }
+//              }
+              $all_time[] = ['date'=>($i+1),'day'=>$now_date,'schedulelingList'=>$arr,'week'=>$week];
+        }
+        return apiReturn(200,'ok',$all_time);
+    }
 }

+ 6 - 0
routes/web.php

xqd
@@ -20,7 +20,13 @@ Route::get('/api/getComSchedule', 'ScheDuleController@getComSchedule');
 Route::get('/getComSchedule', 'ScheDuleController@getComSchedule');
 Route::get('/getChatOrder', 'ScheDuleController@get_chat_order');
 Route::get('/api/setDocChedule', 'ScheDuleController@setDocChedule');
+Route::get('/api/getDocterSetting', 'ScheDuleController@getDocterSetting');
 Route::get('/setDocChedule', 'ScheDuleController@setDocChedule');
+
+
+Route::get('/api/get_month_schedule', 'ScheDuleController@get_month_schedule');
+Route::get('/api/update_docter_setting', 'ScheDuleController@updateDocterSetting');
+
 //用户信息
 Route::get('/api/getScheduleInfo', 'ScheDuleController@getScheduleInfo');
 Route::get('/getScheduleInfo', 'ScheDuleController@getScheduleInfo');