Browse Source

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

zilong 4 years ago
parent
commit
0afce986fa
40 changed files with 764 additions and 134 deletions
  1. 7 3
      app/Admin/Actions/Community/Notice/sendNotice.php
  2. 3 4
      app/Admin/Actions/backstage/Orders/ServicePackOrderList.php
  3. 103 0
      app/Admin/Actions/backstage/Service/ServiceBatchGrant.php
  4. 25 0
      app/Admin/Actions/backstage/Service/ServiceDistributions.php
  5. 24 6
      app/Admin/Controllers/OrdersManagement/BookingOrderController.php
  6. 20 2
      app/Admin/Controllers/OrdersManagement/ConsultingOrdersController.php
  7. 3 0
      app/Admin/Controllers/OrdersManagement/InsuranceListController.php
  8. 19 3
      app/Admin/Controllers/OrdersManagement/RechargeOrderController.php
  9. 3 0
      app/Admin/Controllers/OrdersManagement/RefundApplicationController.php
  10. 22 5
      app/Admin/Controllers/OrdersManagement/ServicePackOrderController.php
  11. 3 3
      app/Admin/Controllers/ServiceManagement/ServiceController.php
  12. 14 4
      app/Admin/Controllers/ServicePacksManagment/InsuranceAgreementController.php
  13. 84 0
      app/Admin/Controllers/ServicePacksManagment/ServiceAgreementController.php
  14. 66 0
      app/Admin/Controllers/ServicePacksManagment/ServiceDistributionUserList.php
  15. 79 3
      app/Admin/Controllers/ServicePacksManagment/ServicePacksController.php
  16. 1 1
      app/Admin/Controllers/UserManagement/BmUser/UserListController.php
  17. 5 12
      app/Admin/Controllers/UserManagement/DocterManagement/AppointController.php
  18. 4 9
      app/Admin/Controllers/UserManagement/DocterManagement/ChatController.php
  19. 1 0
      app/Admin/Controllers/UserManagement/DocterManagement/DoctorManagementController.php
  20. 6 8
      app/Admin/Controllers/UserManagement/DocterManagement/PhoneController.php
  21. 3 0
      app/Admin/routes.php
  22. 3 3
      app/Community/Actions/Vaccine/AddVaccine.php
  23. 4 2
      app/Community/Controllers/ApiController.php
  24. 1 0
      app/Community/Controllers/DocterOrgController.php
  25. 28 2
      app/Community/Controllers/OrderController.php
  26. 24 4
      app/Community/Controllers/OrderNurseController.php
  27. 61 6
      app/Community/Controllers/OrderVaccinesController.php
  28. 2 1
      app/Community/Controllers/UserNoticeController.php
  29. 6 10
      app/Community/Controllers/VaccineController.php
  30. 22 0
      app/Http/Controllers/Api/V1/TeamController.php
  31. 1 1
      app/Http/Controllers/Api/V2/DoctorController.php
  32. 3 4
      app/Http/Controllers/Api/V2/PatientController.php
  33. 69 24
      app/Http/Controllers/AppiontController.php
  34. 1 0
      app/Models/Article.php
  35. 6 2
      app/Models/Order.php
  36. 11 0
      app/Models/ServiceAgreement.php
  37. 3 0
      app/Models/ServicePack.php
  38. 18 4
      app/Models/Vaccine.php
  39. 3 5
      config/config.php
  40. 3 3
      routes/web.php

+ 7 - 3
app/Admin/Actions/Community/Notice/sendNotice.php

xqd xqd xqd xqd
@@ -2,6 +2,8 @@
 
 namespace App\Admin\Actions\Community\Notice;
 
+use App\Models\OrderPatient;
+use App\Models\Patient;
 use App\User;
 use EasyWeChat\Factory;
 use Encore\Admin\Actions\BatchAction;
@@ -16,7 +18,10 @@ class sendNotice extends BatchAction
         $info = $collection->toArray();
         $ids = array_unique(array_column($info,'id'));
         foreach ($ids as $id) {
-            $openid = User::where('id',$id)->value('openid');
+            $user_id = Patient::where('id',$id)->value('user_id');
+            if(empty($user_id)) continue;
+
+            $openid = User::where('id',$user_id)->value('openid');
             $content = request('content');
             $remark= request('remark');
             $stime= request('stime');
@@ -24,7 +29,6 @@ class sendNotice extends BatchAction
 //            $openid = 'oYmUA5A1OIqtpA1XSrw35tbjtv1w';
             $service_arr = [1=>'儿保服务',2=>'疫苗接种服务'];
             $service_name = $service_arr[$type];
-
             //没有openid 直接不发送
             if(empty($openid)) continue;
             $template_arr = [
@@ -38,7 +42,7 @@ class sendNotice extends BatchAction
             $msg['remark'] = $remark;
             $msg['service_name'] = $service_name;
 
-            $this->send($openid,$tempId,$msg);
+            $res = $this->send($openid,$tempId,$msg);
         }
 
         return $this->response()->success('发送成功')->refresh();

+ 3 - 4
app/Admin/Actions/backstage/Orders/ServicePackOrderList.php

xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Actions\backstage\Orders;
 
+use App\Models\Order;
 use App\Models\OrderPack;
 use App\Models\OrderPatient;
 use Encore\Admin\Actions\RowAction;
@@ -13,10 +14,8 @@ class ServicePackOrderList extends RowAction
 
     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];
+        $patient_id = Order::where('id',$this->row->id)->value('patient_id');
+        $pack_id = OrderPack::where('order_id',$this->row->id)->value('service_pack_id');
         return $this->response()->success('跳转服务包订单列表成功')->redirect('/admin/service_packs_order_list?patient_id='.$patient_id.'&pay_order_pack_id='.$pack_id.'');
     }
 

+ 103 - 0
app/Admin/Actions/backstage/Service/ServiceBatchGrant.php

xqd
@@ -0,0 +1,103 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Service;
+
+use App\Models\Order;
+use App\Models\OrderPack;
+use App\Models\Patient;
+use App\Models\ServicePack;
+use Encore\Admin\Actions\BatchAction;
+use Illuminate\Database\Eloquent\Collection;
+
+class ServiceBatchGrant extends BatchAction
+{
+    public $name = '批量发放服务包';
+
+    public function handle(Collection $collection)
+    {
+        $service_pack_id = request('id');
+        //拿到服务包id
+        $service_pack = ServicePack::where('id',$service_pack_id)->get()->toArray();
+        //计算有效天数
+        $effective_days = $service_pack[0]['effective_days'];
+        $start_time = time();
+        $str = '+'.$effective_days.'days';
+        $end_time = strtotime($str,$start_time);
+        foreach ($collection as $model) {
+            //获取患者是否有医保
+            $has_security = Patient::where('id',$model->id)->value('social_card_number');
+            if (!empty($has_security))
+            {
+                $is_security = 1;
+            }else
+            {
+                $is_security = 0;
+            }
+
+            //写入订单表
+            $order_arr = [
+                'user_id' => $model->user_id,
+                'docter_id' => 0,
+                'patient_id' => $model->id,
+                'organization_id' => 0,
+                'order_sn' => 0,
+                'pay_order_pack_id' =>0,
+                'is_faster' => 0,
+                'is_discount' => 0,
+                'is_evaluate' => 0,
+                'payment_type' => 2,
+                'product_type' => 6,
+                'order_status' => 3,
+                'payment_status' => 2,
+                'total_amount' => 0,
+                'payment_amount' => 0,
+                'discount_amount' => 0,
+                'payment_time' => time(),
+                'end_time' => 0,
+                'receiving_time' => 0,
+                'cancel_time' => 0,
+            ];
+            //先创建订单,再根据订单号去修改订单号
+            $order_id = Order::create($order_arr)->id;
+            $order_sn = build_sn($order_id);
+            Order::where('id',$order_id)->update(['order_sn'=>$order_sn]);
+
+            //创建订单服务包数据
+            $order_pack_arr = [
+              'user_id' => $model->user_id,
+              'order_id' => $order_id,
+              'service_pack_id' => $service_pack_id,
+              'pack_name' => $service_pack[0]['name'],
+              'pack_intro' => $service_pack[0]['intro'],
+              'pack_price' => $service_pack[0]['price'],
+              'team_id' => $service_pack[0]['team_id'],
+              'total_phone_minutes' => $service_pack[0]['phone_minutes'],
+              'phone_minutes' => $service_pack[0]['phone_minutes'],
+              'total_chat_num' => $service_pack[0]['chat_num'],
+              'chat_num' => $service_pack[0]['chat_num'],
+              'total_appoint_num' => $service_pack[0]['appoint_num'],
+              'appoint_num' => $service_pack[0]['appoint_num'],
+              'total_vaccine_limit_amount' => $service_pack[0]['vaccine_limit_amount'],
+              'vaccine_limit_amount' => $service_pack[0]['vaccine_limit_amount'],
+              'total_nurses_limit_amount' => $service_pack[0]['nurses_limit_amount'],
+              'nurses_limit_amount' => $service_pack[0]['nurses_limit_amount'],
+              'effective_days' => $effective_days,
+              'start_time' => $start_time,
+              'end_time' => $end_time,
+              'is_security' => $is_security,
+              'guardian_name' => $model->guardian_name,
+              'relationship_type' => $model->relationship_type,
+              'label' => $service_pack[0]['label'],
+              'is_need_insurance' => $service_pack[0]['is_need_insure'],
+              'expire_type' => 1,
+            ];
+            OrderPack::create($order_pack_arr);
+        }
+        return $this->response()->success('批量发放服务包成功')->refresh();
+    }
+    public function form()
+    {
+        $name = ServicePack::pluck('name','id');
+        $this->select('id', '服务包名称')->options($name);
+    }
+}

+ 25 - 0
app/Admin/Actions/backstage/Service/ServiceDistributions.php

xqd
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Admin\Actions\backstage\Service;
+
+use Encore\Admin\Actions\Action;
+use Illuminate\Http\Request;
+
+class ServiceDistributions extends Action
+{
+    protected $selector = '.service-distributions';
+
+    public function handle(Request $request)
+    {
+        // $request ...
+
+        return $this->response()->success('跳转服务包发放列表成功')->redirect('/admin/service_distribution_user_list');
+    }
+
+    public function html()
+    {
+        return <<<HTML
+        <a class="btn btn-sm btn-default service-distributions">服务包发放</a>
+HTML;
+    }
+}

+ 24 - 6
app/Admin/Controllers/OrdersManagement/BookingOrderController.php

xqd xqd xqd
@@ -9,6 +9,7 @@ use App\Admin\Actions\backstage\Refund\RefundServicePackAction;
 use App\Models\Order;
 use App\Admin\Actions\backstage\Orders\OrderDetails;
 use App\Models\OrderPack;
+use App\Models\Organization;
 use App\Models\ServicePack;
 use Encore\Admin\Widgets\Table;
 use Encore\Admin\Controllers\AdminController;
@@ -108,19 +109,23 @@ class BookingOrderController extends AdminController
                 }
             }
         });
+        $grid->export(function ($export) {
+            $export->filename('预约订单');
+    });
+        $status_arr = Order::getStatus();
         $grid->model()->orderBy('id','desc');
         $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.appoint_start_time', __('预约日期'))->display(function ($time){
-            return date('Y-m-d H:i:s',$time);
+        $grid->column('organization_id', __('预约机构'))->display(function ($org_id){
+            $name = Organization::where('id',$org_id)->value('name');
+            return $name;
         });
-        $grid->column('orderPatient.appoint_end_time', __('就诊日期'))->display(function ($time){
+        $grid->column('orderPatient.appoint_start_time', __('预约日期'))->display(function ($time){
             return date('Y-m-d H:i:s',$time);
         });
-//        $grid->column('evaluate.score', __('订单评分'));
         $grid->column('product_type', __('产品类型'))->using([3=>'门诊预约',4=>'疫苗接种预约',5=>'儿保预约']);
         $grid->column('payment_type', __('支付方式'))->display(function ($payment_type){
             if ($payment_type == 1)
@@ -136,8 +141,21 @@ class BookingOrderController extends AdminController
                 return '服务包支付('.$name.')';
             }
         });
-        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消',6=>'已超时',7=>'已预约']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款',5=>'待退款']);
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });;
+        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款',5=>'待退款'])->label([1=>'warring',2=>'success',3=>'info',4=>'danger',5=>'default']);;
         $grid->column('total_amount', __('订单总金额'))->display(function ($money){
             return $money/100;
         });

+ 20 - 2
app/Admin/Controllers/OrdersManagement/ConsultingOrdersController.php

xqd xqd
@@ -92,6 +92,11 @@ class ConsultingOrdersController extends AdminController
             $actions->disableDelete();
             $actions->add(new OrderOpinion());
         });
+        $grid->export(function ($export) {
+            $export->filename('咨询订单');
+            $export->except(['is_evaluates']);
+        });
+        $status_arr = Order::getStatus();
         $grid->model()->orderBy('id','desc');
         $grid->column('id', __('Id'))->sortable();
         $grid->column('user.nickname', __('用户姓名'));
@@ -114,8 +119,21 @@ class ConsultingOrdersController extends AdminController
                 return '服务包支付('.$name.')';
             }
         });
-        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消',6=>'已超时',7=>'已预约']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款',5=>'待退款']);
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款',5=>'待退款'])->label([1=>'warring',2=>'success',3=>'info',4=>'danger',5=>'default']);
         $grid->column('total_amount', __('订单总金额'))->display(function ($money){
             return $money/100;
         });

+ 3 - 0
app/Admin/Controllers/OrdersManagement/InsuranceListController.php

xqd
@@ -42,6 +42,9 @@ class InsuranceListController extends AdminController
             $filter->equal('users.phone','用户电话');
             $filter->equal('is_need_insurance','是否包含保单')->select([0=>'否',1=>'是']);
         });
+        $grid->export(function ($export) {
+            $export->filename('投保信息');
+        });
         $grid->disableCreateButton();
         //实现只有服务包中包含保单的才显示进来
 

+ 19 - 3
app/Admin/Controllers/OrdersManagement/RechargeOrderController.php

xqd xqd
@@ -48,13 +48,16 @@ class RechargeOrderController extends AdminController
             );
             $filter->timestampBetween('payment_time', "支付时间")->datetime();
         });
-
+        $grid->export(function ($export) {
+            $export->filename('充值订单');
+        });
         $grid->actions(function ($actions) {
             // 去掉删除
             $actions->disableDelete();
             // 去掉编辑
             $actions->disableEdit();
         });
+        $status_arr = Order::getStatus();
         $grid->model()->orderBy('id','desc');
         $grid->column('id', __('Id'))->sortable();
         $grid->column('user_id', __('用户id'));
@@ -62,8 +65,21 @@ class RechargeOrderController extends AdminController
         $grid->column('user.phone', __('用户电话'));
         $grid->column('product_type', __('产品类型'))->using([7=>'充值订单']);
         $grid->column('payment_type', __('支付方式'))->using([1=>'微信支付',2=>'余额支付']);
-        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款'])->label([1=>'warring',2=>'success',3=>'info',4=>'danger']);;
         $grid->column('total_amount', __('订单总金额'))->display(function ($money){
             return $money/100;
         });

+ 3 - 0
app/Admin/Controllers/OrdersManagement/RefundApplicationController.php

xqd
@@ -43,6 +43,9 @@ class RefundApplicationController extends AdminController
             $filter->equal('orders.payment_status','支付状态')->select([3=>'退款中',4=>'已退款']);
             $filter->equal('orders.order_status','订单状态')->select([5=>'已取消',6=>'已超时']);
         });
+        $grid->export(function ($export) {
+            $export->filename('退款申请列表');
+        });
         $grid->actions(function ($actions){
            $actions->disableView();
            $actions->disableEdit();

+ 22 - 5
app/Admin/Controllers/OrdersManagement/ServicePackOrderController.php

xqd xqd xqd
@@ -38,7 +38,7 @@ class ServicePackOrderController extends AdminController
             $filter->disableIdFilter();
 
                 $filter->like('user.nickname','用户姓名');
-                $filter->like('orderPatient.name','患者姓名');
+                $filter->like('patient.name','患者姓名');
                 $filter->equal('order_status','订单状态')->radio(
                     [
                         ''=>'不限',
@@ -62,12 +62,16 @@ class ServicePackOrderController extends AdminController
             $actions->add(new ServicePack());
             $actions->add(new ServicePackOrderList());
         });
+        $grid->export(function ($export) {
+            $export->filename('服务包开通订单');
+        });
+        $status_arr = Order::getStatus();
         $grid->model()->orderBy('id','desc');
         $grid->column('id', __('Id'))->sortable();
         $grid->column('order_sn', __('订单编号'));
         $grid->column('user.nickname', __('用户姓名'));
-        $grid->column('orderPatient.name', __('患者姓名'));
-        $grid->column('orderPatient.patient_id', __('患者id'))->hide();
+        $grid->column('patient.name', __('患者姓名'));
+        $grid->column('patient_id', __('患者id'))->hide();
         $grid->column('user.phone', __('用户电话'));
         $grid->column('orderPack.service_pack_id', __('服务包id'));
         $grid->column('orderPack.pack_name', __('服务包名称'));
@@ -76,8 +80,21 @@ class ServicePackOrderController extends AdminController
         });
         $grid->column('product_type', __('产品类型'))->using([6=>'服务包订单']);
         $grid->column('payment_type', __('支付方式'))->using([1=>'微信支付',2=>'余额支付']);
-        $grid->column('order_status', __('订单状态'))->using([1=>'未支付',2=>'待接单',3=>'进行中',4=>'已完成',5=>'已取消']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款'])->label([1=>'warring',2=>'success',3=>'info',4=>'danger']);;
         $grid->column('total_amount', __('订单总金额'))->display(function ($money){
             return $money/100;
         });

+ 3 - 3
app/Admin/Controllers/ServiceManagement/ServiceController.php

xqd xqd
@@ -50,7 +50,7 @@ class ServiceController extends AdminController
         $grid->column('ondocter.name','医生名称');
         $grid->column('service_type','服务类别')->using([1=>'图文咨询',2=>'电话咨询',3=>'门诊预约'])->label('default');
         $grid->column('ondocter.sex','性别')->using([1=>'男',2=>'女']);
-        $grid->column('docterorganization', __('所属机构'))->pluck('organization_id')->display(function ($organization){
+        $grid->column('docterorganization', __('所属机构'))->where('state',1)->pluck('organization_id')->display(function ($organization){
             $value = Organization::whereIn('id',$organization->toArray())->pluck('intro')->toArray();
             return $value;
         })->label('info')->width(300);
@@ -76,8 +76,8 @@ class ServiceController extends AdminController
         $grid->filter(function ($filter){
             $filter->disableIdFilter();
             $filter->equal('service_type','服务类别')->select([1 => '图文咨询', 2 => '电话咨询', 3 => '门诊预约']);
-            $filter->equal('status','状态')->select([1=>'待审核',2 =>'已通 ',3=>'未开通']);
-            $filter->equal('docterorganization.organization_id','机构')->select(Organization::pluck('intro','id'));
+            $filter->equal('status','状态')->select([1=>'待审核',2 =>'已通 ']);
+            $filter->equal('docterorganization.organization_id','所属机构')->select(Organization::pluck('intro','id'));
         });
         $grid->actions(function ($actions) {
             $actions->disableEdit();

+ 14 - 4
app/Admin/Controllers/ServicePacksManagment/InsuranceAgreementController.php

xqd xqd
@@ -26,16 +26,13 @@ class InsuranceAgreementController extends AdminController
     {
         $grid = new Grid(new InsuranceAgreement());
         $grid->disableBatchActions();
-        $grid->actions(function ($actions){
-           $actions->disableView();
-        });
         $grid->filter(function ($filter){
            $filter->disableIdFilter();
            $filter->like('name','协议名称');
         });
         $grid->column('id', __('Id'));
         $grid->column('name', __('协议名称'));
-        $grid->column('content', __('协议内容'))->limit(20,'...');
+//        $grid->column('content', __('协议内容'))->limit('300','...');
         $status = [
             'off' => ['value' => 0, 'text' => '禁用', 'color' => 'danger'],
             'on'  => ['value' => 1, 'text' => '启用', 'color' => 'success'],
@@ -54,6 +51,19 @@ class InsuranceAgreementController extends AdminController
      * @return Show
      */
 
+    protected function detail($id)
+    {
+        $show = new Show(InsuranceAgreement::findOrFail($id));
+
+        $show->field('id', 'ID');
+        $show->field('name', '协议名称');
+        $show->field('content', '协议内容')->unescape();
+        $show->field('status', '状态')->using([0=>'禁用',1=>'启用'])->label('info');
+        $show->field('created_at', '创建时间');
+        $show->field('updated_at', '更新时间');
+
+        return $show;
+    }
     /**
      * Make a form builder.
      *

+ 84 - 0
app/Admin/Controllers/ServicePacksManagment/ServiceAgreementController.php

xqd
@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Admin\Controllers\ServicePacksManagment;
+
+use App\Models\ServiceAgreement;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class ServiceAgreementController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '服务协议';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new ServiceAgreement());
+        $grid->filter(function ($filter){
+           $filter->disableIdFilter();
+           $filter->like('name','协议名');
+        });
+        $grid->column('id', __('Id'));
+        $grid->column('name', __('协议名'));
+        $status = [
+            'off' => ['value' => 0, 'text' => '禁用', 'color' => 'danger'],
+            'on'  => ['value' => 1, 'text' => '启用', 'color' => 'success'],
+        ];
+        $grid->column('status', __('状态'))->switch($status);
+        $grid->column('created_at', __('创建时间'));
+        $grid->column('updated_at', __('更新时间'));
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(ServiceAgreement::findOrFail($id));
+
+        $show->field('id', 'ID');
+        $show->field('name', '协议名称');
+        $show->field('content', '协议内容')->unescape();
+        $show->field('status', '状态')->using([0=>'禁用',1=>'启用'])->label('info');
+        $show->field('created_at', '创建时间');
+        $show->field('updated_at', '更新时间');
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new ServiceAgreement());
+
+        $form->text('name', __('协议名称'));
+        $form->editor('content', __('协议内容'));
+        $status = [
+            'off' => ['value' => 0, 'text' => '禁用', 'color' => 'danger'],
+            'on'  => ['value' => 1, 'text' => '启用', 'color' => 'success'],
+        ];
+        $form->switch('status', __('状态'))->states($status)->default(1);
+
+        return $form;
+    }
+}

+ 66 - 0
app/Admin/Controllers/ServicePacksManagment/ServiceDistributionUserList.php

xqd
@@ -0,0 +1,66 @@
+<?php
+
+namespace App\Admin\Controllers\ServicePacksManagment;
+
+
+use App\Admin\Actions\backstage\Service\ServiceBatchGrant;
+use App\Models\Patient;
+use App\Models\User;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class ServiceDistributionUserList extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '服务包发放患者列表';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new Patient());
+        $grid->disableCreateButton();
+        $uesr_id = \request('user_id');
+        $grid->filter(function ($filter){
+            $filter->disableIdFilter();
+            $filter->like('userspatient.nickname','用户姓名');
+            $filter->like('name','患者姓名');
+            $filter->equal('phone','联系电话');
+            $filter->like('guardian_name','监护人姓名');
+            $filter->between('created_at', "创建时间")->datetime();
+            $filter->between('updated_at', "更新时间")->datetime();
+        });
+        $grid->disableActions();
+        $grid->batchActions(function ($batch) {
+            $batch->add(new ServiceBatchGrant());
+            $batch->disableDelete();
+        });
+        $grid->model()->orderBy('id','desc');
+        $grid->column('id', __('患者id'));
+        $grid->column('userspatient.nickname', __('用户姓名'));
+        $grid->column('name', __('患者姓名'));
+        $grid->column('sex', __('性别'))->using([0=>'未知',1=>'男',2=>'女',]);
+//        $grid->column('avatar', __('头像'))->lightbox(['width' =>'', 'height' => 30]);
+        $grid->column('age', __('年龄'));
+        $grid->column('email', __('邮箱'));
+        $grid->column('phone', __('联系电话'));
+        $grid->column('address', __('家庭住址'))->limit(20,'...');
+        $grid->column('guardian_name', __('监护人姓名'));
+        $grid->column('card_type', __('证件类型'))->using([1=>'身份证',2=>'护照']);
+        $grid->column('card_number', __('证件号'));
+        $grid->column('social_card_number', __('社保卡号'));
+        $grid->column('created_at', __('创建时间'));
+        $grid->column('updated_at', __('更新时间'));
+        return $grid;
+    }
+
+}

+ 79 - 3
app/Admin/Controllers/ServicePacksManagment/ServicePacksController.php

xqd xqd xqd xqd xqd xqd
@@ -2,8 +2,10 @@
 
 namespace App\Admin\Controllers\ServicePacksManagment;
 
+use App\Admin\Actions\backstage\Service\ServiceDistributions;
 use App\Models\InsuranceAgreement;
 use App\Models\Nurse;
+use App\Models\ServiceAgreement;
 use App\Models\ServicePack;
 use App\Models\SystemConfig;
 use App\Models\Team;
@@ -29,8 +31,8 @@ class ServicePacksController extends AdminController
         protected function grid()
     {
         $grid = new Grid(new ServicePack());
-        $grid->actions(function ($actions){
-           $actions->disableView();
+        $grid->tools(function (Grid\Tools $tools) {
+            $tools->append(new ServiceDistributions());
         });
         $grid->filter(function ($filter){
            $filter->disableIdFilter();
@@ -40,7 +42,7 @@ class ServicePacksController extends AdminController
         $grid->column('id', __('Id'));
         $grid->column('name', __('服务包名称'));
         $grid->column('intro', __('简介'));
-        $grid->column('desc', __('详细内容'))->limit(100);
+//        $grid->column('desc', __('详细内容'))->limit();
         $grid->column('label','服务类型')->display(function (){
             $tag = [1 => '图文',2 => '电话',3 => '门诊',4 => '计免',5 => '儿保'];
             $datas = $this -> label;
@@ -72,6 +74,7 @@ class ServicePacksController extends AdminController
         $grid->column('image','图片')->lightbox(['width' =>'', 'height' => 30]);
         $grid->column('is_need_insure', __('是否包含保险'))->using([0=>'不包含',1=>'包含']);
         $grid->column('insuranceagreement.name', __('保险协议名称'));
+        $grid->column('serviceagreement.name', __('服务协议名称'));
         $grid->column('phone_minutes', __('电话次数'));
         $grid->column('chat_num', __('图文次数'));
         $grid->column('appoint_num', __('门诊次数'));
@@ -83,6 +86,76 @@ class ServicePacksController extends AdminController
 
         return $grid;
     }
+
+    protected function detail($id)
+    {
+        $show = new Show(ServicePack::findOrFail($id));
+
+        $show->field('id', 'ID');
+        $show->field('name', __('服务包名称'));
+        $show->field('intro', __('简介'));
+        $show->field('desc', '详细内容')->unescape()->as(function ($avatar) {
+            return $avatar;
+        });
+        $show->field('label', __('服务类型'))->unescape()->as(function ($label) {
+            $arr = [];
+            foreach ($label as $value){
+                switch ($value)
+                {
+                    case 1 :
+                        array_push($arr,'图文');
+                        break;
+                    case 2 :
+                        array_push($arr,'电话');
+                        break;
+                    case 3 :
+                        array_push($arr,'门诊');
+                        break;
+                    case 4 :
+                        array_push($arr,'门诊');
+                        break;
+                    case 5 :
+                        array_push($arr,'儿保');
+                        break;
+                }
+            }
+            return $arr;
+        })->label('info');
+        $show->field('price','价格')->as(function ($price){
+           return $price/100;
+        });
+        $show->field('team_id','团队名称')->as(function ($team_id){
+            $arr = [];
+           if ($team_id == 0)
+           {
+               array_push($arr,'通用');
+               return $arr;
+           }
+           foreach ($team_id as $value){
+               $name = Team::where('id',$value)->value('name');
+               array_push($arr,$name);
+           }
+           return $arr;
+        })->label();
+
+        $show->field('image','图片')->image();
+        $show->field('is_need_insure', __('是否包含保险'))->using([0=>'不包含',1=>'包含']);
+        $show->field('insuranceagreement.name', __('保险协议名称'));
+        $show->field('serviceagreement.name', __('保险协议名称'));
+        $show->field('phone_minutes', __('电话次数'));
+        $show->field('chat_num', __('图文次数'));
+        $show->field('appoint_num', __('门诊次数'));
+        $show->field('vaccine_limit_amount', __('计免次数'));
+        $show->field('nurses_limit_amount', __('儿保次数'));
+        $show->field('effective_days', __('服务时长'));
+        $show->field('created_at', __('创建时间'));
+        $show->field('updated_at', __('更新时间'));
+
+
+
+
+        return $show;
+    }
         /**
          * Make a form builder.
          *
@@ -99,6 +172,9 @@ class ServicePacksController extends AdminController
         $form->text('intro', __('简介'))->rules('required' ,['required'=>'请填写简介!']);;
         $form->editor('desc', __('详情内容'))->rules('required' ,['required'=>'请填写内容!']);;
         $form->number('price', __('价钱'))->default(0);
+        $form->select('service_agreement_id','服务协议')
+            ->options(ServiceAgreement::where('status','!=',0)->pluck('name','id'))
+            ->rules('required' ,['required'=>'请填写服务协议!']);
         $form->radio('is_need_insure', __('服务包是否包含保险'))->options([
             0=>'否',
             1=>'是'

+ 1 - 1
app/Admin/Controllers/UserManagement/BmUser/UserListController.php

xqd
@@ -88,7 +88,7 @@ class UserListController extends AdminController
                 if ($time == 0 ){
                     return '';
                 }else{
-                    return $time;
+                    return date('Y-m-d H:i:s',$time);
                 }
             });
         return $grid;

+ 5 - 12
app/Admin/Controllers/UserManagement/DocterManagement/AppointController.php

xqd xqd
@@ -26,7 +26,10 @@ class AppointController extends AdminController
     {
         $grid = new Grid(new DocterSetting());
         $grid->disableCreateButton();
-        $grid->disableActions();
+        $grid->actions(function ($actions){
+           $actions->disableDelete();
+           $actions->disableView();
+        });
         $grid->disableBatchActions();
         $docter_id = request('docter_id');
         $grid->model()->where('docter_id',$docter_id)->where('type',1);
@@ -119,17 +122,7 @@ class AppointController extends AdminController
     protected function form()
     {
         $form = new Form(new DocterSetting());
-
-        $form->number('docter_id', __('Docter id'));
-        $form->number('type', __('Type'));
-        $form->number('status', __('Status'));
-        $form->number('show_days', __('Show days'));
-        $form->number('service_times', __('Service times'));
-        $form->number('service_num', __('Service num'));
-        $form->number('org_id', __('Org id'));
-        $form->decimal('appoint_price', __('Appoint price'))->default(0.00);
-        $form->text('service_time', __('Service time'));
-
+        $form->decimal('appoint_price', __('预约价格'))->default(0.00);
         return $form;
     }
 }

+ 4 - 9
app/Admin/Controllers/UserManagement/DocterManagement/ChatController.php

xqd xqd xqd
@@ -27,7 +27,9 @@ class ChatController extends AdminController
     {
         $grid = new Grid(new DocterTimes());
         $grid->disableCreateButton();
-        $grid->disableActions();
+        $grid->actions(function ($actions){
+           $actions->disableDelete();
+        });
         $grid->disableBatchActions();
         $docter_id = request('docter_id');
         $grid->model()->where('docter_id',$docter_id)->where('type',2);
@@ -93,7 +95,6 @@ class ChatController extends AdminController
         $show = new Show(DocterTimes::findOrFail($id));
 
         $show->field('id', __('Id'));
-        $show->field('docter_id', __('Docter id'));
         $show->field('base_price', __('Base price'));
         $show->field('step_price', __('Step price'));
         $show->field('service_time', __('Service time'));
@@ -115,13 +116,7 @@ class ChatController extends AdminController
     {
         $form = new Form(new DocterTimes());
 
-        $form->number('docter_id', __('Docter id'));
-        $form->decimal('base_price', __('Base price'));
-        $form->decimal('step_price', __('Step price'));
-        $form->text('service_time', __('Service time'));
-        $form->number('person', __('Person'));
-        $form->number('type', __('Type'));
-        $form->number('relation_id', __('Relation id'));
+        $form->decimal('base_price', __('基础价格'));
 
         return $form;
     }

+ 1 - 0
app/Admin/Controllers/UserManagement/DocterManagement/DoctorManagementController.php

xqd
@@ -60,6 +60,7 @@ class DoctorManagementController extends AdminController
             $actions->disableEdit();
             // 去掉查看
             $actions->disableView();
+            $actions->disableDelete();
             //签约管理
             $actions->add(new SignUp());
             //团队管理

+ 6 - 8
app/Admin/Controllers/UserManagement/DocterManagement/PhoneController.php

xqd xqd
@@ -26,7 +26,10 @@ class PhoneController extends AdminController
     {
         $grid = new Grid(new DocterTimes());
         $grid->disableCreateButton();
-        $grid->disableActions();
+        $grid->actions(function ($actions){
+           $actions->disableView();
+           $actions->disableDelete();
+        });
         $grid->disableBatchActions();
         $docter_id = request('docter_id');
         $grid->model()->where('docter_id',$docter_id)->where('type',1);
@@ -116,13 +119,8 @@ class PhoneController extends AdminController
     {
         $form = new Form(new DocterTimes());
 
-        $form->number('docter_id', __('Docter id'));
-        $form->decimal('base_price', __('Base price'));
-        $form->decimal('step_price', __('Step price'));
-        $form->text('service_time', __('Service time'));
-        $form->number('person', __('Person'));
-        $form->number('type', __('Type'));
-        $form->number('relation_id', __('Relation id'));
+        $form->decimal('base_price', __('基础价格'));
+        $form->decimal('step_price', __('步进价格'));
 
         return $form;
     }

+ 3 - 0
app/Admin/routes.php

xqd
@@ -66,8 +66,11 @@ Route::group([
     $router->resource('team_docter',TeamDocterController::class);
     //开通记录
     $router->resource('open_pack', ServicePacksManagment\OpenPackController::class);
+    //服务协议
+    $router->resource('service_agreements', ServicePacksManagment\ServiceAgreementController::class);
 
     $router->resource('insurance_agreements', ServicePacksManagment\InsuranceAgreementController::class);
+    $router->resource('service_distribution_user_list', ServicePacksManagment\ServiceDistributionUserList::class);
 
     $router->resource('/setting', 'Config\ConfigController');
     $router->get('/setting_form', 'Config\FormController@form');

+ 3 - 3
app/Community/Actions/Vaccine/AddVaccine.php

xqd xqd
@@ -53,7 +53,7 @@ class AddVaccine extends RowAction
                 $vaccine_data ['created_at'] = Carbon::now();
                 $vaccine_data ['updated_at'] = Carbon::now();
                 OrderVaccine::insert($vaccine_data);
-                Vaccine::decrement('stock',1);
+                Vaccine::where('id',$id)->decrement('stock',1);
             }
 
             //删除并添加库存
@@ -61,12 +61,12 @@ class AddVaccine extends RowAction
                 $id = intval($id);
                 if(!in_array($id,$ids)){
                     OrderVaccine::where(['order_id'=>$order_id,'vaccine_id'=>$id])->delete();
-                    Vaccine::increment('stock',1);
+                    Vaccine::where('id',$id)->increment('stock',1);
                 }
             }
             DB::commit();
         } catch (\Exception $e){
-            dd($e->getMessage());
+            return $this->response()->error($e->getMessage());
             DB::rollBack();
         }
 

+ 4 - 2
app/Community/Controllers/ApiController.php

xqd xqd xqd
@@ -1042,6 +1042,7 @@ class ApiController extends Controller
 //        ];
         $time_t = [];
 //        echo '社区id  '.$org_id.' 医生id  '.$docter_id;
+        $fcount = 0;
         DB::beginTransaction();
         try {
             foreach ($schedule['schedulelingList'] as $t => $v) {
@@ -1092,6 +1093,7 @@ class ApiController extends Controller
                     }
 
                 } else if ($v['status'] == false) { //取消
+                    $fcount ++;
                     $data = [
                         'organization_id' => $org_id,
 //                        'week'=>$week,
@@ -1117,13 +1119,13 @@ class ApiController extends Controller
 //                    if(!$week_schedule) continue;
 //
 //                    //删除排班日期
-                    $s_id = Schedule::where(['schedule_date' => $today, 'schedule_type' => $sType, 'docter_id' => $docter_id])->value('id');
+                    $s_id = Schedule::where(['schedule_date' => $today, 'schedule_type' => $sType, 'organization_id'=>$org_id,'docter_id' => $docter_id])->value('id');
                     unset($data['type']);
 //                        $scount = SelfSchedule::where($data)->count();
                     $pcount = SchedulePeriod::where($data)->count();
 
 
-                    if ($s_id && $pcount == 0) {
+                    if ($s_id && $fcount == 3) {
                         Schedule::where(['id' => $s_id])->delete();
                     }
 //                    //删除排班和详细排班数据

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

xqd
@@ -53,6 +53,7 @@ class DocterOrgController extends AdminController
             return Qualification::where(['id'=>$w])->value('name');
         });
         $grid->column('docter.sex', __('性别'))->display(function ($w){
+            if(empty($w)) return '';
             return $w==1?'男':'女';
         });;
         $grid->column('docter.phone', __('联系方式'));

+ 28 - 2
app/Community/Controllers/OrderController.php

xqd xqd
@@ -31,6 +31,14 @@ class OrderController extends AdminController
     {
         $grid = new Grid(new Order());
         $user = Admin::user();
+        $grid->disableExport(false);
+        $grid->export(function ($export) {
+            $export->filename('门诊订单'.Date('Y-m-d',time()));
+            $export->column('order_status', function ($value, $original) {
+                $order_status_arr = Order::getStatus();
+                return $order_status_arr[intval($original)];
+            } );
+        });
         $is_admin = Admin::user()->inRoles(['administrator','devloper']);
         $grid->model()->orderByDesc('id');
 
@@ -75,8 +83,26 @@ class OrderController extends AdminController
         });;
         $grid->column('docter.name', __('预约医生'));
 //        $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=>'danger']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+//        $grid->column('order_status','订单状态')->using(Order::getStatus())->label([1=>'info',2=>'warring',3=>'info',4=>'success',5=>'danger']);
+        $status_arr = Order::getStatus();
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+
+//        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款']);
+        $grid->column('payment_status', __('支付状态'))->using(Order::getPayStatus())->label([1=>'warring',2=>'success',3=>'info',4=>'danger',5=>'warring']);
+
         //查询
         $grid->quickSearch(function ($model, $query) {
             $model->whereHas('patients',function ($model) use ($query) {

+ 24 - 4
app/Community/Controllers/OrderNurseController.php

xqd xqd
@@ -35,7 +35,14 @@ class OrderNurseController extends AdminController
     {
         $grid = new Grid(new Order());
         $grid->model()->orderByDesc('id');
-
+        $grid->disableExport(false);
+        $grid->export(function ($export) {
+            $export->filename('儿保订单'.Date('Y-m-d',time()));
+            $export->column('order_status', function ($value, $original) {
+                $order_status_arr = Order::getStatus();
+                return $order_status_arr[intval($original)];
+            } );
+        });
         $user = Admin::user();
         $is_admin = Admin::user()->inRoles(['administrator','developer']);
 
@@ -80,9 +87,22 @@ class OrderNurseController extends AdminController
 //            return Docter::where('id',$w)->value('name');
 //        });
         $grid->column('nurse_name', __('项目名称'));
-        $grid->column('order_status','订单状态')->using(Order::getStatus())->label([1=>'info',2=>'warring',3=>'info',4=>'success',5=>'info']);
-        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款'])->label('info');
-
+        $status_arr = Order::getStatus();
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+        $grid->column('payment_status', __('支付状态'))->using(Order::getPayStatus())->label([1=>'warring',2=>'success',3=>'info',4=>'danger',5=>'warring']);
         //查询
         $grid->quickSearch(function ($model, $query) {
             $model->whereHas('patients',function ($model) use ($query) {

+ 61 - 6
app/Community/Controllers/OrderVaccinesController.php

xqd xqd xqd
@@ -9,12 +9,15 @@ use App\Community\Actions\Vaccine\OrderCance;
 use App\Community\Actions\Vaccine\Reserved;
 use App\Models\Docter;
 use App\Models\Order;
+use App\Models\OrderPatient;
 use App\Models\OrderVaccine;
 use Encore\Admin\Controllers\AdminController;
 use Encore\Admin\Facades\Admin;
 use Encore\Admin\Form;
 use Encore\Admin\Grid;
 use Encore\Admin\Show;
+use Illuminate\Support\Facades\Date;
+use Illuminate\Support\Facades\DB;
 
 class OrderVaccinesController extends AdminController
 {
@@ -33,26 +36,63 @@ class OrderVaccinesController extends AdminController
     protected function grid()
     {
         $grid = new Grid(new Order());
-        $grid->model()->orderByDesc('id');
+        $res = request()->all();
+
+        $grid->disableExport(false);
+        $grid->export(function ($export) {
+            $export->filename('疫苗订单'.Date('Y-m-d',time()));
+            $export->column('order_status', function ($value, $original) {
+                $order_status_arr = Order::getStatus();
+                return $order_status_arr[intval($original)];
+            } );
+        });
+//        $grid->model()->orderByDesc('orders.id');
+
+//        if(!empty($res['orderPatient']['appoint_start_time']['start']) || !empty($res['orderPatient']['appoint_start_time']['start']) ){
+//
+//            $grid->model()->leftJoin('order_patients','order_patients.order_id','=','orders.id')->orderByDesc('order_patients.appoint_start_time');
+//
+//            $grid->model()->whereHas('orderPatient',function($query){
+//                $query->orderBy( OrderPatient::select('appoint_start_time')
+//                    ->whereColumn('order_id', 'orders.id')
+//                    ->orderBy('appoint_start_time', 'asc'));
+//            });
+//        } else {
+//            $grid->model()->whereHas('orderPatient',function($query){
+//                return $query->orderBy('appoint_start_time','desc')->groupBy('appoint_start_time');
+//            });
+//        }
+        DB::enableQueryLog();
+
+//        select bm_orders.*,bm_order_patients.appoint_end_time,bm_order_patients.appoint_start_time,bm_order_patients.name from `bm_orders`
+//left join `bm_order_patients` on `bm_order_patients`.`order_id` = `bm_orders`.`id` ORDER BY bm_order_patients.appoint_start_time asc;
+
+//
+//        $grid->model()->leftJoin('order_patients','order_patients.order_id','=','orders.id')
+//            ->orderByDesc('order_patients.appoint_start_time');
+//        $grid->model()->orderByDesc('orders.idaa');
+
 
         $user = Admin::user();
         $is_admin = Admin::user()->inRoles(['administrator','devloper']);
 
+
         $is_docter = $user->docter_id;
+        $where = ['product_type'=>4];
         if(!$is_admin){
             $org_id = $user->org_id;
             $where = ['product_type'=>4,'organization_id'=>$org_id];
 //            if($is_docter) {
 //                $where['docter_id'] = Docter::where(['id'=>$user->docter_id])->value('id');
 //            }
-            $grid->model()->where($where);
         }
+        $grid->model()->where($where);
 
         $grid->column('id', __('Id'));
-        $grid->column('orderPatient.name', __('预约用户'));
+        $grid->column('user.nickname', __('预约用户'));
 //        $grid->column('yuyue', __('预约时间'))->display(function ($w){
 //            if(empty($this->orderPatient) || empty($this->orderPatient->appoint_start_time)) return '';
-//            return date('Y-m-d H:i:s',($this->orderPatient->appoint_start_time)) .'致' . date('Y-m-d H:i:s',($this->orderPatient->appoint_end_time));
+//            return date('Y-m-d H:i',($this->orderPatient->appoint_start_time)) .'致' . date('H:i',($this->orderPatient->appoint_end_time));
 //        });
         $grid->column('orderPatient.appoint_start_time', __('预约时间'))->display(function ($w){
             if(empty($this->orderPatient) || empty($this->orderPatient->appoint_start_time)) return '';
@@ -76,8 +116,23 @@ class OrderVaccinesController extends AdminController
 
         });
 //        $grid->column('docter.name', __('排班医生'));
-        $grid->column('order_status', __('订单状态'))->using(Order::getStatus())->label('info');
-//        $grid->column('payment_status', __('支付状态'))->using([1=>'待付款',2=>'已付款',3=>'退款中',4=>'已退款'])->label('info');
+        $status_arr = Order::getStatus();
+        $grid->column('order_status', __('订单状态'))->display(function ($w) use ($status_arr) {
+            $info = $status_arr[intval($w)];
+            if($w == 1 || $w == 2){
+                return '<span class="label label-warning">'.$info.'</span>';
+            } else if( $w == 4 ){
+                return '<span class="label label-success">'.$info.'</span>';
+            } else if($w == 7 || $w == 3 ){
+                return '<span class="label label-info">'.$info.'</span>';
+            } else if($w == 6){
+                return '<span class="label label-danger">'.$info.'</span>';
+            } else {
+                return '<span class="label label-default">'.$info.'</span>';
+            }
+        });
+//        $grid->column('payment_status', __('支付状态'))->using(Order::getPayStatus())->label([1=>'warring',2=>'success',3=>'info',4=>'danger']);
+
 
         $grid->filter(function ($filter)  {
             $filter->column(1/2, function ($filter) {

+ 2 - 1
app/Community/Controllers/UserNoticeController.php

xqd
@@ -47,8 +47,9 @@ class UserNoticeController extends AdminController
         $grid->filter(function ($flter){
             $flter->like('name','请输入患者姓名');
             $flter->like('user.nickname','请输入监护人姓名');
+            $flter->like('phone','电话');
             $flter->between('birthday','生日')->datetime();
-            $flter->between('orderpatient.appoint_start_time','预约时间')->datetime();
+//            $flter->timestampBetween('orderPatient.appoint_start_time','预约时间')->datetime();
             $flter->equal('order.product_type','用户类型')->select([4=>'计免',5=>'儿保']);
         });
 

+ 6 - 10
app/Community/Controllers/VaccineController.php

xqd xqd xqd xqd xqd xqd
@@ -31,6 +31,7 @@ class VaccineController extends AdminController
     protected function grid()
     {
         $grid = new Grid(new Vaccine());
+        $grid->model()->orderByDesc('stock');
         $grid->model()->orderByDesc('id');
         $org_id = Admin::user()->org_id;
         if(!empty($org_id)){
@@ -41,7 +42,7 @@ class VaccineController extends AdminController
         $grid->column('id', __('ID'));
         $grid->column('name', __('疫苗名称'));
 
-        $grid->column('type', __('疫苗类型'))->using(OrganizationVaccine::getType())->label('info');
+        $grid->column('type', __('疫苗类型'))->using(Vaccine::getType())->label('info');
         $grid->column('price', __('价格'))->display(function ($p){
             $t = $this->type;
             if($t == 1)return '免费';
@@ -52,16 +53,10 @@ class VaccineController extends AdminController
             $actions->disableDelete();
         });
 
-//        $grid->column('stock', __('库存'));
-
         $grid->column('stock', __('剩余库存'))->display(function ($w){
             return !empty($w) ? $w :  0;
         });
-//        $grid->column('org_id', __('已使用量'))->display(function ()  {
-//           return Order::where(['product_type'=>4])->wherehas('orderVaccine',function ($query){
-//                $query->where('vaccine_id',$this->id);
-//            })->count();
-//        });
+        $grid->column('use_count', __('已使用量'));
 //        $grid->column('today_num', __('今日预约'))->display(function ()  {
 //            return Order::where(['product_type'=>4])->wherehas('orderVaccine',function ($query){
 //                $query->where('vaccine_id',$this->id);
@@ -71,6 +66,7 @@ class VaccineController extends AdminController
         $grid->column('remark', __('备注'));
         $grid->filter(function ($fliter){
             $fliter->like('name','疫苗');
+            $fliter->equal('type','疫苗类型')->select(Vaccine::getType());
         });
 
         $grid->column('created_at', __('创建时间'));
@@ -95,7 +91,7 @@ class VaccineController extends AdminController
 
         $show->field('id', __('Id'));
         $show->field('name', __('疫苗'));
-        $show->field('type', __('疫苗类型'))->using(OrganizationVaccine::getType());
+        $show->field('type', __('疫苗类型'))->using(Vaccine::getType());
         $show->field('price', __('价格'))->as(function ($w){
             return round($w/100, 2).'元';
         });
@@ -131,7 +127,7 @@ class VaccineController extends AdminController
             $form->hidden('org_id', __('类型'))->value($org_id);
         }
         $form->text('name', __('疫苗名称'))->rules('required',['required'=>'请输入疫苗']);
-        $form->select('type', __('疫苗类型'))->options(OrganizationVaccine::getType())->when(1,function () use($form){
+        $form->select('type', __('疫苗类型'))->options(Vaccine::getType())->when(1,function () use($form){
             $form->hidden('price','价格')->value(0);
         })->when(2,function () use($form){
             $form->text('price','价格');

+ 22 - 0
app/Http/Controllers/Api/V1/TeamController.php

xqd
@@ -0,0 +1,22 @@
+<?php
+
+
+namespace App\Http\Controllers\Api\V1;
+
+
+use App\Models\TeamDocter;
+
+class TeamController extends AuthController
+{
+
+    public function teamInfo()
+    {
+        $req = request()->post();
+        $this->validate(request(), [
+            'id' => 'required',
+        ]);
+
+        $idList = TeamDocter::where('team_id',intval($req['id']))->pluck('docter_id')->toArray();
+        return out($idList);
+    }
+}

+ 1 - 1
app/Http/Controllers/Api/V2/DoctorController.php

xqd
@@ -2208,7 +2208,7 @@ class DoctorController extends AuthController
                 if($lists){
                     $schedule_id = $lists['id'];
                 }else{
-                    $lists2 = Schedule::create(['schedule_type'=>1,'schedule_date'=>$req['schedule_date'],'schedule_day'=>str_replace('-','/',$req['schedule_date']),'week'=>$req['week'],'docter_id'=>$doctor_id,'organization_id'=>0,'per_time_num'=>0]);
+                    $lists2 = Schedule::create(['schedule_type'=>1,'schedule_date'=>$req['schedule_date'],'schedule_day'=>str_replace('-','',$req['schedule_date']),'week'=>$req['week'],'docter_id'=>$doctor_id,'organization_id'=>0,'per_time_num'=>0]);
                     if ($lists2){
                         $schedule_id = $lists2['id'];
                     }else{

+ 3 - 4
app/Http/Controllers/Api/V2/PatientController.php

xqd xqd
@@ -1077,9 +1077,9 @@ class PatientController extends AuthController
         $Order = Order::with(['orderPatient','user'])->where(['id'=>$order_id])->first();
         $type = '';
         if ($Order['product_type']==1){
-            $type = '电话咨询';
+            $type = '电话咨询已结束';
         }elseif ($Order['product_type']==2){
-            $type = '图文咨询 ';
+            $type = '图文咨询已结束 ';
         }elseif ($Order['product_type']==3){
             $type = '门诊预约';
         }
@@ -1090,8 +1090,7 @@ class PatientController extends AuthController
                     "pages/index",
                     $Order['order_sn'],
                     $type,
-                    date('Y-m-d H:i',$Order['receiving_time']),
-                    $Order['order_patient']['phone'],
+                    $Order['payment_amount'],
                 ],'wechat_small_program');
             }
         }

+ 69 - 24
app/Http/Controllers/AppiontController.php

xqd xqd xqd xqd
@@ -4,6 +4,7 @@
 namespace App\Http\Controllers;
 
 
+use Illuminate\Support\Facades\DB;
 use App\Models\Order;
 use App\Models\OrderPatient;
 use App\Models\Patient;
@@ -11,15 +12,44 @@ use App\Models\User;
 
 class AppiontController extends Controller
 {
+    public function __construct()
+    {
+
+        // 允许 $originarr 数组内的 域名跨域访问
+        header('Access-Control-Allow-Origin:*');
+
+        // 响应类型
+        header('Access-Control-Allow-Methods:POST,GET');
+
+        // 带 cookie 的跨域访问
+        header('Access-Control-Allow-Credentials: true');
+
+        // 响应头设置
+        header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
+
+    }
+
    public function getAppiontInfo()
    {
+       // 允许 $originarr 数组内的 域名跨域访问
+       header('Access-Control-Allow-Origin:*');
+
+       // 响应类型
+       header('Access-Control-Allow-Methods:POST,GET');
+
+       // 带 cookie 的跨域访问
+       header('Access-Control-Allow-Credentials: true');
+
+       // 响应头设置
+       header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
+
        $data = request()->all();
        $defaulRes = [
            'server_handle_result'=>0,
            'reserve_check_result'=>0,
            'allow_get_ticket'=>0,
            'tip_msg'=>'',
-           'reserve_service_no'=>'',
+           'reserve_service_no'=>'Y',
            'reserve_date'=>'',
            'reserve_start_time'=>'',
            'reserve_end_time'=>'',
@@ -44,8 +74,6 @@ class AppiontController extends Controller
                $defaulRes['tip_msg'] = '请输入手机号';
                exit(json_encode($defaulRes));
            }
-//       $sign = md5($data['id'].$data['telphone'].$data['barcode'].$data['st'].$data['st'].$data['area'].$data['st'].$data['st'].$data['SecretKey']);
-//dd($sign);
            if(empty($data['sig'])){
                $defaulRes['tip_msg'] = '请输入sig签名';
                exit(json_encode($defaulRes));
@@ -66,38 +94,55 @@ class AppiontController extends Controller
                exit(json_encode($defaulRes));
            }
 
-           $user_id = User::where('phone',$data['telphone'])->value('id');
+           //先用患者表找,如果没有就直接查找用户表
+           $user_id = Patient::where('phone',$data['telphone'])->value('user_id');
+           if(empty($user_id)){
+               $user_id = User::where('phone',$data['telphone'])->value('id');
+           }
+
            if(empty($user_id)){
-               $defaulRes['sig'] = '无效账号';
+               $defaulRes['tip_msg'] = '无效账号';
                exit(json_encode($defaulRes));
            }
 
+           DB::enableQueryLog();
+           $order = Order::where('user_id',$user_id)->where('organization_id',$data['area'])->select('id','order_sn','user_id','patient_id','is_ticket')->with('orderPatient:order_id,appoint_start_time,appoint_end_time');
 
-           $order = Order::where('user_id',$user_id)->select('id','order_sn','user_id','patient_id','is_ticket')->with('orderPatient:order_id,appoint_start_time,appoint_end_time');
            if($data['st']){
                $order = $order->whereHas('orderPatient',function ($query) use ($data){
-                   $query->where('appoint_start_time','>=',$data['st']);
+                   $query->where('appoint_start_time','<=',$data['st']);
+                   $query->where('appoint_end_time','>=',$data['st']);
                });
            }
-
-           $order_list =$order->get()->toArray();
-
-           foreach ($order_list as $order){
-               $defauldata = $defaulRes;
-               $defauldata['orderId'] = $order['id'];
-               if(!$order['is_ticket']){
-                   $defauldata['reserve_start_time']  = $order['orderPatient']['appoint_start_time'];
-                   $defauldata['reserve_end_time']  = $order['orderPatient']['appoint_end_time'];
-                   $defauldata['allow_post_ticket']  = 1;
-                   $defauldata['reserve_check_result']  = 1;
-                   $defauldata['reserve_date']  = date('Y-m-d',strtotime($order['orderPatient']['appoint_start_time']));
-               } else {
-                   $defauldata['reserve_check_result']  = 1;
-                   $defauldata['allow_post_ticket']  = 0;
+           $order_list =$order->first();
+           if(empty($order_list)){
+               $defaulRes['tip_msg'] = '无预约';
+               exit(json_encode($defaulRes));
+           }
+           $order = $order_list->toArray();
+
+           $defaulRes['orderId'] = $order['id'];
+           $defaulRes['server_handle_result'] = 1;
+           if( $order['is_ticket'] == 0 && !empty($order['order_patient'])){
+               $start = intval($order['order_patient']['appoint_start_time']);
+               $end = intval($order['order_patient']['appoint_end_time']);
+               $date = date('Y-m-d',intval($order['order_patient']['appoint_start_time']));
+
+               if($end < intval($data['st']) || intval($data['st']) < time()){
+                   $defaulRes['tip_msg'] = '预约已过期,您预约的时间为:'.$date.' '.date('H:i',$start).'~'.date('H:i',$end);
+                   exit(json_encode($defaulRes));
                }
-               $appiontList [] = $defauldata;
+               $defaulRes['reserve_start_time']  = date('H:i',$start);
+               $defaulRes['reserve_end_time']  = date('H:i',$end);
+               $defaulRes['allow_post_ticket']  = 1;
+               $defaulRes['allow_get_ticket']  = 1;
+               $defaulRes['reserve_check_result']  = 1;
+               $defaulRes['reserve_date']  = $date;
+           } else {
+               $defaulRes['reserve_check_result']  = 1;
+               $defaulRes['allow_post_ticket']  = 0;
            }
-           exit(json_encode($appiontList));
+           exit(json_encode($defaulRes));
        }
 
    }

+ 1 - 0
app/Models/Article.php

xqd
@@ -15,6 +15,7 @@ class Article extends BaseModel
     public static $_post_type = [
         1=>'健康科普',
         2=>'疫苗科普',
+        3=>'娱乐'
     ];
     public function getIsCollectAttribute()
     {

+ 6 - 2
app/Models/Order.php

xqd xqd
@@ -12,10 +12,11 @@ class Order extends BaseModel
 {
     protected $appends = ['is_evaluate', 'consult_duration', 'callback_phone'];
 
-    CONST UNPAID = 1, NOTACCEPT = 2, ISING = 3, FINISHED = 4,CANCELED=5,ISOUT=6,ISACCEPT=7;//订单状态(1.未支付 2.进行中 3.已完成 4.已取消)
+    CONST UNKONW = 0,UNPAID = 1, NOTACCEPT = 2, ISING = 3, FINISHED = 4,CANCELED=5,ISOUT=6,ISACCEPT=7;//订单状态(1.未支付 2.进行中 3.已完成 4.已取消)
     public static  $_order_status = [
+        self::UNKONW=>'未知',
         self::UNPAID=>'未支付',
-        self::NOTACCEPT=>'待支付',
+        self::NOTACCEPT=>'待接单',
         self::ISING=>'进行中',
         self::FINISHED=>'已完成',
         self::CANCELED=>'已取消',
@@ -81,6 +82,9 @@ class Order extends BaseModel
     public function patients(){
         return $this->belongsTo(Patient::class);
     }
+    public function patient(){
+        return $this->hasOne(Patient::class,'id','patient_id');
+    }
     public function orderPatient()
     {
         return $this->hasOne(OrderPatient::class);

+ 11 - 0
app/Models/ServiceAgreement.php

xqd
@@ -0,0 +1,11 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ServiceAgreement extends Model
+{
+    //
+    protected $table = 'service_agreement';
+}

+ 3 - 0
app/Models/ServicePack.php

xqd
@@ -48,4 +48,7 @@ class ServicePack extends BaseModel
     {
         return $this->hasOne(InsuranceAgreement::class,'id','agreement_id');
     }
+    public function serviceagreement(){
+        return $this->hasOne(ServiceAgreement::class,'id','service_agreement_id');
+    }
 }

+ 18 - 4
app/Models/Vaccine.php

xqd xqd
@@ -4,11 +4,19 @@ namespace App\Models;
 
 class Vaccine extends BaseModel
 {
-    //
-    public static $_post_type = [
-        1=>"Ⅰ类疫苗",
-        2=>"Ⅱ类疫苗"
+
+    const FREETYPE = 1, NOFREETYPE =2;
+    protected $appends = ['use_count'];
+
+    protected static $_type = [
+        self::FREETYPE => 'Ⅰ类',
+        self::NOFREETYPE => 'Ⅱ类',
     ];
+
+    public static function getType(){
+        return self::$_type;
+    }
+
     //导入格式
     protected $fillable = ['type','price',"name","remark","supplier",'stock','states'];
 
@@ -16,6 +24,12 @@ class Vaccine extends BaseModel
     {
         return $this->belongsToMany(Organization::class,'org_id');
     }
+    protected function getUseCountAttribute()
+    {
+        $id = $this->attributes['id'];
+        if(empty($id)) return 0;
+        return OrderVaccine::where(['vaccine_id'=>$id])->count();
+    }
 
     public function organizationvaccines(){
         return $this->hasMany(OrganizationVaccines::class,'vaccine_id');

+ 3 - 5
config/config.php

xqd xqd
@@ -884,7 +884,7 @@ return [
             'touser' => '%s',
             'mp_template_msg' => [
                 'appid' => env('OFFICIAL_WECHAT_APPID'),
-                'template_id' => 'grtzjXaIQNMTI-UoxY8cakzVna4q65s6qqZFbW67rIk',
+                'template_id' => 'kXr_VrMMLMKwxs17sYzGdzYyGy3aq9ZtqmFnNNiiBoc',
                 'url' => '',
                 'miniprogram' => [
                     'appid' => env('WECHAT_APPID', 'wx6131f74e623bf6bf'),
@@ -903,11 +903,9 @@ return [
                     'keyword3' => [
                         'value' => '%s',
                     ],
-                    'keyword4' => [
-                        'value' => '%s',
-                    ],
+
                     'remark' => [
-                        'value' => '点击进入小程序查看详情!',
+                        'value' => '点击进入小程序查看详情,感谢您的使用!',
                     ],
                 ]
             ],

+ 3 - 3
routes/web.php

xqd
@@ -38,7 +38,7 @@ Route::get('/test', 'IndexController@test');
 
 //用户信息
 Route::get('/api/getScheduleInfo', 'ScheDuleController@getScheduleInfo');
-Route::get('/api/getAppiontInfo', 'Appiontcontroller@getAppiontInfo');
-Route::get('/api/docterList', 'Appiontcontroller@docterList');
-Route::get('/api/organizationList', 'Appiontcontroller@organizationList');
+Route::get('/api/getAppiontInfo', 'AppiontController@getAppiontInfo');
+Route::get('/api/docterList', 'AppiontController@docterList');
+Route::get('/api/organizationList', 'AppiontController@organizationList');