Browse Source

订单数据修复

wanghaijun 4 years ago
parent
commit
a11df7fab9

+ 12 - 11
app/Community/Actions/Clinc/OrderCancel.php

@@ -17,7 +17,6 @@ class OrderCancel extends RowAction
         $sn = $this->row->order_sn;
         $sn = $this->row->order_sn;
         $openid = $this->row->orderUser->openid;
         $openid = $this->row->orderUser->openid;
 //        $openid = 'oYmUA5A1OIqtpA1XSrw35tbjtv1w';
 //        $openid = 'oYmUA5A1OIqtpA1XSrw35tbjtv1w';
-        if(empty($openid)) return true;
         $time = $this->row->created_at;
         $time = $this->row->created_at;
         $price = (intval($this->row->total_amount) / 100);
         $price = (intval($this->row->total_amount) / 100);
         $pantient = $this->row->orderPatient->name;
         $pantient = $this->row->orderPatient->name;
@@ -27,17 +26,19 @@ class OrderCancel extends RowAction
         DB::beginTransaction();
         DB::beginTransaction();
         try {
         try {
             //退还余额
             //退还余额
-            $res = Order::appiontOrderCancel($id,'社区取消');
-            $msg = [
-                $openid,$sn,'门诊预约',$price,$time,$pantient,$organization,'社区取消',$paystatus
-            ];
-            $miniMsg = [
-                $openid,$sn,'社区取消','门诊预约',$paystatus
-            ];
-            //发送消息
-            $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            $res = Order::appiontOrderCancel($id,'医生取消');
+            if(!empty($openid)) {
+                $msg = [
+                    $openid,$sn,'门诊预约',$price,$time,$pantient,$organization,'医生取消',$paystatus
+                ];
+                $miniMsg = [
+                    $openid,$sn,'医生取消','门诊预约',$paystatus
+                ];
+                //发送消息
+//                $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            }
             DB::commit();
             DB::commit();
-        } catch ( \Exception $e){
+        } catch ( Exception $e){
             DB::rollBack();
             DB::rollBack();
             return $this->response()->error('操作失败!');
             return $this->response()->error('操作失败!');
         }
         }

+ 12 - 9
app/Community/Actions/Nurse/OrderCance.php

@@ -30,20 +30,23 @@ class OrderCance extends RowAction
         DB::beginTransaction();
         DB::beginTransaction();
         try {
         try {
             //退还余额
             //退还余额
-            $res = Order::appiontOrderCancel($id,'社区取消');
+            $res = Order::appiontOrderCancel($id,'医生取消');
             if(empty($order->orderUser) || empty($order->orderUser->openid) ) {
             if(empty($order->orderUser) || empty($order->orderUser->openid) ) {
                 DB::commit();
                 DB::commit();
                 return $this->response()->success('操作成功!')->refresh();
                 return $this->response()->success('操作成功!')->refresh();
             }
             }
             $openid = $order->orderUser->openid;
             $openid = $order->orderUser->openid;
-            $msg = [
-                $openid,$sn,'儿保预约',$price,$time,$pantient,$organization,'社区取消',$paystatus
-            ];
-            $miniMsg = [
-                $openid,$sn,'社区取消','儿保预约',$paystatus
-            ];
-            //用户和医生都要发
-//            $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            if(!empty($openid)){
+                $msg = [
+                    $openid,$sn,'儿保预约',$price,$time,$pantient,$organization,'医生取消',$paystatus
+                ];
+                $miniMsg = [
+                    $openid,$sn,'医生取消','儿保预约',$paystatus
+                ];
+                //用户和医生都要发
+                $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            }
+
             DB::commit();
             DB::commit();
         } catch ( \Exception $e){
         } catch ( \Exception $e){
             DB::rollBack();
             DB::rollBack();

+ 12 - 9
app/Community/Actions/Vaccine/OrderCance.php

@@ -28,18 +28,21 @@ class OrderCance extends RowAction
         DB::beginTransaction();
         DB::beginTransaction();
         try {
         try {
             //退还余额
             //退还余额
-            $res = Order::appiontOrderCancel($id,'社区取消');
-            $msg = [
-                $openid,$sn,'疫苗接种预约',$price,$time,$pantient,$organization,'社区取消',$paystatus
-            ];
-            $miniMsg = [
-                $openid,$sn,'社区取消','疫苗接种预约',$paystatus
-            ];
-            //发送消息
-            $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            $res = Order::appiontOrderCancel($id,'医生取消');
+            if(!empty($openid)){
+                $msg = [
+                    $openid,$sn,'疫苗接种预约',$price,$time,$pantient,$organization,'医生取消',$paystatus
+                ];
+                $miniMsg = [
+                    $openid,$sn,'医生取消','疫苗接种预约',$paystatus
+                ];
+                //发送消息
+                $ret = admin_send_wechat_message(1,$msg,$miniMsg);
+            }
 
 
             DB::commit();
             DB::commit();
         } catch ( \Exception $e){
         } catch ( \Exception $e){
+            dd($e->getMessage());
             DB::rollBack();
             DB::rollBack();
             return $this->response()->error('操作失败!');
             return $this->response()->error('操作失败!');
         }
         }

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

@@ -40,7 +40,6 @@ class OrderController extends AdminController
             } );
             } );
         });
         });
         $is_admin = Admin::user()->inRoles(['administrator','devloper']);
         $is_admin = Admin::user()->inRoles(['administrator','devloper']);
-        $grid->model()->orderByDesc('id');
 
 
         //检查是否是门诊医生
         //检查是否是门诊医生
         $is_docter = $user->isRole('opc');
         $is_docter = $user->isRole('opc');

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

@@ -34,7 +34,7 @@ class OrderNurseController extends AdminController
     protected function grid()
     protected function grid()
     {
     {
         $grid = new Grid(new Order());
         $grid = new Grid(new Order());
-        $grid->model()->orderByDesc('id');
+//        $grid->model()->orderByDesc('orders.id');
         $grid->disableExport(false);
         $grid->disableExport(false);
         $grid->export(function ($export) {
         $grid->export(function ($export) {
             $export->filename('儿保订单'.Date('Y-m-d',time()));
             $export->filename('儿保订单'.Date('Y-m-d',time()));

+ 58 - 0
app/Console/Commands/orderRepair.php

@@ -0,0 +1,58 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Models\Order;
+use Illuminate\Console\Command;
+
+class orderRepair extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'order:repair';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '添加预约时间';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $count = Order::whereIn('product_type',[3,4,5])->count();
+        $page = ceil($count /1000);
+        for ($i=1;$i<=$page;$i++){
+            $list = Order::leftjoin('order_patients','order_patients.order_id','=','orders.id')
+                ->select(['orders.id','order_patients.appoint_start_time','order_patients.appoint_end_time'])
+                ->where('orders.appoint_start_time','=', 0)
+                ->whereIn('product_type',[3,4,5])->limit(($i-1)*1000,$i*1000)->get()->toArray();
+            foreach ($list as $info){
+                $data = ['appoint_date'=>strtotime('today'),'appoint_start_time'=>$info['appoint_start_time'],'appoint_end_time'=>$info['appoint_end_time']];
+                Order::where('id',$info['id'])->update($data);
+                unset($data);
+            }
+            echo '第'.$i.'页'.PHP_EOL;
+            unset($list);
+        }
+        dd('end');
+    }
+}

+ 4 - 29
app/Models/Order.php

@@ -419,56 +419,31 @@ class Order extends BaseModel
     public static function appiontOrderCancel($order_id, $order_notes = '')
     public static function appiontOrderCancel($order_id, $order_notes = '')
     {
     {
         $order = Order::with(['orderPatient'])->where('id', $order_id)->first()->toArray();
         $order = Order::with(['orderPatient'])->where('id', $order_id)->first()->toArray();
-        //判断预约时间是否还剩1小时内
-        $can_refund = true;
-        if (in_array($order['product_type'], [3,4,5])) {
-            if ($order['order_patient']['appoint_start_time'] - 3600 < time()) {
-                $can_refund = false;
-            }
-        }
         //改变订单状态
         //改变订单状态
-        $updateOrder = ['order_status' => 5, 'order_notes' => $order_notes];
+        $updateOrder = ['order_status' => 5, 'order_notes' => $order_notes,'cancel_time'=>time()];
         if ($order['payment_status'] > 1) {
         if ($order['payment_status'] > 1) {
             //判断是余额支付还是服务包支付
             //判断是余额支付还是服务包支付
             if ($order['payment_type'] == 3) {
             if ($order['payment_type'] == 3) {
                 //退服务包的次数
                 //退服务包的次数
                 $map = [1 => 'phone_minutes', 2 => 'chat_num', 3 => 'appoint_num', 4 => 'vaccine_limit_amount', 5 => 'nurses_limit_amount'];
                 $map = [1 => 'phone_minutes', 2 => 'chat_num', 3 => 'appoint_num', 4 => 'vaccine_limit_amount', 5 => 'nurses_limit_amount'];
                 OrderPack::where('id', $order['pay_order_pack_id'])->increment($map[$order['product_type']]);
                 OrderPack::where('id', $order['pay_order_pack_id'])->increment($map[$order['product_type']]);
-                $updateOrder['cancel_time'] = time();
                 $updateOrder['payment_status'] = 4;
                 $updateOrder['payment_status'] = 4;
-                if ($order['product_type'] == 3 && !$can_refund) {
-                    $updateOrder['payment_status'] = 2;
-                }
             }
             }
             else {
             else {
                 //申请退款
                 //申请退款
-                $updateOrder['cancel_time'] = time();
-                //实际付款大于0元才发起退款
-                if ($can_refund && $order['payment_amount'] > 0) {
-                    $updateOrder['payment_status'] = 5;
-                    $arr = [
-                        'order_id' =>$order_id,
-                        'status' => 1,
-                        'refund_applicant' => \Admin::user()->id,
-                    ];
-                    RefundApplication::create($arr);
-                }
-
-                if ($order['product_type'] == 3 && !$can_refund) {
-                    $updateOrder['payment_status'] = 2;
-                }
+                $updateOrder['payment_status'] = 5;
             }
             }
         }
         }
         Order::where('id', $order_id)->update($updateOrder);
         Order::where('id', $order_id)->update($updateOrder);
 
 
         //如果是门诊预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
         //如果是门诊预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
-        if ($order['product_type'] == 3 && $can_refund) {
+        if ($order['product_type'] == 3) {
             $schedule_date = date('Y-m-d', $order['order_patient']['appoint_start_time']);
             $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)->where('order_num', '>', 0)->decrement('order_num');
             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)->where('order_num', '>', 0)->decrement('order_num');
         }
         }
 
 
         //如果是疫苗儿保预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
         //如果是疫苗儿保预约且距离预约时间还有1个小时以上,那么预约时间段的订单数减1
-        if (in_array($order['product_type'], [4,5]) && $can_refund) {
+        if (in_array($order['product_type'], [4,5])) {
             $schedule_type_map = [4 => 2, 5 => 3];
             $schedule_type_map = [4 => 2, 5 => 3];
             $schedule_date = date('Y-m-d', $order['order_patient']['appoint_start_time']);
             $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']])->where('order_num', '>', 0)->decrement('order_num');
             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']])->where('order_num', '>', 0)->decrement('order_num');