Parcourir la source

计划任务发送通知

lizhen_gitee il y a 9 mois
Parent
commit
d60bd0f65c
2 fichiers modifiés avec 62 ajouts et 8 suppressions
  1. 1 0
      application/extra/site.php
  2. 61 8
      application/index/controller/Plantask.php

+ 1 - 0
application/extra/site.php

@@ -64,4 +64,5 @@ return array (
   'default_avatar' => '/uploads/20240106/1a93c413164d2a31a9efae42b9292c3e.png',
   'trylesson_cancel_text_en' => 'For any cancellations less than 24hours before the session,your membership packgae will automatically be deducted in the syetem and for those who pay Per Session,your payment will not be refunded.',
   'trylesson_cancel_text' => '对于在开课前24小时内取消的任何活动,您的会员套餐将自动在系统中扣除,对于那些在线支付的人,您的付款将不会退还。',
+  'whatsapp token' => '',
 );

+ 61 - 8
application/index/controller/Plantask.php

@@ -48,11 +48,11 @@ class Plantask extends Controller
             }
 
             //给这些预约单的用户发邮件
+            $obj = new Email();
             foreach($order_list as $order){
-                $obj = new Email();
                 $result = $obj
                     ->to($order['email'])
-                    ->subject('Elin Dance Studio 明天开课!')
+                    ->subject('Don’t forget about your class tomorrow!')
                     ->message('Hi,'.$order['firstname']. ' ' .$order['lastname'].',您预约的['.$order['name'].']将于'.date('Y-m-d H:i:s',$slot['starttime']).'开课,请合理安排时间,准时来上课哦!')
                     ->send();
             }
@@ -66,6 +66,59 @@ class Plantask extends Controller
 
     }
 
+    //课程取消,通知。计划任务1小时执行一次
+    public function auto_lesson_slot_cancel(){
+        $starttime = strtotime(date('Y-m-d')) + 86400;
+        $endtime   = $starttime + 86399;
+
+        $map = [
+            'status' => 30,
+//            'starttime' => ['BETWEEN',[$starttime,$endtime]],
+            'cancel_notice_status' => 0,
+        ];
+
+        $task_list = Db::name('lesson_slot')->where($map)->order('starttime asc')->limit(1)->select();
+        if(empty($task_list)){
+            echo 'empty';
+            exit;
+        }
+
+        foreach($task_list as $slot){
+            //找出这节课时的预约单
+            $map = [
+                'order.order_status' => 10,
+                'order.slot_id' => $slot['id'],
+            ];
+
+            $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')
+                ->join('user','order.user_id = user.id','LEFT')
+                ->join('lesson','order.lesson_id = lesson.id','LEFT')
+                ->where($map)->order('order.id asc')->select();
+            //$order_list = $this->list_lang($order_list,['name']);
+            if(empty($order_list)){
+                continue;
+            }
+
+            //给这些预约单的用户发邮件
+            $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();
+            }
+
+            //这节课时,任务完成
+            $update = [
+                'notice_status' => 1,
+            ];
+            Db::name('lesson_slot')->where('id',$slot['id'])->update($update);
+        }
+    }
+
     //套餐将要到期,一个月,两周,一周,逐级通知,提醒三次。计划任务分别一小时执行一次
     public function auto_package_order_notice_mon(){
 
@@ -86,11 +139,11 @@ class Plantask extends Controller
             echo 'empty';
             exit;
         }
-
+        $obj = new Email();
         foreach($task_list as $order){
 
             //给这些用户发邮件
-            $obj = new Email();
+
             $result = $obj
                 ->to($order['email'])
                 ->subject('Elin Dance Studio 套餐一个月内到期提醒!')
@@ -124,11 +177,11 @@ class Plantask extends Controller
             echo 'empty';
             exit;
         }
-
+        $obj = new Email();
         foreach($task_list as $order){
 
             //给这些用户发邮件
-            $obj = new Email();
+
             $result = $obj
                 ->to($order['email'])
                 ->subject('Elin Dance Studio 套餐两周内到期提醒!')
@@ -160,11 +213,11 @@ class Plantask extends Controller
             echo 'empty';
             exit;
         }
-
+        $obj = new Email();
         foreach($task_list as $order){
 
             //给这些用户发邮件
-            $obj = new Email();
+
             $result = $obj
                 ->to($order['email'])
                 ->subject('Elin Dance Studio 套餐一周内到期提醒!')