ソースを参照

社区端优化

Swdz-WangHaiJun 4 年 前
コミット
1cb3bb3afe

+ 29 - 0
app/Admin/Actions/Community/Nurse/Reserved.php

xqd
@@ -0,0 +1,29 @@
+<?php
+
+
+namespace App\Admin\Actions\Community\Nurse;
+
+
+use App\Models\Order;
+use App\Models\User;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class Reserved extends RowAction
+{
+    public $name = '已预约';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->orders->order_id;
+
+        $res = Order::where('id',$id)->update(['order_status'=>Order::ISING]);
+
+
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+
+        return $this->response()->error('操作失败!');
+    }
+}

+ 2 - 2
app/Admin/Controllers/ApiController.php

xqd
@@ -13,12 +13,12 @@ class ApiController extends Controller
     public function getCity()
     {
         $id  = request('q');
-        return Area::where(['level'=>2,'parent_id'=>$id])->get(['name as text','id']);
+        return Area::where(['level'=>2,'parent_id'=>intval($id)])->get(['name as text','id']);
     }
 
     public function getArea()
     {
         $id  = request('q');
-        return Area::where(['level'=>3,'parent_id'=>$id])->get(['name as text','id']);
+        return Area::where(['level'=>3,'parent_id'=>intval($id)])->get(['name as text','id']);
     }
 }

+ 8 - 6
app/Admin/Controllers/OrganizationController.php

xqd
@@ -92,16 +92,18 @@ class OrganizationController extends AdminController
     {
         $form = new Form(new Organization());
 
-        $form->select('type', __('类型'))->options(Organization::getType());
-        $form->text('name', __('名称'));
+        $form->select('type', __('类型'))->options(Organization::getType())->required();
+        $form->text('name', __('名称'))->required();
         $form->select('province_id', __('省份'))->options(function (){
             return Area::where('level',1)->pluck('name','id');
-        })->load('city_id','/admin/api/getCity');
+        })->load('city_id','/admin/api/getCity')->required();
         $form->select('city_id', __('城市'))->options(function (){
             return Area::where('level',2)->pluck('name','id');
-        })->load('area_id','/admin/api/getArea');;
-        $form->select('area_id', __('地区'));
-        $form->text('address', __('详细地址'));
+        })->load('area_id','/admin/api/getArea')->required();;
+        $form->select('area_id', __('地区'))->required();
+        $form->text('address', __('详细地址'))->required();
+        $form->textarea('nurse_notice','门诊通告');
+        $form->textarea('vaccine_notice','计免通告');
         $form->latlong('latitude', 'longitude','经纬度');
 
         return $form;

+ 28 - 0
app/Community/Actions/Docter/ChangeType.php

xqd
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Community\Actions\Docter;
+
+use App\Models\Docter;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class ChangeType extends RowAction
+{
+    public $name = '改变类型';
+
+    public function handle(Model $model)
+    {
+        $type = request('type');
+        $id = $this->row->docter->id;
+        $res = Docter::where(['id'=>$id])->update(['type'=>intval($type)]);
+        if(!$res) return  $this->response()->error('操作失败请重试');
+        return $this->response()->success('操作成功')->refresh();
+    }
+
+    public function form(){
+//        1.问诊医生 2.疫苗医生 3.儿保医生)
+        $type = $this->row->docter->type;
+        $this->select('type','类型')->options([1=>'门诊医生',2=>'计免医生',3=>'儿保医生'])->value(intval($type));
+    }
+
+}

+ 24 - 0
app/Community/Actions/Nurse/Finished.php

xqd
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Community\Actions\Nurse;
+
+use App\Models\Order;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class Finished extends RowAction
+{
+    public $name = '完成订单';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->order_id;
+        $res = Order::where('id',$id)->update(['order_status'=>Order::FINISHED]);
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 40 - 0
app/Community/Actions/Nurse/OrderCance.php

xqd
@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Community\Actions\Nurse;
+
+use App\Models\Order;
+use App\Models\User;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\DB;
+
+class OrderCance extends RowAction
+{
+    public $name = '取消订单';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->order_id;
+        $user_id = $this->row->orders->user_id;
+        $money = $this->row->payment_amount;
+
+        //退还余额
+        $user_money = User::where(['id'=>$user_id])->value('balance');
+        DB::beginTransaction();
+        try {
+            User::where('id',$user_id)->update(['balance'=>($user_money + $money)]);
+            $res = Order::where('id',$id)->update(['order_status'=>Order::CANCELED]);
+            DB::commit();
+        } catch ( \Exception $e){
+            dd($e->getMessage());
+            DB::rollBack();
+            return $this->response()->error('操作失败!');
+        }
+
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 27 - 0
app/Community/Actions/Nurse/Reserved.php

xqd
@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Community\Actions\Nurse;
+
+use App\Models\Order;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class Reserved extends RowAction
+{
+    public $name = '立即接单';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->orders->order_id;
+
+        $res = Order::where('id',$id)->update(['order_status'=>Order::ISING]);
+
+
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 37 - 0
app/Community/Actions/Vaccine/AddVaccine.php

xqd
@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Community\Actions\Vaccine;
+
+use App\Models\Docter;
+use App\Models\Vaccine;
+use Encore\Admin\Actions\RowAction;
+use Encore\Admin\Facades\Admin;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Http\Request;
+
+class AddVaccine extends RowAction
+{
+    public $name = '订单修订';
+
+    public function handle(Request $request)
+    {
+        $ids = request('vaccine_id');
+
+        return $this->response()->success('修改疫苗成功')->refresh();
+    }
+
+    public function form()
+    {
+        $admin = Admin::user();
+        if($admin->docter_id) {
+            dd('是医生');
+        }
+        if(empty($admin->org_id)) return ;
+        $docter_id = 1;
+        $docter = Docter::where(['id'=>$docter_id])->first();
+        dd($docter);
+        dd($admin);
+        $this->multipleSelect('vaccine_id','疫苗')->options(Vaccine::pluck('name','id'))->value();
+    }
+
+}

+ 24 - 0
app/Community/Actions/Vaccine/Finished.php

xqd
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Community\Actions\Vaccine;
+
+use App\Models\Order;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class Finished extends RowAction
+{
+    public $name = '完成订单';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->order_id;
+        $res = Order::where('id',$id)->update(['order_status'=>Order::FINISHED]);
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 39 - 0
app/Community/Actions/Vaccine/OrderCance.php

xqd
@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Community\Actions\Vaccine;
+
+use App\Models\Order;
+use App\Models\User;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class OrderCance extends RowAction
+{
+    public $name = '取消订单';
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->order_id;
+        $user_id = $this->row->orders->user_id;
+        $money = $this->row->payment_amount;
+
+        //退还余额
+        $user_money = User::where(['id'=>$user_id])->value('balance');
+        DB::beginTransaction();
+        try {
+            User::where('id',$user_id)->update(['balance'=>($user_money + $money)]);
+            $res = Order::where('id',$id)->update(['order_status'=>Order::CANCELED]);
+            DB::commit();
+        } catch ( \Exception $e){
+            dd($e->getMessage());
+            DB::rollBack();
+            return $this->response()->error('操作失败!');
+        }
+
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 28 - 0
app/Community/Actions/Vaccine/Reserved.php

xqd
@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Community\Actions\Vaccine;
+
+use App\Models\Order;
+use Encore\Admin\Actions\RowAction;
+use Illuminate\Database\Eloquent\Model;
+
+class Reserved extends RowAction
+{
+    public $name = '立即接单';
+
+
+    public function handle(Model $model)
+    {
+        $id = $this->row->orders->order_id;
+
+        $res = Order::where('id',$id)->update(['order_status'=>Order::ISING]);
+
+
+        if($res){
+            return $this->response()->success('操作成功!')->refresh();
+        }
+
+        return $this->response()->error('操作失败!');
+    }
+
+}

+ 2 - 0
app/Community/Controllers/DocterOrgController.php

xqd xqd
@@ -4,6 +4,7 @@ namespace App\Community\Controllers;
 
 use App\Admin\Actions\Community\Docter\AddAccount;
 use App\Admin\Actions\Community\Docter\EditAccount;
+use App\Community\Actions\Docter\ChangeType;
 use App\Models\CdmsUsers;
 use App\Models\Docter;
 use App\Models\DocterOrganization;
@@ -66,6 +67,7 @@ class DocterOrgController extends AdminController
             $actions->disableDelete();
             $actions->disableView(false);
             $actions->disableEdit();
+            $actions->add(new ChangeType());
             $docter_id = $actions->row->docter_id;
             $org_id = $actions->row->organization_id;
             $have_user = CdmsUsers::where(['org_id'=>$org_id,'docter_id'=>$docter_id])->first();

+ 6 - 3
app/Community/Controllers/OrderController.php

xqd xqd
@@ -47,7 +47,9 @@ class OrderController extends AdminController
         $grid->column('orderPatient.appoint_end_time', __('门诊时间'))->display(function ($w){
             if(empty($w)) return '';
             return date('Y-m-d H:i:s',$w);
-        });;
+        });
+        $grid->column('orderPatient.phone', __('电话号码'));
+
         $grid->column('orderPatient.name', __('预约患者'))->display(function ($w){
             return $w==1?'男':'女';
         });;
@@ -56,8 +58,9 @@ class OrderController extends AdminController
             return birthday_to_age($w);
         });;
         $grid->column('docter.name', __('预约医生'));
-        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+//        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
+        $grid->column('order_status','订单状态')->using(Order::getStatus())->label([1=>'info',2=>'warring',3=>'info',4=>'success',5=>'error']);
+//        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
 
         //查询
         $grid->quickSearch(function ($model, $query) {

+ 12 - 2
app/Community/Controllers/OrderNurseController.php

xqd xqd xqd
@@ -3,7 +3,10 @@
 namespace App\Community\Controllers;
 
 use App\Admin\Actions\Community\Nurse\DelNurse;
-use App\Admin\Actions\Community\Nurse\Finished;
+use App\Community\Actions\Nurse\Finished;
+use App\Community\Actions\Nurse\OrderCance;
+use App\Community\Actions\Nurse\Reserved;
+use App\Community\Actions\Vaccine\AddVaccine;
 use App\Models\Docter;
 use App\Models\DocterOrganization;
 use App\Models\Order;
@@ -57,10 +60,12 @@ class OrderNurseController extends AdminController
         $grid->column('patients.appoint_start_time', __('预约时间'))->display(function ($w){
             return date('Y-m-d H:i:s',$w);
         });
+        $grid->column('orders.order_status','订单状态')->using(Order::getStatus())->label([1=>'info',2=>'warring',3=>'info',4=>'success',5=>'error']);
         $grid->column('patients.appoint_end_time', __('儿保时间'))->display(function ($w){
             return date('Y-m-d H:i:s',$w);
         });
         $grid->column('patients.name', __('儿保患者'));
+        $grid->column('patients.phone', __('电话'));
         $grid->column('patients.sex', __('患者性别'))->display(function ($w){
             return $w==1?'男':'女';
         });
@@ -89,10 +94,15 @@ class OrderNurseController extends AdminController
         });
 
         $grid->actions(function ($actions) {
-//            dd($actions->row->orders);
             if(!empty($actions->row->orders) && $actions->row->orders->order_status< 2 ){
                 $actions->add(new Finished());
+                $actions->add(new Reserved());
+                $actions->add(new OrderCance());
             }
+
+
+
+            $actions->add(new AddVaccine());
             $actions->add(new DelNurse());
             $actions->disableView();
             $actions->disableDelete();

+ 3 - 2
app/Community/Controllers/OrderVaccinesController.php

xqd xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Community\Controllers;
 
+use App\Models\Order;
 use App\Models\OrderVaccine;
 use Encore\Admin\Controllers\AdminController;
 use Encore\Admin\Form;
@@ -15,7 +16,7 @@ class OrderVaccinesController extends AdminController
      *
      * @var string
      */
-    protected $title = '计免预约';
+    protected $title = '计免订单';
 
     /**
      * Make a grid builder.
@@ -39,7 +40,7 @@ class OrderVaccinesController extends AdminController
         });
         $grid->column('vaccine_name', __('接种疫苗'));
         $grid->column('docters.name', __('排班医生'));
-        $grid->column('orders.order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
+        $grid->column('orders.order_status', __('订单状态'))->using(Order::getStatus());
         $grid->column('orders.payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
 
         return $grid;

+ 93 - 27
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd xqd
@@ -706,28 +706,7 @@ class ScheDuleController  extends Controller
             2=>['count'=>$configData['pmNum'],'start_time'=>$configData['pmStartTime'],'end_time'=>$configData['pmEndTime']],
             3=>['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
         ];
-//        $c_r = [
-//            1=>['count'=>$configData[1]['amPerson'],'start_time'=>$configData[1]['amStartTime'],'end_time'=>$configData[1]['amEndTime']],
-//            2=>['count'=>$configData[2]['pmPerson'],'start_time'=>$configData[2]['pmStartTime'],'end_time'=>$configData[2]['pmEndTime']],
-//            3=>['count'=>$configData[3]['nightPerson'],'start_time'=>$configData[3]['nightStartTime'],'end_time'=>$configData[3]['nightEndTime']]
-//        ];
-//        $configData['timeSpan'] = 30;
-//        if(1==1){
-//            foreach ($is_new as $c){
-//                for($i=1;$i<=$c_r[$c]['count'];$i++){
-//                    $evdata = [
-//                        'org_id'=>$org_id,
-//                        'docter_id'=>$docter_id,
-//                        'type'=>$c,
-//                        'start_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + ($i-1)*$configData['timeSpan']*60),
-//                        'end_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + $i*$configData['timeSpan']*60),
-//                    ];
-//                    $is_have = TimePeriod::where($evdata)->count();
-//                    if($is_have) continue;
-//                    TimePeriod::insert($evdata);
-//                }
-//            }
-//        }
+
 //        dd('end');
         //todo 零时关闭排班功能,后续需要解除
         if($is_change && 1!=1){
@@ -958,11 +937,20 @@ class ScheDuleController  extends Controller
 
 
 
-        $is_have = DocterSetting::where(['docter_id'=>$docter_id])->value('id');
-        if($is_have){
-            DocterSetting::where(['docter_id'=>$docter_id])->update($setting);
+        if($type == 2){
+            $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);
+            }
         } else {
-            DocterSetting::insert($setting);
+            $is_have = Organization::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');
     }
@@ -1053,7 +1041,6 @@ class ScheDuleController  extends Controller
     public function get_chat_order()
     {
         $org_id = 1;
-//        $docter_id = 1;
         $docter_id = request('docter_id');
         if(empty($docter_id)){
             return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
@@ -1424,5 +1411,84 @@ class ScheDuleController  extends Controller
         return $arr;
     }
 
+    public function insert_times()
+    {
+        $docter_id = intval(request('docter_id',1));
+        $configData = request('configData',1);
+        $type = request('type',1);//医生类型 1 机构 2 医生
+        $schedule_type = request('schedule_type',2); //排班类型 1门诊 2计免 3儿保
+        $org_id = intval(request('org_id',0));
+        if(empty($docter_id) || empty($configData)){
+            return apiReturn(604,'参数错误');
+        }
+        $is_new = [1,2,3];
+
+        $setting  = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
+
+        $configData = object_array(json_decode($setting['service_time']));
+
+        $c_r = [
+            1=>['count'=>$configData[1]['amPerson'],'start_time'=>$configData[1]['amStartTime'],'end_time'=>$configData[1]['amEndTime']],
+            2=>['count'=>$configData[2]['pmPerson'],'start_time'=>$configData[2]['pmStartTime'],'end_time'=>$configData[2]['pmEndTime']],
+            3=>['count'=>$configData[3]['nightPerson'],'start_time'=>$configData[3]['nightStartTime'],'end_time'=>$configData[3]['nightEndTime']]
+        ];
+        $configData['timeSpan'] = 30;
+        if(1==1){
+            foreach ($is_new as $c){
+                for($i=1;$i<=$c_r[$c]['count'];$i++){
+                    $evdata = [
+                        'org_id'=>$org_id,
+                        'docter_id'=>$docter_id,
+                        'type'=>$c,
+                        'start_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + ($i-1)*$configData['timeSpan']*60),
+                        'end_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + $i*$configData['timeSpan']*60),
+                    ];
+                    $is_have = TimePeriod::where($evdata)->count();
+                    if($is_have) continue;
+                    TimePeriod::insert($evdata);
+                }
+            }
+        }
+
+        $configData = [
+            'amEndTime'=>"11:30",
+            'amNum'=>5,
+            'amStartTime'=>"09:00",
+            'nightEndTime'=>"20:30",
+            'nightStartTime'=>"19:00",
+            'nightNum'=>3,
+            'pmEndTime'=>"16:00",
+            'pmNum'=>5,
+            'pmStartTime'=>"13:30",
+            'showDayNumber'=>7,
+            'serviceNum'=>2,
+            'status'=>false,
+            'timeSpan'=>30,
+        ];
+
+        $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)
+        ];
+
+        if($is_have){
+            DocterOrganization::where(['org_id'=>$org_id])->update($setting);
+        } else {
+            DocterOrganization::insert($setting);
+        }
+        return 'ok';
+    }
+
 
 }

+ 2 - 1
app/Models/Order.php

xqd
@@ -12,13 +12,14 @@ class Order extends BaseModel
 {
     protected $appends = ['is_evaluate', 'order_duration'];
 
-    CONST UNPAID = 1, NOTACCEPT = 2, ISING = 3, FINISHED = 4,CANCELED=5; //订单状态(1.未支付 2.进行中 3.已完成 4.已取消)
+    CONST UNPAID = 1, NOTACCEPT = 2, ISING = 3, FINISHED = 4,CANCELED=5,ISOUT=6; //订单状态(1.未支付 2.进行中 3.已完成 4.已取消)
     public static  $_order_status = [
         self::UNPAID=>'未支付',
         self::NOTACCEPT=>'待支付',
         self::ISING=>'进行中',
         self::FINISHED=>'已完成',
         self::CANCELED=>'已取消',
+        self::ISOUT=>'已超时'
     ];
 
     //获取订单状态

+ 10 - 0
app/Models/OrganizationSettings.php

xqd
@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class OrganizationSettings extends Model
+{
+    //
+}