Forráskód Böngészése

Merge branch 'master' of ssh://git.9026.com:2212/swdz-WangHaijun/BaoMa

zilong 4 éve
szülő
commit
e65a4ad72e

+ 17 - 0
app/Admin/Actions/backstage/Orders/ServicePack.php

xqd
@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Orders;
+
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class ServicePack extends RowAction
+{
+    public $name = '服务包详情';
+
+    public function handle(Model $model)
+    {
+        return $this->response()->success('跳转服务包详情成功')->redirect('/admin/service_packs_datails?order_id='.$this->row->id.'');
+    }
+
+}

+ 23 - 0
app/Admin/Actions/backstage/Orders/ServicePackOrderList.php

xqd
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Orders;
+
+use App\Models\OrderPack;
+use App\Models\OrderPatient;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class ServicePackOrderList extends RowAction
+{
+    public $name = '服务包订单列表';
+
+    public function handle(Model $model)
+    {
+        $patient_id_arr = OrderPatient::where('order_id',$this->row->id)->pluck('patient_id');
+        $patient_id = $patient_id_arr[0];
+        $pack_id_arr = OrderPack::where('order_id',$this->row->id)->pluck('service_pack_id');
+        $pack_id = $pack_id_arr[0];
+        return $this->response()->success('跳转服务包订单列表成功')->redirect('/admin/service_packs_order_list?patient_id='.$patient_id.'&pay_order_pack_id='.$pack_id.'');
+    }
+
+}

+ 124 - 0
app/Admin/Controllers/OrdersManagement/ServicePackDetailsController.php

xqd
@@ -0,0 +1,124 @@
+<?php
+
+namespace App\Admin\Controllers\OrdersManagement;
+
+use App\Models\OrderPack;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class ServicePackDetailsController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '服务包详情';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $order_id = \request('order_id');
+        $grid = new Grid(new OrderPack());
+
+        $grid->disableActions();
+        $grid->filter(function ($filter){
+            $filter->disableIdFilter();
+            $filter->equal('order_id','订单id');
+        });
+        $grid->column('id', __('id'));
+        $grid->column('order_id', __('订单id'));
+        $grid->column('service_pack_id', __('服务包id'));
+        $grid->column('pack_name', __('服务包名称'));
+        $grid->column('pack_price', __('服务包价格'))->display(function ($price){
+            return $price/100;
+        });
+        $grid->column('phone_minutes', __('剩余电话分钟数'));
+        $grid->column('chat_num', __('剩余图文咨询次数'));
+        $grid->column('appoint_num', __('剩余门诊预约次数'));
+        $grid->column('vaccine_limit_amount', __('剩余疫苗金额'));
+        $grid->column('nurses_limit_amount', __('剩余儿保金额'));
+        $grid->column('effective_days', __('有效天数'));
+        $grid->column('start_time', __('开始时间'))->display(function ($time){
+            return date('Y-m-d H:i:s',$time);
+        });
+        $grid->column('end_time', __('结束时间'))->display(function ($time){
+            return date('Y-m-d H:i:s',$time);
+        });
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(OrderPack::findOrFail($id));
+
+        $show->field('id', __('Id'));
+        $show->field('order_id', __('Order id'));
+        $show->field('service_pack_id', __('Service pack id'));
+        $show->field('pack_name', __('Pack name'));
+        $show->field('pack_intro', __('Pack intro'));
+        $show->field('pack_price', __('Pack price'));
+        $show->field('insurance_policy', __('Insurance policy'));
+        $show->field('insurance_img_url', __('Insurance img url'));
+        $show->field('team_id', __('Team id'));
+        $show->field('phone_minutes', __('Phone minutes'));
+        $show->field('chat_num', __('Chat num'));
+        $show->field('appoint_num', __('Appoint num'));
+        $show->field('vaccine_limit_amount', __('Vaccine limit amount'));
+        $show->field('nurses_limit_amount', __('Nurses limit amount'));
+        $show->field('effective_days', __('Effective days'));
+        $show->field('start_time', __('Start time'));
+        $show->field('end_time', __('End time'));
+        $show->field('is_security', __('Is security'));
+        $show->field('guardian_name', __('Guardian name'));
+        $show->field('relationship_type', __('Relationship type'));
+        $show->field('created_at', __('Created at'));
+        $show->field('updated_at', __('Updated at'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new OrderPack());
+
+        $form->number('order_id', __('Order id'));
+        $form->number('service_pack_id', __('Service pack id'));
+        $form->text('pack_name', __('Pack name'));
+        $form->text('pack_intro', __('Pack intro'));
+        $form->number('pack_price', __('Pack price'));
+        $form->text('insurance_policy', __('Insurance policy'));
+        $form->text('insurance_img_url', __('Insurance img url'));
+        $form->number('team_id', __('Team id'));
+        $form->number('phone_minutes', __('Phone minutes'));
+        $form->number('chat_num', __('Chat num'));
+        $form->number('appoint_num', __('Appoint num'));
+        $form->number('vaccine_limit_amount', __('Vaccine limit amount'));
+        $form->number('nurses_limit_amount', __('Nurses limit amount'));
+        $form->number('effective_days', __('Effective days'));
+        $form->number('start_time', __('Start time'));
+        $form->number('end_time', __('End time'));
+        $form->switch('is_security', __('Is security'));
+        $form->text('guardian_name', __('Guardian name'));
+        $form->switch('relationship_type', __('Relationship type'));
+
+        return $form;
+    }
+}

+ 6 - 29
app/Admin/Controllers/OrdersManagement/ServicePackOrderController.php

xqd xqd xqd xqd
@@ -3,6 +3,8 @@
 namespace App\Admin\Controllers\OrdersManagement;
 
 use App\Admin\Actions\backstage\Orders\Evaluate;
+use App\Admin\Actions\backstage\Orders\ServicePack;
+use App\Admin\Actions\backstage\Orders\ServicePackOrderList;
 use App\Models\Order;
 use App\Admin\Actions\backstage\Orders\OrderDetails;
 use Encore\Admin\Controllers\AdminController;
@@ -19,7 +21,7 @@ class ServicePackOrderController extends AdminController
      *
      * @var string
      */
-    protected $title = '服务包订单';
+    protected $title = '服务包开通订单';
 
     /**
      * Make a grid builder.
@@ -65,10 +67,13 @@ class ServicePackOrderController extends AdminController
             $actions->disableDelete();
             // 去掉编辑
             $actions->disableEdit();
+            $actions->add(new ServicePack());
+            $actions->add(new ServicePackOrderList());
         });
         $grid->column('id', __('Id'))->sortable();
         $grid->column('user.nickname', __('用户姓名'));
         $grid->column('orderPatient.name', __('患者姓名'));
+        $grid->column('orderPatient.patient_id', __('患者id'))->hide();
         $grid->column('user.phone', __('用户电话'));
         $grid->column('orderPack.service_pack_id', __('服务包id'));
         $grid->column('orderPack.pack_name', __('服务包名称'));
@@ -167,32 +172,4 @@ class ServicePackOrderController extends AdminController
 
         return $show;
     }
-
-    /**
-     * Make a form builder.
-     *
-     * @return Form
-     */
-    protected function form()
-    {
-        $form = new Form(new Order());
-
-        $form->number('user_id', __('User id'));
-        $form->number('docter_id', __('Docter id'));
-        $form->number('patient_id', __('Patient id'));
-        $form->number('organization_id', __('Organization id'));
-        $form->text('order_sn', __('Order sn'));
-        $form->switch('payment_type', __('Payment type'))->default(1);
-        $form->switch('product_type', __('Product type'))->default(1);
-        $form->switch('order_status', __('Order status'))->default(1);
-        $form->switch('payment_status', __('Payment status'))->default(1);
-        $form->number('total_amount', __('Total amount'));
-        $form->number('payment_amount', __('Payment amount'));
-        $form->number('discount_amount', __('Discount amount'));
-        $form->number('payment_time', __('Payment time'));
-        $form->number('outtime', __('Outtime'));
-        $form->number('receiving_time', __('Receiving time'));
-
-        return $form;
-    }
 }

+ 148 - 0
app/Admin/Controllers/OrdersManagement/ServicePackOrderListController.php

xqd
@@ -0,0 +1,148 @@
+<?php
+
+namespace App\Admin\Controllers\OrdersManagement;
+
+use App\Models\Order;
+use App\Models\ServicePack;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class ServicePackOrderListController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '服务包订单列表';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $pack_id = \request('pay_order_pack_id');
+        $patient_id = \request('patient_id');
+
+        $grid = new Grid(new Order());
+
+        
+        $grid->filter(function ($filter){
+            $filter->disableIdFilter();
+            $filter->equal('pay_order_pack_id','服务包id');
+            $filter->equal('patient_id','患者id');
+        });
+
+        $grid->column('id', __('Id'))->sortable();
+        $grid->column('user.nickname', __('用户姓名'));
+        $grid->column('docter.name', __('医生姓名'));
+        $grid->column('orderPatient.name', __('患者姓名'));
+        $grid->column('orderPatient.patient_phone', __('患者电话'));
+        $grid->column('orderPatient.symptoms', __('患者描述'));
+        $grid->column('product_type', __('产品类型'))
+            ->using([1=>'电话咨询',2=>'图文咨询',3=>'门诊咨询',4=>'疫苗接种预约',5=>'儿保预约',6=>'服务包',7=>'充值']);
+        $grid->column('payment_type', __('支付方式'))->display(function ($payment_type){
+            if ($payment_type == 1)
+            {
+                return '微信支付';
+            }
+            if ($payment_type == 2){
+                return '余额支付';
+            }
+            if ($payment_type == 3){
+                $name = ServicePack::where('id',$this->pay_order_pack_id)->pluck('name');
+                return '服务包支付('.$name[0].')';
+            }
+        });
+        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
+        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+        $grid->column('total_amount', __('订单总金额'))->display(function ($money){
+            return $money/100;
+        });
+        $grid->column('payment_amount', __('用户实际支付的金额'))->display(function ($money){
+            return $money/100;
+        });
+        $grid->column('discount_amount', __('折扣金额'))->display(function ($money){
+            return $money/100;
+        });
+        $grid->column('evaluate.score', __('订单评分'));
+        $grid->column('evaluate.status', __('评分状态'))->using([1=>'待审核',2=>'审核通过',3=>'审核拒绝']);
+        $grid->column('payment_time', __('支付时间'))->display(function ($time){
+            return date('Y-m-d H:i:s',$time);
+        });
+        $grid->column('receiving_time', __('接单时间'))->display(function ($time){
+            return date('Y-m-d H:i:s',$time);
+        });
+        $grid->column('end_time', __('订单完成时间'))->display(function ($time){
+            return date('Y-m-d H:i:s',$time);
+        });
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(Order::findOrFail($id));
+
+        $show->field('id', __('Id'));
+        $show->field('user_id', __('User id'));
+        $show->field('docter_id', __('Docter id'));
+        $show->field('patient_id', __('Patient id'));
+        $show->field('organization_id', __('Organization id'));
+        $show->field('order_sn', __('Order sn'));
+        $show->field('pay_order_pack_id', __('Pay order pack id'));
+        $show->field('payment_type', __('Payment type'));
+        $show->field('product_type', __('Product type'));
+        $show->field('order_status', __('Order status'));
+        $show->field('payment_status', __('Payment status'));
+        $show->field('total_amount', __('Total amount'));
+        $show->field('payment_amount', __('Payment amount'));
+        $show->field('discount_amount', __('Discount amount'));
+        $show->field('payment_time', __('Payment time'));
+        $show->field('end_time', __('End time'));
+        $show->field('receiving_time', __('Receiving time'));
+        $show->field('created_at', __('Created at'));
+        $show->field('updated_at', __('Updated at'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new Order());
+
+        $form->number('user_id', __('User id'));
+        $form->number('docter_id', __('Docter id'));
+        $form->number('patient_id', __('Patient id'));
+        $form->number('organization_id', __('Organization id'));
+        $form->text('order_sn', __('Order sn'));
+        $form->number('pay_order_pack_id', __('Pay order pack id'));
+        $form->switch('payment_type', __('Payment type'))->default(1);
+        $form->switch('product_type', __('Product type'))->default(1);
+        $form->switch('order_status', __('Order status'))->default(1);
+        $form->switch('payment_status', __('Payment status'))->default(1);
+        $form->number('total_amount', __('Total amount'));
+        $form->number('payment_amount', __('Payment amount'));
+        $form->number('discount_amount', __('Discount amount'));
+        $form->number('payment_time', __('Payment time'));
+        $form->number('end_time', __('End time'));
+        $form->number('receiving_time', __('Receiving time'));
+
+        return $form;
+    }
+}

+ 4 - 0
app/Admin/routes.php

xqd
@@ -120,6 +120,10 @@ Route::group([
     $router->resource('user_suggests', OrdersManagement\UserSuggestsController::class);
     //评价管理
     $router->resource('orders_evaluates', OrdersManagement\OrdersEvaluate::class);
+    //服务包订单中的服务包详情
+    $router->resource('service_packs_datails', OrdersManagement\ServicePackDetailsController::class);
+    //服务包订单中的服务包订单列表
+    $router->resource('service_packs_order_list', OrdersManagement\ServicePackOrderListController::class);
 
     /*
      * 优惠券管理

+ 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();
+
     }
 }

+ 740 - 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,411 @@ 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) || empty($configData)){
+            return apiReturn(604,'参数错误');
+        }
+
+        $configData = object_array(json_decode($configData));
+//        $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,
+//        ];
+
+//        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
+//      },
+        $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) > 5){
+//            $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['showDayNumber'],
+            'service_num'=>$configData['serviceNum'],
+            'service_times'=>$configData['timeSpan'],
+            'service_time'=>json_encode($config)
+        ];
+
+
+
+        $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()->toArray();
+        $config = object_array(json_decode($setting['service_time']));
+
+        $status = $setting['status'] ? true: false;
+        $configData = [
+            'amEndTime'=>$config[1]['amEndTime'],
+            'amNum'=>$config[1]['amPerson'],
+            'amStartTime'=>$config[1]['amStartTime'],
+            'nightEndTime'=>$config[3]['nightEndTime'],
+            'nightNum'=>$config[3]['nightPerson'],
+            'nightStartTime'=>$config[3]['nightStartTime'],
+            'pmEndTime'=>$config[2]['pmEndTime'],
+            'pmNum'=>$config[2]['pmPerson'],
+            'pmStartTime'=>$config[2]['pmStartTime'],
+            'serviceNum'=>$setting['service_num'],
+            'showDayNumber'=>$setting['show_days'],
+            'status'=>$status,
+            'timeSpan'=>$setting['service_times'],
+        ];
+
+
+//        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
+//      },
+
+        return apiReturn(200,'ok',$configData);
+
+    }
+
     //获取用户信息
     public function getScheduleInfo()
     {
@@ -403,4 +908,237 @@ 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 = [
+                  ['status'=>false,'type'=>1],
+                  ['status'=>true,'type'=>2],
+                  ['status'=>false,'type'=>3],
+              ];
+              if($i%2 == 0){
+                  $arr = [
+                      ['status'=>false,'type'=>1],
+                      ['status'=>true,'type'=>2],
+                      ['status'=>true,'type'=>3],
+                  ];
+              }
+
+            if($i%3 == 0){
+                $arr = [
+                    ['status'=>true,'type'=>1],
+                    ['status'=>'other','type'=>2],
+                    ['status'=>false,'type'=>3],
+                ];
+            }
+
+            if($i%3 == 0){
+                $arr = [
+                    ['status'=>'other','type'=>1],
+                    ['status'=>true,'type'=>2],
+                    ['status'=>false,'type'=>3],
+                ];
+            }
+            $all_time[] = ['date'=>($i+1),'day'=>$now_date,'schedulelingList'=>$arr,'week'=>$week];
+        }
+        return apiReturn(200,'ok',$all_time);
+    }
+
+
+    //获取周排班模板
+    public function getWeekSchedule()
+    {
+        $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();
+
+        //周字段映射
+        $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])->count();
+                    $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('organization_id','!=',$org_id)->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])->count();
+                    $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('docter_id','!=',$docter_id)->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 setWeekSchedule()
+    {
+        $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,'缺少必要参数');
+        }
+        $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);
+    }
 }

+ 7 - 0
routes/web.php

xqd
@@ -20,7 +20,14 @@ 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/get_docter_setting', 'ScheDuleController@getDocterSetting');
+
 //用户信息
 Route::get('/api/getScheduleInfo', 'ScheDuleController@getScheduleInfo');
 Route::get('/getScheduleInfo', 'ScheDuleController@getScheduleInfo');