Browse Source

候补也能取消了

lizhen_gitee 6 months ago
parent
commit
797b6f2600

+ 25 - 4
application/admin/controller/Lessonorder.php

@@ -83,7 +83,7 @@ class Lessonorder extends Backend
      */
     public function cancel(){
         $id = input('id');
-        $info = Db::name('lesson_order')->where('id',$id)->where('order_status',10)->find();
+        $info = Db::name('lesson_order')->where('id',$id)->find();
         if(!$info){
             $this->error('请刷新重试');
         }
@@ -95,12 +95,33 @@ class Lessonorder extends Backend
             Db::startTrans();
 
             //找到所有的已报名订单
-            $info = Db::name('lesson_order')->where('id',$id)->where('order_status',10)->lock(true)->find();
+            $info = Db::name('lesson_order')->where('id',$id)->lock(true)->find();
             if(empty($info)){
                 Db::rollback();
                 $this->error('请刷新重试');
             }
 
+            //取消候补单
+            if($info['jointype'] == 2){
+
+                $update = [
+                    'order_status' => 30,
+                    'cancel_time' => $cancel_time,
+                    'cancel_reason' => $cancel_reason,
+                ];
+
+                $rs = Db::name('lesson_order')->where('id',$id)->update($update);
+                Db::commit();
+                $this->success('取消完成');
+
+            }
+
+            //剩下的都是预约单
+            if($info['order_status'] != 10){
+                Db::rollback();
+                $this->error('此订单已无法取消,请刷新重试');
+            }
+
             //套餐给加回去
             if($info['paytype'] == 1){
                 $package_order = Db::name('package_order')->where('id',$info['package_order_id'])->lock(true)->find();
@@ -220,10 +241,10 @@ class Lessonorder extends Backend
             ->field('order.*,user.firstname,user.lastname,user.email,user.whatsapp,lesson.name_en')
             ->join('user','order.user_id = user.id','LEFT')
             ->join('lesson','order.lesson_id = lesson.id','LEFT')
-            ->where('order.slot_id',$lesson_order['slot_id'])->where('order.jointype',2)->order('order.id asc')->select();
+            ->where('order.slot_id',$lesson_order['slot_id'])->where('order.jointype',2)->where('order.order_status',0)->order('order.id asc')->select();
 
         //有多少个空位
-        $pay_number = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('order_status',10)->sum('usernumber');
+        $pay_number = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('order.jointype',1)->where('order_status',10)->sum('usernumber');
         $num_remain = $slot['num_max'] - $pay_number;
 
         $coach_name = Db::name('coach')->where('id',$slot['coach_ids'])->value('nickname');

+ 20 - 3
application/admin/controller/Lessonslot.php

@@ -232,6 +232,17 @@ class Lessonslot extends Backend
             $cancel_time   = time();
 
             Db::startTrans();
+
+            $info = Db::name('lesson_slot')->where('id',$id)->lock(true)->find();
+            if(!$info){
+                Db::rollback();
+                $this->error('请刷新重试');
+            }
+            if($info['status'] != 0){
+                Db::rollback();
+                $this->error('当前课程不能取消');
+            }
+
             $update = [
                 'status' => 30,
                 'remark' => $remark,
@@ -240,16 +251,22 @@ class Lessonslot extends Backend
                 'bookednum' => 0,
             ];
 
-            $rs1 = Db::name('lesson_slot')->where('id',$id)->where('status',0)->update($update);
+            $rs1 = Db::name('lesson_slot')->where('id',$id)->update($update);
             if($rs1 === false){
                 Db::rollback();
                 $this->error('取消失败,请刷新重试');
             }
 
-//            $lesson_info = Db::name('lesson')->where('id',$info['lesson_id'])->find();
+            //找到所有的已候补订单
+            $update = [
+                'order_status' => 30,
+                'cancel_time' => $cancel_time,
+                'cancel_reason' => $cancel_reason,
+            ];
+            $rs2 = Db::name('lesson_order')->where('slot_id',$id)->where('jointype',2)->where('order_status',0)->update($update);
 
             //找到所有的已报名订单
-            $lesson_order_list = Db::name('lesson_order')->where('slot_id',$id)->where('order_status',10)->lock(true)->select();
+            $lesson_order_list = Db::name('lesson_order')->where('slot_id',$id)->where('jointype',1)->where('order_status',10)->lock(true)->select();
             if(!empty($lesson_order_list)){
                 foreach($lesson_order_list as $lesson_order){
                     //套餐给加回去

+ 8 - 8
application/api/controller/Lesson.php

@@ -222,7 +222,7 @@ class Lesson extends Api
             $slot['coach_text'] = substr($coach_text,0,-1);
 
             //剩余空位数量
-            $pay_number = Db::name('lesson_order')->where('slot_id',$slot['id'])->where('order_status',10)->sum('usernumber');
+            $pay_number = Db::name('lesson_order')->where('slot_id',$slot['id'])->where('jointype',1)->where('order_status',10)->sum('usernumber');
             $slot['num_remain'] = $slot['num_max'] - $pay_number;
             if($slot['num_remain'] < 0){
                 $slot['num_remain'] = 0;
@@ -231,7 +231,7 @@ class Lesson extends Api
             //剩余候补数量
             $slot['wait_remain'] = 0;
             if($slot['waitnum_max'] > 0){
-                $wait_number = Db::name('lesson_order')->where('slot_id',$slot['id'])->where('jointype',2)->sum('usernumber');
+                $wait_number = Db::name('lesson_order')->where('slot_id',$slot['id'])->where('jointype',2)->where('order_status',0)->sum('usernumber');
                 $slot['wait_remain'] = $slot['waitnum_max'] - $wait_number;
                 if($slot['wait_remain'] < 0){
                     $slot['wait_remain'] = 0;
@@ -296,7 +296,7 @@ class Lesson extends Api
         $info['coach_text'] = implode(',',$coach_list);
 
         //剩余空位数量
-        $pay_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('order_status',10)->sum('usernumber');
+        $pay_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',1)->where('order_status',10)->sum('usernumber');
         $info['num_remain'] = $info['num_max'] - $pay_number;
         if($info['num_remain'] < 0){
             $info['num_remain'] = 0;
@@ -306,7 +306,7 @@ class Lesson extends Api
         $info['wait_remain'] = 0;
         $info['wait_number'] = 0;
         if($info['waitnum_max'] > 0){
-            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->sum('usernumber');
+            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->where('order_status',0)->sum('usernumber');
             $info['wait_number'] = $wait_number;
             $info['wait_remain'] = $info['waitnum_max'] - $wait_number;
             if($info['wait_remain'] < 0){
@@ -445,7 +445,7 @@ class Lesson extends Api
 
 
         //剩余空位数量
-        $pay_number = Db::name('lesson_order')->where('slot_id',$slot_id)->where('order_status',10)->sum('usernumber');
+        $pay_number = Db::name('lesson_order')->where('slot_id',$slot_id)->where('jointype',1)->where('order_status',10)->sum('usernumber');
         $num_remain = $info['num_max'] - $pay_number;
         if($num_remain < 0){
             $num_remain = 0;
@@ -459,7 +459,7 @@ class Lesson extends Api
         //剩余候补数量
         $wait_remain = 0;
         if($info['waitnum_max'] > 0){
-            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->sum('usernumber');
+            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->where('order_status',0)->sum('usernumber');
             $wait_remain = $info['waitnum_max'] - $wait_number;
             if($wait_remain < 0){
                 $wait_remain = 0;
@@ -513,7 +513,7 @@ class Lesson extends Api
 
 
         //剩余空位数量
-        $pay_number = Db::name('lesson_order')->where('slot_id',$slot_id)->where('order_status',10)->sum('usernumber');
+        $pay_number = Db::name('lesson_order')->where('slot_id',$slot_id)->where('jointype',1)->where('order_status',10)->sum('usernumber');
         $num_remain = $info['num_max'] - $pay_number;
         if($num_remain < 0){
             $num_remain = 0;
@@ -522,7 +522,7 @@ class Lesson extends Api
         //剩余候补数量
         $wait_remain = 0;
         if($info['waitnum_max'] > 0){
-            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->sum('usernumber');
+            $wait_number = Db::name('lesson_order')->where('slot_id',$info['id'])->where('jointype',2)->where('order_status',0)->sum('usernumber');
             $wait_remain = $info['waitnum_max'] - $wait_number;
             if($wait_remain < 0){
                 $wait_remain = 0;

+ 4 - 4
application/api/controller/Usercenter.php

@@ -330,10 +330,10 @@ class Usercenter extends Api
             ->field('order.*,user.firstname,user.lastname,user.email,user.whatsapp,lesson.name_en')
             ->join('user','order.user_id = user.id','LEFT')
             ->join('lesson','order.lesson_id = lesson.id','LEFT')
-            ->where('order.slot_id',$lesson_order['slot_id'])->where('order.jointype',2)->order('order.id asc')->select();
+            ->where('order.slot_id',$lesson_order['slot_id'])->where('order.jointype',2)->where('order.order_status',0)->order('order.id asc')->select();
 
         //有多少个空位
-        $pay_number = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('order_status',10)->sum('usernumber');
+        $pay_number = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('jointype',1)->where('order_status',10)->sum('usernumber');
         $num_remain = $slot['num_max'] - $pay_number;
 
         $coach_name = Db::name('coach')->where('id',$slot['coach_ids'])->value('nickname');
@@ -545,7 +545,7 @@ class Usercenter extends Api
             ->join('lesson','order.lesson_id = lesson.id','LEFT')
             ->join('coach','slot.coach_ids = coach.id','LEFT')
             ->where($map)
-            ->where('order.order_status = 10 or order.jointype = 2') //已支付的 或 候补单
+            ->where('(order.jointype = 1 and order.order_status = 10) or (order.jointype = 2 and order.order_status = 0)') //已支付的 或 候补单
             ->order('slot.starttime desc,order.id desc')
             ->autopage()->select();
         $list = $this->list_lang($list,['name']);
@@ -613,7 +613,7 @@ class Usercenter extends Api
             ->join('lesson','order.lesson_id = lesson.id','LEFT')
             ->join('coach','slot.coach_ids = coach.id','LEFT')
             ->where($map)
-            ->where('order.order_status = 10 or order.jointype = 2') //已支付的 或 候补单
+            ->where('(order.jointype = 1 and order.order_status = 10) or (order.jointype = 2 and order.order_status = 0)') //已支付的 或 候补单
             ->order('slot.starttime desc,order.id desc')
             ->autopage()->select();
         $list = $this->list_lang($list,['name']);

+ 7 - 1
public/assets/js/backend/lessonorder.js

@@ -72,7 +72,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                     url:'lessonorder/cancel/id/{ids}?dialog=1',
                                     target:'_self',
                                     hidden:function(row){
-                                        return row.order_status==10 ? false : true;
+                                        if(row.jointype == 1 && row.order_status==10){
+                                            return false;
+                                        }
+                                        if(row.jointype == 2 && row.order_status==0){
+                                            return false;
+                                        }
+                                        return true;
                                     }
                                 }
                             ],