ソースを参照

计划任务重写

lizhen_gitee 9 ヶ月 前
コミット
4cd15e91d5
1 ファイル変更134 行追加60 行削除
  1. 134 60
      application/index/controller/Plantask.php

+ 134 - 60
application/index/controller/Plantask.php

@@ -13,7 +13,7 @@ class Plantask extends Controller
 
 
 ////////////////////////////////////////下面都是计划任务方法///////////////////////////////////////////////////////////////
 ////////////////////////////////////////下面都是计划任务方法///////////////////////////////////////////////////////////////
 
 
-    //明天有课,通知。计划任务1小时执行一次
+    //明天有课,通知。计划任务10分钟执行一次
     public function auto_lesson_slot_notice(){
     public function auto_lesson_slot_notice(){
         $starttime = strtotime(date('Y-m-d')) + 86400;
         $starttime = strtotime(date('Y-m-d')) + 86400;
         $endtime   = $starttime + 86399;
         $endtime   = $starttime + 86399;
@@ -38,7 +38,7 @@ class Plantask extends Controller
             ];
             ];
 
 
             $order_list = Db::name('lesson_order')->alias('order')
             $order_list = Db::name('lesson_order')->alias('order')
-                ->field('lesson.name,lesson.name_en,user.firstname,user.lastname,user.email,user.lang,user.notice_type,user.whatsapp')
+                ->field('lesson.name,lesson.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
                 ->join('user','order.user_id = user.id','LEFT')
                 ->join('user','order.user_id = user.id','LEFT')
                 ->join('lesson','order.lesson_id = lesson.id','LEFT')
                 ->join('lesson','order.lesson_id = lesson.id','LEFT')
                 ->where($map)->order('order.id asc')->select();
                 ->where($map)->order('order.id asc')->select();
@@ -48,30 +48,34 @@ class Plantask extends Controller
             }
             }
 
 
             //给这些预约单的用户发邮件
             //给这些预约单的用户发邮件
-            $obj = new Email();
-            foreach($order_list as $order){
-                $result = $obj
-                    ->to($order['email'])
-                    ->subject('Don’t forget about your class tomorrow!')
-                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您预约的['.$order['name'].']将于'.date('Y-m-d H:i',$slot['starttime']).'开课,请合理安排时间,准时来上课哦!')
-                    ->send();
+            try {
+                $obj = new Email();
+                foreach($order_list as $order){
+                    $result = $obj
+                        ->to($order['email'])
+                        ->subject('Don’t forget about your class tomorrow!')
+                        ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您预约的['.$order['name'].']将于'.date('Y-m-d H:i',$slot['starttime']).'开课,请合理安排时间,准时来上课哦!')
+                        ->send();
+
+                    //发whatsapp
+                    $parameters = [
+                        [
+                            'type' => 'text',
+                            'text' => $order['firstname'].' '.$order['lastname'],
+                        ],
+                        [
+                            'type' => 'text',
+                            'text' => $order['name_en'],
+                        ],
+                        [
+                            'type' => 'text',
+                            'text' => date('Y-m-d H:i',$slot['starttime']),
+                        ],
+                    ];
+                    $this->whatapp($order['whatsapp'],'the_class_will_start_tomorrow','en_US',$parameters);
+                }
+            } catch (Exception $e) {
 
 
-                //发whatsapp
-                $parameters = [
-                    [
-                        'type' => 'text',
-                        'text' => $order['firstname'].' '.$order['lastname'],
-                    ],
-                    [
-                        'type' => 'text',
-                        'text' => $order['name_en'],
-                    ],
-                    [
-                        'type' => 'text',
-                        'text' => date('Y-m-d H:i',$slot['starttime']),
-                    ],
-                ];
-                $this->whatapp($order['whatsapp'],'the_class_will_start_tomorrow','en_US',$parameters);
             }
             }
 
 
             //这节课时,任务完成
             //这节课时,任务完成
@@ -83,14 +87,10 @@ class Plantask extends Controller
 
 
     }
     }
 
 
-    //课程取消,通知。计划任务1小时执行一次
+    //课程取消,通知。计划任务5分钟执行一次
     public function auto_lesson_slot_cancel(){
     public function auto_lesson_slot_cancel(){
-        $starttime = strtotime(date('Y-m-d')) + 86400;
-        $endtime   = $starttime + 86399;
-
         $map = [
         $map = [
             'status' => 30,
             'status' => 30,
-//            'starttime' => ['BETWEEN',[$starttime,$endtime]],
             'cancel_notice_status' => 0,
             'cancel_notice_status' => 0,
         ];
         ];
 
 
@@ -108,7 +108,7 @@ class Plantask extends Controller
             ];
             ];
 
 
             $order_list = Db::name('lesson_order')->alias('order')
             $order_list = Db::name('lesson_order')->alias('order')
-                ->field('lesson.name,lesson.name_en,user.firstname,user.lastname,user.email,user.lang,user.notice_type,user.whatsapp')
+                ->field('lesson.name,lesson.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
                 ->join('user','order.user_id = user.id','LEFT')
                 ->join('user','order.user_id = user.id','LEFT')
                 ->join('lesson','order.lesson_id = lesson.id','LEFT')
                 ->join('lesson','order.lesson_id = lesson.id','LEFT')
                 ->where($map)->order('order.id asc')->select();
                 ->where($map)->order('order.id asc')->select();
@@ -118,14 +118,35 @@ class Plantask extends Controller
             }
             }
 
 
             //给这些预约单的用户发邮件
             //给这些预约单的用户发邮件
-            $obj = new Email();
-            foreach($order_list as $order){
+            try {
+                $obj = new Email();
+                foreach($order_list as $order){
+
+                    $result = $obj
+                        ->to($order['email'])
+                        ->subject('Class is Cancelled!')
+                        ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您预约的['.$order['name'].']将于'.date('Y-m-d H:i:s',$slot['starttime']).'开课,请合理安排时间,准时来上课哦!')
+                        ->send();
+
+                    //发whatsapp
+                    $parameters = [
+                        [
+                            'type' => 'text',
+                            'text' => $order['firstname'].' '.$order['lastname'],
+                        ],
+                        [
+                            'type' => 'text',
+                            'text' => $order['name_en'],
+                        ],
+                        [
+                            'type' => 'text',
+                            'text' => date('Y-m-d H:i',$slot['starttime']),
+                        ],
+                    ];
+                    $this->whatapp($order['whatsapp'],'the_class_cancelled','en_US',$parameters);
+                }
+            } catch (Exception $e) {
 
 
-                $result = $obj
-                    ->to($order['email'])
-                    ->subject('Class is Cancelled!')
-                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您预约的['.$order['name'].']将于'.date('Y-m-d H:i:s',$slot['starttime']).'开课,请合理安排时间,准时来上课哦!')
-                    ->send();
             }
             }
 
 
             //这节课时,任务完成
             //这节课时,任务完成
@@ -136,6 +157,47 @@ class Plantask extends Controller
         }
         }
     }
     }
 
 
+    //购买新套餐之后,通知。计划任务5分钟执行一次
+    public function auto_after_buy_package(){
+        $map = [
+            'order.order_status'      => 1,
+            'order.buy_notice_status' => 0,
+            'order.is_gift'           => 0,
+        ];
+        $task_list = Db::name('package_order')->alias('order')
+            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
+            ->join('lesson_package p','order.package_id = p.id','LEFT')
+            ->join('user','order.user_id = user.id','LEFT')
+            ->where($map)->order('order.paytime asc')->limit(1)->select();
+
+        if(empty($task_list)){
+            echo 'empty';
+            exit;
+        }
+
+        $obj = new Email();
+        foreach($task_list as $order){
+            try {
+                //给这些用户发邮件
+                $result = $obj
+                    ->to($order['email'])
+                    ->subject('Elin Dance Studio 套餐一个月内到期提醒!')
+                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
+                    ->send();
+
+            } catch (Exception $e) {
+
+            }
+
+            //任务完成
+            $update = [
+                'notice_status' => 1,//月通知已发送
+            ];
+            Db::name('package_order')->where('id',$order['id'])->update($update);
+        }
+
+    }
+
     //套餐将要到期,一个月,两周,一周,逐级通知,提醒三次。计划任务分别一小时执行一次
     //套餐将要到期,一个月,两周,一周,逐级通知,提醒三次。计划任务分别一小时执行一次
     public function auto_package_order_notice_mon(){
     public function auto_package_order_notice_mon(){
 
 
@@ -147,25 +209,29 @@ class Plantask extends Controller
         ];
         ];
 
 
         $task_list = Db::name('package_order')->alias('order')
         $task_list = Db::name('package_order')->alias('order')
-            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.notice_type,user.whatsapp')
+            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
-            ->where($map)->order('endtime asc')->limit(5)->select();
+            ->where($map)->order('endtime asc')->limit(1)->select();
 
 
         if(empty($task_list)){
         if(empty($task_list)){
             echo 'empty';
             echo 'empty';
             exit;
             exit;
         }
         }
+
         $obj = new Email();
         $obj = new Email();
         foreach($task_list as $order){
         foreach($task_list as $order){
+            try {
+                //给这些用户发邮件
+                $result = $obj
+                    ->to($order['email'])
+                    ->subject('Elin Dance Studio 套餐一个月内到期提醒!')
+                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
+                    ->send();
 
 
-            //给这些用户发邮件
+            } catch (Exception $e) {
 
 
-            $result = $obj
-                ->to($order['email'])
-                ->subject('Elin Dance Studio 套餐一个月内到期提醒!')
-                ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
-                ->send();
+            }
 
 
             //任务完成
             //任务完成
             $update = [
             $update = [
@@ -185,7 +251,7 @@ class Plantask extends Controller
         ];
         ];
 
 
         $task_list = Db::name('package_order')->alias('order')
         $task_list = Db::name('package_order')->alias('order')
-            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.notice_type,user.whatsapp')
+            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
             ->where($map)->order('endtime asc')->limit(5)->select();
             ->where($map)->order('endtime asc')->limit(5)->select();
@@ -194,16 +260,21 @@ class Plantask extends Controller
             echo 'empty';
             echo 'empty';
             exit;
             exit;
         }
         }
+
         $obj = new Email();
         $obj = new Email();
         foreach($task_list as $order){
         foreach($task_list as $order){
 
 
-            //给这些用户发邮件
+            try {
+                //给这些用户发邮件
+
+                $result = $obj
+                    ->to($order['email'])
+                    ->subject('Elin Dance Studio 套餐两周内到期提醒!')
+                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
+                    ->send();
+            } catch (Exception $e) {
 
 
-            $result = $obj
-                ->to($order['email'])
-                ->subject('Elin Dance Studio 套餐两周内到期提醒!')
-                ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
-                ->send();
+            }
 
 
             //任务完成
             //任务完成
             $update = [
             $update = [
@@ -221,7 +292,7 @@ class Plantask extends Controller
         ];
         ];
 
 
         $task_list = Db::name('package_order')->alias('order')
         $task_list = Db::name('package_order')->alias('order')
-            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.notice_type,user.whatsapp')
+            ->field('order.id,order.endtime,p.name,p.name_en,user.firstname,user.lastname,user.email,user.lang,user.whatsapp')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('lesson_package p','order.package_id = p.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
             ->join('user','order.user_id = user.id','LEFT')
             ->where($map)->order('endtime asc')->limit(5)->select();
             ->where($map)->order('endtime asc')->limit(5)->select();
@@ -233,13 +304,16 @@ class Plantask extends Controller
         $obj = new Email();
         $obj = new Email();
         foreach($task_list as $order){
         foreach($task_list as $order){
 
 
-            //给这些用户发邮件
+            try {
+                //给这些用户发邮件
+                $result = $obj
+                    ->to($order['email'])
+                    ->subject('Elin Dance Studio 套餐一周内到期提醒!')
+                    ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
+                    ->send();
+            } catch (Exception $e) {
 
 
-            $result = $obj
-                ->to($order['email'])
-                ->subject('Elin Dance Studio 套餐一周内到期提醒!')
-                ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您购买的套餐['.$order['name'].']将于'.date('Y-m-d H:i:s',$order['endtime']).'过期,建议您在过期内使用完毕!')
-                ->send();
+            }
 
 
             //任务完成
             //任务完成
             $update = [
             $update = [