Explorar el Código

发放服务包

ChenWuJie hace 4 años
padre
commit
9b877a6c84

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

+ 2 - 2
app/Admin/Controllers/OrdersManagement/ServicePackOrderController.php

xqd
@@ -66,8 +66,8 @@ class ServicePackOrderController extends AdminController
         $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', __('服务包名称'));

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

+ 4 - 0
app/Admin/Controllers/ServicePacksManagment/ServicePacksController.php

xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Admin\Controllers\ServicePacksManagment;
 
+use App\Admin\Actions\backstage\Service\ServiceDistributions;
 use App\Models\InsuranceAgreement;
 use App\Models\Nurse;
 use App\Models\ServicePack;
@@ -29,6 +30,9 @@ class ServicePacksController extends AdminController
         protected function grid()
     {
         $grid = new Grid(new ServicePack());
+        $grid->tools(function (Grid\Tools $tools) {
+            $tools->append(new ServiceDistributions());
+        });
         $grid->filter(function ($filter){
            $filter->disableIdFilter();
            $filter->like('name','服务包名称');

+ 1 - 0
app/Admin/routes.php

xqd
@@ -68,6 +68,7 @@ Route::group([
     $router->resource('open_pack', ServicePacksManagment\OpenPackController::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');

+ 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()
     {

+ 3 - 0
app/Models/Order.php

xqd
@@ -81,6 +81,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);