|
@@ -9,12 +9,15 @@ use App\Models\CdmsUsers;
|
|
use App\Models\CommunitySchedule;
|
|
use App\Models\CommunitySchedule;
|
|
use App\Models\Docter;
|
|
use App\Models\Docter;
|
|
use App\Models\DocterOrganization;
|
|
use App\Models\DocterOrganization;
|
|
|
|
+use App\Models\DocterSetting;
|
|
use App\Models\Order;
|
|
use App\Models\Order;
|
|
use App\Models\Organization;
|
|
use App\Models\Organization;
|
|
use App\Models\Schedule;
|
|
use App\Models\Schedule;
|
|
use App\Models\SchedulePeriod;
|
|
use App\Models\SchedulePeriod;
|
|
|
|
+use App\Models\SelfSchedule;
|
|
use App\Models\SystemConfig;
|
|
use App\Models\SystemConfig;
|
|
use App\Models\TimePeriod;
|
|
use App\Models\TimePeriod;
|
|
|
|
+use App\Models\WeekSchedule;
|
|
use Carbon\Carbon;
|
|
use Carbon\Carbon;
|
|
use Encore\Admin\Admin;
|
|
use Encore\Admin\Admin;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
@@ -47,7 +50,7 @@ class ScheDuleController extends Controller
|
|
}
|
|
}
|
|
|
|
|
|
//获取排班页面
|
|
//获取排班页面
|
|
- public function getComSchedule()
|
|
|
|
|
|
+ public function getComScheduleback()
|
|
{
|
|
{
|
|
|
|
|
|
$set_time = request('time');//时间
|
|
$set_time = request('time');//时间
|
|
@@ -200,8 +203,105 @@ class ScheDuleController extends Controller
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
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');
|
|
$docter_id = request('docter_id');
|
|
$org_id = request('org_id');
|
|
$org_id = request('org_id');
|
|
@@ -341,6 +441,371 @@ class ScheDuleController extends Controller
|
|
return json_encode(['status'=>200,'msg'=>'插入成功','data'=>count($info)]);
|
|
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()
|
|
public function getScheduleInfo()
|
|
{
|
|
{
|
|
@@ -403,4 +868,65 @@ class ScheDuleController extends Controller
|
|
$data['order_list'] = $user_list;
|
|
$data['order_list'] = $user_list;
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
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);
|
|
|
|
+ }
|
|
}
|
|
}
|