|
@@ -6,13 +6,19 @@ namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
|
|
use App\Models\CommunitySchedule;
|
|
use App\Models\CommunitySchedule;
|
|
|
|
+use App\Models\Docter;
|
|
|
|
+use App\Models\DocterOrganization;
|
|
use App\Models\Order;
|
|
use App\Models\Order;
|
|
|
|
+use App\Models\Organization;
|
|
use App\Models\Schedule;
|
|
use App\Models\Schedule;
|
|
use App\Models\SchedulePeriod;
|
|
use App\Models\SchedulePeriod;
|
|
use App\Models\SystemConfig;
|
|
use App\Models\SystemConfig;
|
|
use App\Models\TimePeriod;
|
|
use App\Models\TimePeriod;
|
|
|
|
+use Carbon\Carbon;
|
|
use Encore\Admin\Admin;
|
|
use Encore\Admin\Admin;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
+use Illuminate\Support\Facades\Log;
|
|
|
|
+use mysql_xdevapi\Exception;
|
|
use phpDocumentor\Reflection\DocBlock\Description;
|
|
use phpDocumentor\Reflection\DocBlock\Description;
|
|
|
|
|
|
class ScheDuleController extends Controller
|
|
class ScheDuleController extends Controller
|
|
@@ -21,16 +27,15 @@ class ScheDuleController extends Controller
|
|
public function getComSchedule()
|
|
public function getComSchedule()
|
|
{
|
|
{
|
|
|
|
|
|
- $time = TimePeriod::get(['id','start_time_period','end_time_period']);
|
|
|
|
-
|
|
|
|
$set_time = request('Schedulingtime');//时间
|
|
$set_time = request('Schedulingtime');//时间
|
|
$org_id = request('mechanism');//机构
|
|
$org_id = request('mechanism');//机构
|
|
$docter_id = request('docter_id');//医生
|
|
$docter_id = request('docter_id');//医生
|
|
|
|
|
|
|
|
|
|
$set_time = '2020-11-30至2020-12-06';
|
|
$set_time = '2020-11-30至2020-12-06';
|
|
- $org_id = 2;
|
|
|
|
|
|
+ $org_id = 1;
|
|
$docter_id = 47;
|
|
$docter_id = 47;
|
|
|
|
+ $role = 1;
|
|
|
|
|
|
if(empty($set_time) || empty($org_id) || empty($docter_id)){
|
|
if(empty($set_time) || empty($org_id) || empty($docter_id)){
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
@@ -47,10 +52,10 @@ class ScheDuleController extends Controller
|
|
$start_time = intval(str_replace('-','',$all_time[0]));
|
|
$start_time = intval(str_replace('-','',$all_time[0]));
|
|
$end_time = intval(str_replace('-','',$all_time[1]));
|
|
$end_time = intval(str_replace('-','',$all_time[1]));
|
|
// DB::enableQueryLog();
|
|
// DB::enableQueryLog();
|
|
-// $sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time])
|
|
|
|
-// ->where(['docter_id'=>$docter_id])
|
|
|
|
-// ->pluck('id')
|
|
|
|
-// ->toArray();
|
|
|
|
|
|
+ $sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time])
|
|
|
|
+ ->where(['docter_id'=>$docter_id])
|
|
|
|
+ ->pluck('id')
|
|
|
|
+ ->toArray();
|
|
// echo '<pre>';
|
|
// echo '<pre>';
|
|
// print_r(DB::getQueryLog());
|
|
// print_r(DB::getQueryLog());
|
|
// echo '</pre>';
|
|
// echo '</pre>';
|
|
@@ -100,27 +105,71 @@ class ScheDuleController extends Controller
|
|
if(empty($sche_dule)){
|
|
if(empty($sche_dule)){
|
|
return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
|
|
return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_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)->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';
|
|
|
|
|
|
+
|
|
|
|
+ $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';
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- //检测晚上
|
|
|
|
- $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_start" => "09:00"
|
|
// "morning_end" => "12:00"
|
|
// "morning_end" => "12:00"
|
|
// "afternoon_start" => "13:00"
|
|
// "afternoon_start" => "13:00"
|
|
@@ -128,22 +177,165 @@ class ScheDuleController extends Controller
|
|
// "evening_start" => "19:00"
|
|
// "evening_start" => "19:00"
|
|
// "evening_end" => "20:00"
|
|
// "evening_end" => "20:00"
|
|
|
|
|
|
|
|
+
|
|
$data['docter'] = $sche_dule_arr;
|
|
$data['docter'] = $sche_dule_arr;
|
|
- $data['role'] = 1;
|
|
|
|
|
|
+ $data['list'] = array_column($list,'name','id');
|
|
|
|
+ $data['role'] = $role;
|
|
|
|
+ $data['user_id'] = $user_id;
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public function setDocChedule()
|
|
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()
|
|
public function get_chat_order()
|
|
{
|
|
{
|
|
$org_id = 1;
|
|
$org_id = 1;
|
|
$docter_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');
|
|
$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){
|
|
foreach ($list as $val){
|
|
$user_list[] = [
|
|
$user_list[] = [
|