Selaa lähdekoodia

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

Mike 4 vuotta sitten
vanhempi
commit
db802737e9

+ 4 - 2
app/Admin/Controllers/Chart/OrderChart.php

xqd xqd
@@ -81,7 +81,9 @@ class OrderChart
     {
 
         //type 1默认选择当前月份 2根据时间+
-        $month >10??$month = '0'.$month;
+        if(intval($month) < 10){
+           $month  = '0'.$month;
+        }
 
         if($type == 1){
             //查找天
@@ -115,7 +117,7 @@ class OrderChart
             $data = Order::query()
                 ->selectRaw('DATE_FORMAT(created_at,"%m-%d") as day')
                 ->selectRaw('COUNT(*) as count')
-                ->where('created_at', '>', $year.'-'.$month)
+                ->where('created_at', '>=', $year.'-'.$month)
                 ->where('created_at', '<', $year.'-'.($month+1))
                 ->groupBy('day')
                 ->get()->toArray();

+ 93 - 0
app/Admin/Controllers/DocterTypeController.php

xqd
@@ -0,0 +1,93 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\DocterType;
+use Encore\Admin\Controllers\AdminController;
+use Encore\Admin\Form;
+use Encore\Admin\Grid;
+use Encore\Admin\Show;
+
+class DocterTypeController extends AdminController
+{
+    /**
+     * Title for current resource.
+     *
+     * @var string
+     */
+    protected $title = '医生类型';
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new DocterType());
+
+        $grid->column('id', __('ID'));
+        $grid->column('name', __('名称'));
+        $states = [
+            'off' => ['value' => 0, 'text' => '关闭', 'color' => 'danger'],
+            'on'  => ['value' => 1, 'text' => '打开', 'color' => 'success'],
+        ];
+
+        $grid->column('status', __('状态'))->switch($states);
+        $grid->column('created_at', __('创建时间'));
+        $grid->column('updated_at', __('更新时间'));
+        $grid->actions(function($actions){
+            $actions->disableDelete();
+        });
+
+        return $grid;
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        $show = new Show(DocterType::findOrFail($id));
+
+        $show->field('id', __('Id'));
+        $show->field('name', __('名称'));
+        $show->field('status', __('启用禁用'));
+
+        $show->field('created_at', __('创建时间'));
+        $show->field('updated_at', __('更新时间'));
+
+        return $show;
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        $form = new Form(new DocterType());
+
+        $form->text('name', __('名称'));
+        $states = [
+            'off' => ['value' => 0, 'text' => '关闭', 'color' => 'danger'],
+            'on'  => ['value' => 1, 'text' => '打开', 'color' => 'success'],
+        ];
+        $form->switch('status', __('名称'))->states($states);
+
+        $form->tools(function (Form\Tools $tools) {
+            $tools->disableDelete();
+            $tools->disableView();
+        });
+
+        $form->disableEditingCheck();
+        $form->disableCreatingCheck();
+        $form->disableViewCheck();
+
+        return $form;
+    }
+}

+ 10 - 10
app/Admin/Controllers/HomeController.php

xqd
@@ -25,43 +25,43 @@ class HomeController extends Controller
             ->row(function (Row $row) {
                 // 产品类型(1.电话咨询 2.图文咨询 3.门诊预约 4.疫苗接种预约 5.儿保预约 6.服务包 7.充值)
                 $row->column(3, function (Column $column) {
-                    $column->append(infoBox('新增电话咨询订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(1)));
+                    $column->append(infoBox('新增电话咨询订单', 'dropbox', '/admin/consulting_orders?product_type=1', 'green', Sta::getOrderCount(1)));
                 });
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('新增图文咨询订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(2)));
+                    $column->append(\App\Admin\Controllers\infoBox('新增图文咨询订单', 'dropbox', '/admin/consulting_orders?product_type=2', 'green', Sta::getOrderCount(2)));
                 });
 
                 $row->column(3, function (Column $column) {
-                    $column->append(infoBox('新增门诊预约订单', 'user-plus', '/admin/withdraw?status=0', 'green',Sta::getOrderCount(3)));
+                    $column->append(infoBox('新增门诊预约订单', 'user-plus', '/admin/booking_order?product_type=3', 'green',Sta::getOrderCount(3)));
                 });
 
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('新增计免预约订单', 'user-plus', '/admin/withdraw?status=0', 'green', Sta::getOrderCount(4)));
+                    $column->append(\App\Admin\Controllers\infoBox('新增计免预约订单', 'user-plus', '/admin/booking_order?product_type=4', 'green', Sta::getOrderCount(4)));
                 });
             })
             ->row(function (Row $row) {
                 //产品类型(1.电话咨询 2.图文咨询 3.门诊预约 4.疫苗接种预约 5.儿保预约 6.服务包 7.充值)
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('新增儿保订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(5)));
+                    $column->append(\App\Admin\Controllers\infoBox('新增儿保订单', 'dropbox', '/admin/booking_order?product_type=5', 'green', Sta::getOrderCount(5)));
                 });
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('历史总订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(0)));
+                    $column->append(\App\Admin\Controllers\infoBox('历史总订单', 'dropbox', 'javascript:void(0)', 'green', Sta::getOrderCount(0)));
                 });
             })
             ->row('<h1 text-align="center">订单走势</h1>')
             ->row(function (Row $row) {
                 //产品类型(1.电话咨询 2.图文咨询 3.门诊预约 4.疫苗接种预约 5.儿保预约 6.服务包 7.充值)
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('今日订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(7,1)));
+                    $column->append(\App\Admin\Controllers\infoBox('今日订单', 'dropbox', 'javascript:void(0)', 'green', Sta::getOrderCount(7,1)));
                 });
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('昨日订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(7,-1)));
+                    $column->append(\App\Admin\Controllers\infoBox('昨日订单', 'dropbox', 'javascript:void(0)', 'green', Sta::getOrderCount(7,-1)));
                 });
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('进七日订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(7,7)));
+                    $column->append(\App\Admin\Controllers\infoBox('进七日订单', 'dropbox', 'javascript:void(0)', 'green', Sta::getOrderCount(7,7)));
                 });
                 $row->column(3, function (Column $column) {
-                    $column->append(\App\Admin\Controllers\infoBox('近三十日订单', 'dropbox', '/admin/deliver?status=1', 'green', Sta::getOrderCount(7,30)));
+                    $column->append(\App\Admin\Controllers\infoBox('近三十日订单', 'dropbox', 'javascript:void(0)', 'green', Sta::getOrderCount(7,30)));
                 });
 //                1=>'今日订单总数(单)',
 //                        1=>'昨日订单总数(单)',

+ 2 - 1
app/Admin/routes.php

xqd
@@ -18,7 +18,8 @@ Route::group([
     $router->resource('/cdms_user', CdmsController::class);
     $router->resource('/organizations', OrganizationController::class);
     $router->resource('/docters', DocterController::class);
-
+    //医生类型
+    $router->resource('docter_types', DocterTypeController::class);
 
     //文章管理
     $router->resource('articles', ArticleManagement\ArticleController::class);

+ 4 - 2
app/Community/Actions/Docter/ChangeType.php

xqd xqd
@@ -3,6 +3,7 @@
 namespace App\Community\Actions\Docter;
 
 use App\Models\Docter;
+use App\Models\DocterType;
 use Encore\Admin\Actions\RowAction;
 use Illuminate\Database\Eloquent\Model;
 
@@ -20,9 +21,10 @@ class ChangeType extends RowAction
     }
 
     public function form(){
-//        1.问诊医生 2.疫苗医生 3.儿保医生)
+        //1.问诊医生 2.疫苗医生 3.儿保医生)
         $type = $this->row->docter->type;
-        $this->select('type','类型')->options([1=>'门诊医生',2=>'计免医生',3=>'儿保医生'])->value(intval($type));
+        $docterType = DocterType::where(['status'=>1])->pluck('name','id')->toArray();
+        $this->select('type','类型')->options($docterType)->value(intval($type));
     }
 
 }

+ 27 - 19
app/Community/Actions/Vaccine/FasteOrder.php

xqd xqd xqd xqd xqd
@@ -29,6 +29,8 @@ class FasteOrder extends Action
         $patientInfo = Patient::where(['id'=>$data['user']])->first()->toArray();
         $vaccineInfo = Vaccine::where(['id'=>$data['vaccine']])->first()->toArray();
         $orgVaccine = OrganizationVaccine::where(['vaccine_id'=>$data['vaccine'],'org_id'=>$org_id])->first()->toArray();
+
+
         DB::beginTransaction();
         try {
             $orderInfo = [
@@ -36,9 +38,17 @@ class FasteOrder extends Action
                 'organization_id'=>$org_id,
                 'order_sn'=>$patientInfo['user_id'],
                 'product_type'=>4,
-                'order_status'=>3,
+                'total_amount'=>$orgVaccine['price'],
+                'is_faster'=>1,
+                'order_status'=>2,
                 'payment_status'=>2,
             ];
+
+            if($data['date'] == date('Y-m-d',time())){
+                $orderInfo['order_status'] = 3;
+//                $orderInfo['order_notes'] = '快速预约';
+                $orderInfo['receiving_time'] = time();
+            }
             $order = Order::create($orderInfo);
             $order_sn = build_sn($order['id']);
             Order::where('id', $order['id'])->update(['order_sn' => $order_sn]);
@@ -54,29 +64,25 @@ class FasteOrder extends Action
 
             $patienter = OrderPatient::create($addPatient);
             // todo 需要完善疫苗订单
-//            $vaccine = [
-//                'order_id'=>$order['id'],
-//                'order_patient_id'=>$patienter['id'],
-//                'vaccine_id'=>$orgVaccine['vaccine_id'],
-//                'vaccine_type'=>$orgVaccine['type'],
-//                'vaccine_price'=>$orgVaccine['price'],
-//                'vaccine_name'=>$vaccineInfo['name'],
-//                'vaccine_remark'=>$vaccineInfo['remark'],
-//                'vaccine_supplier'=>$orgVaccine['supplier'],
-//            ];
-//
-//            OrderVaccine::create($vaccine);
+            $vaccine = [
+                'order_id'=>$order['id'],
+                'order_patient_id'=>$patienter['id'],
+                'vaccine_id'=>$orgVaccine['vaccine_id'],
+                'vaccine_type'=>$orgVaccine['type'],
+                'vaccine_price'=>$orgVaccine['price'],
+                'vaccine_name'=>$vaccineInfo['name'],
+                'vaccine_remark'=>$orgVaccine['remark'],
+                'vaccine_supplier'=>$orgVaccine['supplier'],
+            ];
+            OrderVaccine::create($vaccine);
+            OrganizationVaccine::where(['vaccine_id'=>$data['vaccine'],'org_id'=>$org_id])->decrement('stock');
             DB::commit();
         } catch ( Exception $e){
             DB::rollBack();
             return $this->response()->error('添加订单失败');
         }
 
-
-
-
         return $this->response()->success('导入完成!')->refresh();
-
     }
 
     public function form()
@@ -85,8 +91,9 @@ class FasteOrder extends Action
         Admin::js('select2.js');
         $patient = Patient::pluck('name','id');
         $org_id = Admin::user()->org_id;
-        $ids = OrganizationVaccine::where(['org_id'=>$org_id])->pluck('vaccine_id');
+        $ids = OrganizationVaccine::where(['org_id'=>$org_id])->where('stock','>',0)->pluck('vaccine_id');
         $vaccine = Vaccine::whereIn('id',$ids)->pluck('name','id');
+        // todo 需要搜索
         $this->select('user', '接种人')->options($patient)->rules('required',['required'=>'请选择接种患者']);
         $this->select('vaccine', '疫苗')->options($vaccine)->rules('required',['required'=>'请选择疫苗']);
         $this->date('date','时间')->rules('required',['required'=>'请选择时间']);
@@ -104,12 +111,13 @@ HTML;
     {
 
         return <<<EOT
+        $("select[name='user']").select2({"allowClear":true,"placeholder":{"id":"","text":"\u75ab\u82d7"}});
         $('#date').blur(function () {
             var url = '';
             var date = $('#date').val();
             console.log(date);
             $.get("/cdms/api/getDateVaccine",{date: this.value}, function (data) {
-                var html = '';
+                var html = '<option value="">请选择时间段</option>';
                 for(let key  in data){
                 console.log(key + '---' + data[key])
                  html += '<option value="'+key+'">'+data[key]+'</option>';

+ 13 - 12
app/Community/Controllers/ApiController.php

xqd
@@ -100,24 +100,25 @@ class ApiController extends Controller
     {
         $date = request('d');
         $org_id = Admin::user()->org_id;
-        return [
-            1=>'09:00',
-            3=>'10:00',
-            4=>'11:00',
-            6=>'12:00',
-            7=>'13:00',
-        ];
+//        return [
+//            1=>'09:00',
+//            3=>'10:00',
+//            4=>'11:00',
+//            6=>'12:00',
+//            7=>'13:00',
+//        ];
         $timeIds = SchedulePeriod::where(['organization_id'=>$org_id,'schedule_date'=>$date])->distinct('time_period_id')->get(['time_period_id'])->toArray();
         if(empty($timeIds)) return [];
         $times = TimePeriod::whereIn('id',$timeIds)->where('start_time_period','>',date('H:i:s',time()))->get();
+        $timer = [];
         foreach ($times as $info){
             $timer[$info['id']] = $info['start_time_period'].'-'.$info['end_time_period'];
         }
-        return [
-            ['id'=>1,'text'=>'09:00'],
-            ['id'=>2,'text'=>'10:00'],
-            ['id'=>3,'text'=>'11:00'],
-        ];
+//        return [
+//            ['id'=>1,'text'=>'09:00'],
+//            ['id'=>2,'text'=>'10:00'],
+//            ['id'=>3,'text'=>'11:00'],
+//        ];
         return $timer;
 
     }

+ 10 - 10
app/Community/Controllers/DocterAccountController.php

xqd
@@ -46,16 +46,16 @@ class DocterAccountController extends  AdminController
 
         $form->hidden('org_id')->value(request('org_id'));
         $form->hidden('docter_id')->value(request('docter_id'));
-//        if($form->isEditing()){
-//            $reoute = request()->route()->parameters();
-//            $id = intval($reoute['docter_account']);
-//            $org_id = CdmsUsers::where(['id'=>$id])->value('org_id');
-//            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
-//        } else {
-//            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
-//        }
-
-        $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::whereIn('name',['门诊医生','儿保医生','计免医生','图文咨询','所有医生'])->get()->pluck('name', 'id'));
+        if($form->isEditing()){
+            $reoute = request()->route()->parameters();
+            $id = intval($reoute['docter_account']);
+            $org_id = CdmsUsers::where(['id'=>$id])->value('org_id');
+            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
+        } else {
+            $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::where('org_id',$org_id)->get()->pluck('name', 'id'));
+        }
+
+//        $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::whereIn('name',['门诊医生','儿保医生','计免医生','图文咨询','所有医生'])->get()->pluck('name', 'id'));
 
         $form->display('created_at', trans('tenancy.created_at'));
         $form->display('updated_at', trans('tenancy.updated_at'));

+ 47 - 45
app/Community/Controllers/HomeController.php

xqd
@@ -27,75 +27,77 @@ class HomeController extends Controller
             ->title('数据概况')
             ->description('社区段实时数据')
             ->row(function (Row $row){
-                   return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">实时概况</p>');
+                   return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">服务数据</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::service();
-                $row->column(3,new InfoBox('今日预约数量(人次)', 'users', 'aqua', '/cdms/home', $data['schedule_paitent']));
-                $row->column(3,new InfoBox('今日排班(人)', 'calendar-check-o', 'aqua', '/cdms/home', $data['schedule_docter']));
-                $row->column(3,new InfoBox('接诊患者(人次)', 'user', 'aqua', '/cdms/home', $data['paitent_num']));
+                $data = StatController::orderTotal();
+                $row->column(3,new InfoBox('门诊订单总数(个)', 'users', 'aqua', '/cdms/orders', $data[0]));
+                $row->column(3,new InfoBox('儿保订单总数(个)', 'calendar-check-o', 'aqua', '/cdms/nurse_users', $data[1]));
+                $row->column(3,new InfoBox('计免订单总数(个)', 'user', 'aqua', '/cdms/order_vaccines', $data[2]));
+                $row->column(3,new InfoBox('服务患者次数(次)', 'user', 'aqua', '/cdms/home', $data[3]));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">疫苗概况</p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">门诊预约</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::vaccine();
-                $row->column(3,new InfoBox('今日预约数量(人次)', 'users', 'aqua', '/cdms/home', $data['today_schedule']));
+                $data = StatController::clinc();
+                $today = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',time()).'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', strtotime('+1days'));
+                $yersterday = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('-1 days')).'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', time());
+                $row->column(3,new InfoBox('今日预约数量(人)', 'users', 'aqua', '/cdms/orders?'.$today, $data['today']));
 //                $row->column(3,new InfoBox('疫苗种类(种)', 'eyedropper', 'aqua', '/cdms/home', $data['sum_num']));
-                $row->column(3,new InfoBox('疫苗库存量)', 'home', 'aqua', '/cdms/home', $data['have_num']));
-                $row->column(3,new InfoBox('疫苗库存告急(种)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
+                $row->column(3,new InfoBox('今日排班人数(人)', 'user', 'aqua', '/cdms/total_schedule?t=1', $data['docters']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'user', 'aqua', '/cdms/orders?'.$yersterday, $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接诊人数(人)', 'user', 'aqua', '#', $data['people']));
 
             })
             ->row(function (Row $row){
-                $data = StatController::vaccine();
-                $row->column(3,new InfoBox('昨日接种量(人次)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
-                $row->column(3,new InfoBox('明日预约量(人次)', 'genderless', 'aqua', '/cdms/home', $data['less_num']));
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">计免预约</p>');
+            })
+            ->row(function (Row $row){
+                $data = StatController::nurse();
+                $today = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',time()).'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', strtotime('+1days'));
+                $yersterday = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('-1 days'))
+                    .'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', time());
+                $tommrow = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('+1 days'))
+                    .'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', strtotime('+2 days'));
 
-//                $row->column(3,new InfoBox('今日预约(人支)', 'hospital-o', 'aqua', '/cdms/home', $data['today_schedule']));
-//                $row->column(3,new InfoBox('预计今日消耗(支)', 'calendar', 'aqua', '/cdms/home', $data['today_vaccine']));
+
+                $row->column(3,new InfoBox('今日预约数量(人)', 'users', 'aqua', '/cdms/order_vaccines?'.$today, $data['today']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'user', 'aqua', '/cdms/order_vaccines?'.$yersterday, $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接种人数(人)', 'user', 'aqua', '/cdms/order_vaccines?status=4&'.$yersterday, $data['people']));
+                $row->column(3,new InfoBox('明日预约数量(人)', 'user', 'aqua', '/cdms/order_vaccines?'.$tommrow, $data['tomorrow']));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">订单概况</p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">儿保预约</p>');
             })
             ->row(function (Row $row){
                 $data = StatController::nurse();
-                $row->column(3,new InfoBox('门诊订单(个)', 'first-order', 'aqua', '/cdms/home', $data[0]));
-                $row->column(3,new InfoBox('计免订单(个)', 'first-order', 'aqua', '/cdms/home', $data[1]));
-                $row->column(3,new InfoBox('儿保订单(个)', 'first-order', 'aqua', '/cdms/home', $data[2]));
+                $today = 'patients[appoint_start_time][start]='.date('Y-m-d 00:00:00',time()).'&patients[appoint_start_time][end]='.date('Y-m-d 00:00:00', strtotime('+1days'));
+                $yersterday = 'patients[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('-1 days'))
+                    .'&patients[appoint_start_time][end]='.date('Y-m-d 00:00:00', time());
+                $tommrow = 'patients[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('+1 days'))
+                    .'&patients[appoint_start_time][end]='.date('Y-m-d 00:00:00', strtotime('+2 days'));
+
+                $row->column(3,new InfoBox('今日预约数量(人)', 'users', 'aqua', '/cdms/order_nurses?'.$today, $data['today']));
+                $row->column(3,new InfoBox('昨日预约数量(人)', 'user', 'aqua', '/cdms/order_nurses?'.$yersterday, $data['yesterday']));
+                $row->column(3,new InfoBox('昨日接种人数(人)', 'user', 'aqua', '/cdms/order_nurses?orders[order_status]=4&'.$yersterday, $data['people']));
+                $row->column(3,new InfoBox('明日预约数量(人)', 'user', 'aqua', '/cdms/order_nurses?'.$tommrow, $data['tomorrow']));
             })
             ->row(function (Row $row){
-                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">今日排班         </p>');
+                return $row->column(12,'<p style="font-family:Arial,Helvetica,sans-serif; font-size:1.2em; margin-top20px;vertical-align:middle; font-weight:normal ">疫苗库存概况</p>');
             })
             ->row(function (Row $row){
-                $data = StatController::clinc();
-                $data = StatController::schedule();
-                $row->column(3,new InfoBox('计免医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['vaccine_num']));
-                $row->column(3,new InfoBox('儿保医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['nurse_num']));
-                $row->column(3,new InfoBox('门诊医生(人)', 'hospital-o', 'aqua', '/cdms/home', $data['clinic_num']));
+                $data = StatController::vaccineToal();
+                $yersterday = 'orderPatient[appoint_start_time][start]='.date('Y-m-d 00:00:00',strtotime('-1 days'))
+                    .'&orderPatient[appoint_start_time][end]='.date('Y-m-d 00:00:00', time());
+
+                $row->column(3,new InfoBox('疫苗总库存(支)', 'first-order', 'aqua', '/cdms/vaccines', $data['have_num']));
+                $row->column(3,new InfoBox('疫苗库存告急(中)', 'first-order', 'aqua', '/cdms/vaccines', $data['less_num']));
+                $row->column(3,new InfoBox('昨日接种消耗(支)', 'first-order', 'aqua', '/cdms/order_vaccines?order_status=4&'.$yersterday, $data['yesterday']));
             });
-//            ->row($this->real_data())
-//            ->row($this->vaccine_data())
-//            ->row($this->nurse_data())
-//            ->row($this->schedule_data());
     }
 
 
-//1. 门诊预约
-//(1) 今日预约数量
-//(2) 今日排班(人)
-//(3) 昨日预约数
-//(4) 昨日接诊人数
-//2. 计免预约
-//(1) 今日预约数量(人次)
-//(2) 疫苗库存量
-//(3) 疫苗库存告急(种)
-//(4) 昨日接种量(人次)
-//(5) 明日预约量(人次)
-//3. 儿保预约
-//(1) 今日预约数量(人次)
-//(2) 昨日预约数量(人次)
-//(3) 昨日服务数量(人次)
-//(4) 明日预约数量(人次)
 
     public function real_data()
     {

+ 1 - 1
app/Community/Controllers/OrderVaccinesController.php

xqd
@@ -79,7 +79,7 @@ class OrderVaccinesController extends AdminController
             $filter->column(1/2, function ($filter) {
                 $filter->equal('docter.id','排班医生')->select('/cdms/api/getDocter');
                 $filter->equal('order_status','订单状态')->select(Order::$_order_status);
-                $filter->between('patients.appoint_start_time','预约时间')->datetime();
+                $filter->between('orderPatient.appoint_start_time','预约时间')->datetime();
             });
         });
         $grid->tools(function ($tools) {

+ 1 - 1
app/Community/Controllers/PermissionController.php

xqd
@@ -86,7 +86,7 @@ class  PermissionController extends AdminController
         $form->text('name', '名称')
             ->creationRules(['required', "unique:cdms_roles"])
             ->updateRules(['required', "unique:cdms_roles,name,{{id}}"]);
-        $form->listbox('permissions', trans('admin.permissions'))->options(CdmsPermissions::all()->pluck('name', 'id'));
+        $form->listbox('permissions', trans('admin.permissions'))->options(CdmsPermissions::whereNotIN('id',[1,4,5,9,10])->pluck('name','id'));
 
         return $form;
     }

+ 93 - 26
app/Community/Controllers/StatController.php

xqd xqd xqd xqd xqd
@@ -7,6 +7,7 @@ namespace App\Community\Controllers;
 use App\Http\Controllers\Controller;
 use App\Models\Docter;
 use App\Models\Order;
+use App\Models\OrderVaccine;
 use App\Models\Schedule;
 use App\Models\SchedulePeriod;
 use App\Models\Vaccine;
@@ -22,7 +23,7 @@ class StatController extends  Controller
         self::$org_id = Admin::user()->org_id;;
     }
 
-    //疫苗统计
+    //疫苗预约
     public static function vaccine()
     {
         $where = [];
@@ -31,28 +32,88 @@ class StatController extends  Controller
         }
         $order = Order::where(['product_type'=>4])->where($where);
 
+        //今日预约
         $today = $order->whereHas('orderPatient',function ($query){
             $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
         })->count();
 
+        //明日预约
         $tomorrow = $order->whereHas('orderPatient',function ($query){
-            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1days')),date('Y-m-d',time())]);
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('+1 days')),date('Y-m-d',strtotime('+2 days'))]);
         })->whereNotIn('order_status',[1,5,6])->count();
 
         //昨日接诊人数
-        $today = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+        $people = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        $data['today'] = $today;
+        $data['yesterday'] = $yesterday;
+        $data['people'] = $people;
+        $data['tomorrow '] = $tomorrow;
+
 
-        $data ['sum_num'] = Vaccine::where($where)->count();
-        $data['have_num'] = Vaccine::where($where)->sum('stock');
-        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//取苗钟数
-        $data['today_schedule'] = Order::where(['order_status'=>1])->where($where)->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
-        $data['today_vaccine'] = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
+//        $data ['sum_num'] = Vaccine::where($where)->count();
+//        $data['have_num'] = Vaccine::where($where)->sum('stock');
+//        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//取苗钟数
+//        $data['today_schedule'] = Order::where(['order_status'=>1])->where($where)->where('product_type',4)->where('created_at','>',date('Y-m-d H:i:s',time()))->count();
+//        $data['today_vaccine'] = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->count();//接诊患者(人次)
         return $data;
 
     }
 
+    //儿保
+    public static function nurse()
+    {
+        $where = [];
+        if(self::$org_id){
+            $where['organization_id']=self::$org_id;
+        }
+        $order = Order::where(['product_type'=>5])->where($where);
+
+        //今日预约
+        $today = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
+        })->count();
+
+        //明日预约
+        $tomorrow = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('+1 days')),date('Y-m-d',strtotime('+2 days'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        //昨日服务人数
+        $people = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
 
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
+        })->whereNotIn('order_status',[1,5,6])->count();
+
+        $data['today'] = $today;
+        $data['tomorrow'] = $tomorrow;
+        $data['people'] = $people;
+        $data['yesterday'] = $yesterday;
+        return $data;
+    }
 
+    //疫苗统计
+    public static  function vaccineToal()
+    {
+        $where = [];
+        if(self::$org_id){
+            $where['organization_id']=self::$org_id;
+        }
+
+        $data['have_num'] = Vaccine::where($where)->sum('stock'); //疫苗库存总数
+        $data['less_num'] = Vaccine::where($where)->where(['stock'=>0])->count();//缺苗钟数
+        $ids = Order::where(['product_type'=>4])->where($where)->with('orderPatient','appoint_start_time',strtotime('today'))->pluck('id')->toArray();//订单id
+        $data['yesterday']= OrderVaccine::whereIn('order_id',$ids)->count(); //疫苗订单总数
+
+        return $data;
+    }
     //实时数据
     public static function  service()
     {
@@ -68,23 +129,27 @@ class StatController extends  Controller
             $query->where(['appoint_start_time'=>strtotime('today')]);
         })->where(['product_type'=>4])->where($where)->count();//接诊患者(人次)
 
+
         return $data;
 
 
     }
 
     //订单概况
-    public static function nurse()
+    public static function orderTotal()
     {
         //3.门诊预约 4.疫苗接种预约 5.儿保预约
-         $where = [];
+        $where = [];
         if(self::$org_id){
-             $where['organization_id']=self::$org_id;
-         }
-         $nurse_num[] = Order::where('product_type',3)->where($where)->count();
-         $nurse_num[] = Order::where('product_type',4)->where($where)->count();
-         $nurse_num[] = Order::where('product_type',5)->where($where)->count();
-         return $nurse_num;
+            $where['organization_id']=self::$org_id;
+        }
+        //todo 是否需要区别状态
+        $order_num[] = Order::where('product_type',3)->where($where)->count();
+        $order_num[] = Order::where('product_type',4)->where($where)->count();
+        $order_num[] = Order::where('product_type',5)->where($where)->count();
+        $order_num[] = Order::whereIn('product_type',[3,4,5])->where($where)->count();
+
+        return $order_num;
     }
 
     //排班统计
@@ -123,23 +188,25 @@ class StatController extends  Controller
         $order = Order::where(['product_type'=>3])->where($where);
 
         //今日预约数
-        $today = $order->where('created_at','>=',date('Y-m-d'))->whereNotIn('order_status',[1,5,6])->count();
+        $today = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1 days')]);
+        })->whereNotIn('order_status',[1,5,6])->count();
 
         //医生排班人数
-        $docters = SchedulePeriod::where(['schedule_date'=>date('Y-m-d',time())])->distinct('docter_id')->count('docter_id');
+        $docters = SchedulePeriod::where(['schedule_date'=>date('Y-m-d',time())])->where($where)->distinct('docter_id')->count('docter_id');
 
-        //昨日接诊人数
-        $yesterday = $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
-
-        //明日预约数
-        $tomorrow = $order->whereHas('orderPatient',function ($query){
-            $query->whereBetween('appoint_start_time',[strtotime('today'),strtotime('+1days')]);
+        //昨日预约
+        $yesterday = $order->whereHas('orderPatient',function ($query){
+            $query->whereBetween('appoint_start_time',[date('Y-m-d',strtotime('-1 days')),date('Y-m-d',strtotime('today'))]);
         })->whereNotIn('order_status',[1,5,6])->count();
 
+        //昨日接诊人数
+        $people= $order->whereBetween('end_time',[strtotime('-1days'),strtotime('today')])->where('order_status',4)->count();
+
         $data['today'] = $today;
-        $data['yesterday'] = $yesterday;
         $data['docters'] = $docters;
-        $data['tomorrow'] = $tomorrow;
+        $data['yesterday'] = $yesterday;
+        $data['people'] = $people;
 
         return $data;
     }

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

xqd
@@ -51,6 +51,7 @@ class UserNoticeController extends AdminController
             $flter->like('orderPatient.name','请输入用户姓名');
             $flter->like('orderUser.nickname','请输入监护人姓名');
             $flter->between('orderUser.birthday','生日')->datetime();
+            $flter->between('orderPatient.appoint_start_time','预约时间')->datetime();
             $flter->equal('product_type','用户类型')->select([4=>'计免',5=>'儿保']);
         });
 

+ 3 - 1
app/Community/routes.php

xqd
@@ -24,7 +24,9 @@ Route::resource('offices', OfficeController::class);
 Route::resource('orders', OrderController::class);
 Route::resource('docter_org', DocterOrgController::class);
 Route::resource('docter_verifies', DocterVerifyController::class);
-//Route::resource('cdms_roles', PermissionController::class);
+
+//社区权限管理
+Route::resource('cdms_roles', PermissionController::class);
 Route::resource('docter_account', DocterAccountController::class);
 Route::resource('docter_chats', DocterChatController::class);
 

+ 21 - 0
app/Helpers/functions.php

xqd xqd
@@ -6,6 +6,7 @@
  * Time: 上午10:56
  */
 
+use EasyWeChat\Factory;
 use Illuminate\Support\Facades\Log;
 use App\Exceptions\ExitOutException;
 use App\Models\SystemConfig;
@@ -529,3 +530,23 @@ if (!function_exists('numDays')){
         return $Days;
     }
 }
+
+//发送微信订阅消息
+if (!function_exists('send_wechat_message')) {
+    function send_wechat_message($type, $arr)
+    {
+        try {
+            $app = Factory::miniProgram(config('config.wechat_small_program'));
+            $data = config('config.wechat_subscribe_message_template')[$type];
+            $json = json_encode($data, JSON_UNESCAPED_UNICODE);
+            $json = vsprintf($json, $arr);
+            $data = json_decode($json, true);
+
+            $ret = $app->subscribe_message->send($data);
+        } catch (Exception $e) {
+            trace(['发送微信订阅消息失败' => $e->getMessage(), '请求参数' => $data ?? '', '返回数据' => $ret ?? ''], 'error');
+        }
+
+        return $ret ?? false;
+    }
+}

+ 19 - 17
app/Http/Controllers/Api/V1/OrderController.php

xqd xqd xqd
@@ -91,7 +91,7 @@ class OrderController extends AuthController
         }
 
         if ($req['payment_type'] == 3) {
-            OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['product_type'], $payment_amount);
+            OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['product_type']);
         }
 
         $order_status = $payment_status = 1;
@@ -277,13 +277,13 @@ class OrderController extends AuthController
         }
 
         if ($req['payment_type'] == 3) {
-            OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['product_type'], $payment_amount);
+            OrderPack::checkUserServicePack($req['order_pack_id'], $user['id'], $req['product_type']);
         }
 
         $order_status = $payment_status = 1;
         $payment_time = 0;
         if ($payment_amount == 0 || in_array($req['payment_type'], [2,3])) {
-            $order_status = 3;
+            $order_status = 7;
             $payment_status = 2;
             $payment_time = time();
         }
@@ -693,28 +693,30 @@ class OrderController extends AuthController
         if ($order['order_status'] == 4) {
             return out(null, 10001, '订单已完成,不能取消了');
         }
-        if ($order['order_status'] == 5) {
+        if ($order['order_status'] == 5 || $order['order_status'] == 6) {
             return out(null, 10002, '订单已取消了,请勿重复操作');
         }
 
-        if ($order['product_type'] == 3) {
-            if ($order['order_patient']['appoint_start_time'] - 1800 < time()) {
+        if (in_array($order['product_type'], [1, 2])) {
+            if ($order['order_status'] == 3) {
+                return out(null, 10004, '医生已接单,不能再取消订单了');
+            }
+        }
+        elseif (in_array($order['product_type'], [4])) {
+            if ($order['order_patient']['appoint_start_time'] - 3600 < time()) {
                 return out(null, 10003, '预约时间临近,不能取消订单了');
             }
+        }
 
-            DB::beginTransaction();
-            try {
-                Order::orderCancel($req['order_id']);
+        DB::beginTransaction();
+        try {
+            Order::orderCancel($req['order_id'], '用户取消订单');
 
-                DB::commit();
-            } catch (Exception $e) {
-                DB::rollBack();
+            DB::commit();
+        } catch (Exception $e) {
+            DB::rollBack();
 
-                return out(null, 500, '取消订单失败,请稍后重试', $e->getMessage());
-            }
-        }
-        else {
-            return out(null, 10001, '暂时只支持取消门诊预约的订单');
+            return out(null, 500, '取消订单失败,请稍后重试', $e->getMessage());
         }
 
         return out();

+ 4 - 1
app/Http/Controllers/Api/V1/PayCallbackController.php

xqd
@@ -46,7 +46,10 @@ class PayCallbackController extends Controller
                         Payment::where('id', $payment['id'])->update(['online_sn' => $message['transaction_id'], 'status' => 2, 'payment_time' => time()]);
                         $order = Order::select(['id', 'user_id', 'docter_id', 'product_type', 'payment_amount', 'total_amount'])->where('id', $payment['order_id'])->first();
                         $order_status = 2;
-                        if (in_array($order['product_type'], [3,4,5,6])) {
+                        if (in_array($order['product_type'], [3,4,5])) {
+                            $order_status = 7;
+                        }
+                        elseif ($order['product_type'] == 6) {
                             $order_status = 3;
                         }
                         elseif ($order['product_type'] == 7) {

+ 10 - 0
app/Models/DocterType.php

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

+ 40 - 15
app/Models/Order.php

xqd xqd
@@ -117,14 +117,9 @@ class Order extends BaseModel
 
         //如果是服务包支付的,就扣服务包的次数
         if ($order['payment_type'] == 3) {
-            OrderPack::deductPackData($order['pay_order_pack_id'], $order['product_type'], $order['payment_amount']);
+            OrderPack::deductPackData($order['pay_order_pack_id'], $order['product_type']);
         }
 
-       /* if (!empty($order['docter_id'])) {
-            //更新医生的服务人数
-            Docter::where('id', $order['docter_id'])->increment('service_persons');
-        }*/
-
         //如果是门诊预约,预约时间段的订单数要加1
         if ($order['product_type'] == 3) {
             $orderPatient = OrderPatient::select(['time_period_id', 'appoint_start_time'])->where('order_id', $order_id)->first();
@@ -167,22 +162,52 @@ class Order extends BaseModel
     }
 
     //取消订单,建议是在事务里面去调用
-    public static function orderCancel($order_id)
+    public static function orderCancel($order_id, $order_notes = '')
     {
         $order = Order::with(['orderPatient'])->where('id', $order_id)->first();
+        //判断预约时间是否还剩1小时内
+        $can_refund = true;
+        if (in_array($order['product_type'], [3,4,5])) {
+            $order_notes = '用户取消预约';
+            if ($order['order_patient']['appoint_start_time'] - 3600 < time()) {
+                $order_notes = '用户超时取消';
+                $can_refund = false;
+            }
+        }
         //改变订单状态
-        Order::where('id', $order_id)->update(['order_status' => 5]);
-        //退钱到余额
-        if (!empty($order['payment_amount'])) {
-            User::changeBalance($order_id, $order['payment_amount'], 4, $order['id'], '取消订单退款');
+        $updateOrder = ['order_status' => 5, 'order_notes' => $order_notes];
+        if ($order['payment_status'] > 1) {
+            //退钱到余额
+            if (!empty($order['payment_amount']) && $can_refund && $order['product_type'] != 5) {
+                User::changeBalance($order_id, $order['payment_amount'], 4, $order['id'], '取消订单退款');
+            }
+            $updateOrder['cancel_time'] = time();
+            if ($can_refund) {
+                $updateOrder['payment_status'] = 4;
+            }
+            if ($order['product_type'] == 5) {
+                $updateOrder['payment_status'] = 5;
+            }
         }
-        //如果距离预约时间还有半个小时以上,那么预约时间段的订单数减1
-        if ($order['order_patient']['appoint_start_time'] - 1800 > time()) {
+        Order::where('id', $order_id)->update($updateOrder);
+
+        //如果是门诊预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
+        if ($order['product_type'] == 3 && $can_refund) {
             $schedule_date = date('Y-m-d', $order['order_patient']['appoint_start_time']);
             SchedulePeriod::where('docter_id', $order['docter_id'])->where('organization_id', $order['organization_id'])->where('time_period_id', $order['order_patient']['time_period_id'])->where('schedule_date', $schedule_date)->decrement('order_num');
         }
-        //更新医生的服务人数
-        Docter::where('id', $order['docter_id'])->decrement('service_persons');
+
+        //如果是疫苗儿保预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
+        if (in_array($order['product_type'], [4,5]) && $can_refund) {
+            $schedule_type_map = [4 => 2, 5 => 3];
+            $schedule_date = date('Y-m-d', $order['order_patient']['appoint_start_time']);
+            SchedulePeriod::where('organization_id', $order['organization_id'])->where('time_period_id', $order['order_patient']['time_period_id'])->where('schedule_date', $schedule_date)->where('schedule_type', $schedule_type_map[$order['product_type']])->decrement('order_num');
+        }
+        //如果是疫苗预约那么取消订单就增加疫苗库存
+        if ($order['product_type'] == 4) {
+            $orderVaccine = OrderVaccine::where('order_id', $order_id)->first();
+            OrganizationVaccine::where('org_id', $order['organization_id'])->where('vaccine_id', $orderVaccine['vaccine_id'])->increment('stock');
+        }
 
         return true;
     }

+ 8 - 8
app/Models/OrderPack.php

xqd xqd xqd
@@ -48,7 +48,7 @@ class OrderPack extends BaseModel
         return 1;
     }
 
-    public static function checkUserServicePack($order_pack_id, $user_id, $product_type, $payment_amount)
+    public static function checkUserServicePack($order_pack_id, $user_id, $product_type)
     {
         $data = self::where('id', $order_pack_id)->where('user_id', $user_id)->first();
         if (empty($data)) {
@@ -74,20 +74,20 @@ class OrderPack extends BaseModel
             }
         }
         elseif ($product_type == 4) {
-            if ($data['vaccine_limit_amount'] < $payment_amount) {
-                exit_out(null, 10006, '服务包疫苗金额不足');
+            if ($data['vaccine_limit_amount'] <= 0) {
+                exit_out(null, 10006, '服务包疫苗次数不足');
             }
         }
         elseif ($product_type == 5) {
-            if ($data['nurses_limit_amount'] < $payment_amount) {
-                exit_out(null, 10007, '服务包儿保金额不足');
+            if ($data['nurses_limit_amount'] <= 0) {
+                exit_out(null, 10007, '服务包儿保次数不足');
             }
         }
 
         return true;
     }
 
-    public static function deductPackData($order_pack_id, $product_type, $payment_amount)
+    public static function deductPackData($order_pack_id, $product_type)
     {
         if ($product_type == 1) {
             self::where('id', $order_pack_id)->decrement('phone_minutes', 10);
@@ -99,10 +99,10 @@ class OrderPack extends BaseModel
             self::where('id', $order_pack_id)->decrement('appoint_num');
         }
         elseif ($product_type == 4) {
-            self::where('id', $order_pack_id)->decrement('vaccine_limit_amount', $payment_amount);
+            self::where('id', $order_pack_id)->decrement('vaccine_limit_amount');
         }
         elseif ($product_type == 5) {
-            self::where('id', $order_pack_id)->decrement('nurses_limit_amount', $payment_amount);
+            self::where('id', $order_pack_id)->decrement('nurses_limit_amount');
         }
 
         return true;

+ 162 - 7
config/config.php

xqd xqd
@@ -34,13 +34,7 @@ return [
         'key' =>  env('WECHAT_KEY','c1891122765718911227657189112276'),
         'notify_url' => env('API_HOST', '').'/api/v1/payCallback/wechatPayNotify'
     ],
-    'aly_sms' => [
-        'access_key' => 'LTAI4FgJdnfwsj5Bb6ioWSD9',
-        'access_secret' => 'S4Tp2eNVKHROuNOLjTvAICTnjqXFFR',
-        'sign_name' => '思维定制',
-        'verify_template_code' => 'SMS_185242509',
-        'sms_verify_code_expire' => 360,
-    ],
+
     'axb'   =>[
         'appid' => 'LTAI4GGMyBKstgVLLckoPxtf',
         'appscret' => 'goLufn8Qe0Mfip5PBR8R0DfbYYYkDF',
@@ -78,4 +72,165 @@ return [
     'no_auth_function_map' => ['docter/docterList', 'docter/docterDetail'],
 
     'pack_label_map' => [1 => '图文', 2 => '电话', 3 => '门诊', 4 => '计免', 5 => '儿保'],
+
+    'wechat_subscribe_message_template' => [
+        //图文咨询/电话咨询
+        1 => [
+            'template_id' => 'M9b6PPKtD7PEqLsSnQ453iTIHtIZZpixOBjUj',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'phrase1' => [
+                    'value' => '%s',
+                ],
+                'name3' => [
+                    'value' => '%s',
+                ],
+                'date4' => [
+                    'value' => '%s',
+                ],
+                'thing8' => [
+                    'value' => '你有一笔%s咨询订单已成功下单,请耐心等待',
+                ],
+                'amount10' => [
+                    'value' => '%s',
+                ],
+            ],
+        ],
+        //门诊预约
+        2 => [
+            'template_id' => 'phcsQ7ZbsJapfmx3NMCha0MrHCqFrgN7BWVneE5OffI',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'name1' => [
+                    'value' => '%s',
+                ],
+                'thing3' => [
+                    'value' => '%s',
+                ],
+                'name5' => [
+                    'value' => '%s',
+                ],
+                'time2' => [
+                    'value' => '%s',
+                ],
+                'thing7' => [
+                    'value' => '你的门诊预约已下单成功,请按时前往就诊',
+                ],
+            ],
+        ],
+        //计免预约 / 儿保预约
+        3 => [
+            'template_id' => 'phcsQ7ZbsJapfmx3NMChaxepR9tJFiqbO25P9tujErI',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'name1' => [
+                    'value' => '%s',
+                ],
+                'thing10' => [
+                    'value' => '%s',
+                ],
+                'thing3' => [
+                    'value' => '%s',
+                ],
+                'time2' => [
+                    'value' => '%s',
+                ],
+                'thing7' => [
+                    'value' => '你的%s已下单成功,请按时前往就诊',
+                ],
+            ],
+        ],
+        //咨询订单接单提醒
+        4 => [
+            'template_id' => '7tnOphwuX8aYenJd-m-LN0jxQm3gkF0HJc1nDX13VMw',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'character_string6' => [
+                    'value' => '%s',
+                ],
+                'thing2' => [
+                    'value' => '%s',
+                ],
+                'thing7' => [
+                    'value' => '%s',
+                ],
+                'time8' => [
+                    'value' => '%s',
+                ],
+                'thing9' => [
+                    'value' => '%s',
+                ],
+            ],
+        ],
+        //图文消息回复提醒
+        5 => [
+            'template_id' => 'WCkfvW9NkV_oQgLsJJuwoVMF-G0ss9y4SkIgCObZwWA',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'name1' => [
+                    'value' => '%s',
+                ],
+                'thing3' => [
+                    'value' => '%s',
+                ],
+                'thing6' => [
+                    'value' => '%s',
+                ],
+                'thing5' => [
+                    'value' => '%s',
+                ],
+                'time4' => [
+                    'value' => '%s',
+                ],
+            ],
+        ],
+        //订单取消提醒
+        6 => [
+            'template_id' => 'bjZ-r79i8sl7zEtdttAtcCPZLkCgFSYHTNWnNVd1cG0',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'character_string1' => [
+                    'value' => '%s',
+                ],
+                'name5' => [
+                    'value' => '%s',
+                ],
+                'thing4' => [
+                    'value' => '%s',
+                ],
+                'thing7' => [
+                    'value' => '%s',
+                ],
+            ],
+        ],
+        //服务包消息配置
+        7 => [
+            'template_id' => 'obCFv2gAnl_RaW-OlnZkjCfi6teT3LUaHxxInUkwLbw',
+            'touser' => '%s',
+            'page' => '%s',
+            'data' => [
+                'thing1' => [
+                    'value' => '%s',
+                ],
+                'date2' => [
+                    'value' => '%s',
+                ],
+                'thing4' => [
+                    'value' => '%s',
+                ],
+                'phrase5' => [
+                    'value' => '%s',
+                ],
+                'thing3' => [
+                    'value' => '%s',
+                ],
+            ],
+        ],
+    ]
 ];

+ 4 - 0
upgrade.md

xqd
@@ -0,0 +1,4 @@
+###重构订单状态逻辑的更新
+- 执行以下sql:
+    ALTER TABLE `bm_orders` 
+    ADD COLUMN `cancel_time` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '取消订单时间' AFTER `receiving_time`;