Browse Source

异步回调

lizhen_gitee 1 year ago
parent
commit
1e5b6060ee

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

@@ -169,7 +169,7 @@ class Lesson extends Api
 //            'finishtime' => ,
             'usernumber' => $number,
             'userremark' => $remark,
-            'package_order_id' => 0,//好像多余了
+            'package_order_id' => 0,
             'package_remark' => '',//  比如:5/30,5-7/30
         ];
 
@@ -215,7 +215,7 @@ class Lesson extends Api
             if($number > 1){
                 $lesson_order['package_remark'] = ($package_order['sessions'] - $package_order['remain'] + 1) . '-' . ($package_order['sessions'] - $package_order['remain'] + $number) .'/'. $package_order['sessions'];
             }else{
-                $lesson_order['package_remark'] = $package_order['sessions']-$package_order['remain']+1 .'/'. $package_order['sessions'];
+                $lesson_order['package_remark'] = ($package_order['sessions'] - $package_order['remain'] + 1) .'/'. $package_order['sessions'];
             }
 
             //预约单写入
@@ -327,9 +327,9 @@ class Lesson extends Api
             'package_id'  => $package_id,
             'lesson_id'   => $package_info['lesson_id'],
             'sessions'    => $package_info['sessions'],
-            //'starttime' => ,
+            'starttime'   => time(),
             'days'        => $package_info['days'],
-            //'endtime'   => ,
+            'endtime'     => time() + ($package_info['days'] * 86400),
             'price'       => $package_info['price'],
             'remain'      => $package_info['sessions'],
             'order_status'=> 0,

+ 85 - 7
application/api/controller/Notify.php

@@ -60,6 +60,8 @@ class Notify extends Api
     //充值金币 逻辑
     private function recharge_notify_do($out_trade_no){
 
+        $time = time();
+
         Db::startTrans();
         $orderInfo = Db::name('pay_order')->where(['out_trade_no' => $out_trade_no])->lock(true)->find();
         if (empty($orderInfo)) {
@@ -73,17 +75,93 @@ class Notify extends Api
         }
 
         //逻辑开始
-        $args = json_decode($orderInfo['args'],true);
-        $result = model('Wallet')->lockChangeAccountRemain($orderInfo['user_id'],'gold',$args['gold'],10, '金币充值','pay_order',$orderInfo['id']);
-        if($result['status']===false)
-        {
-            Db::rollback();
-            return false;
+        //试课预约
+        if($orderInfo['table_name'] == 'trylesson_order'){
+            $update = [
+                'order_status' => 10,
+                'paytime'      => $time,
+                'updatetime'   => $time,
+            ];
+            $rs = Db::name('trylesson_order')->where('id',$orderInfo['table_id'])->update($update);
+            if($rs === false){
+                Db::rollback();
+                return false;
+            }
         }
+        //售课预约
+        if($orderInfo['table_name'] == 'lesson_order'){
+            $update = [
+                'order_status' => 10,
+                'paytime'      => $time,
+                'updatetime'   => $time,
+            ];
+            $rs = Db::name('lesson_order')->where('id',$orderInfo['table_id'])->update($update);
+            if($rs === false){
+                Db::rollback();
+                return false;
+            }
+        }
+        //售课预约买套餐
+        if($orderInfo['table_name'] == 'package_order'){
+            //修改套餐单
+            $update = [
+                'order_status' => 1,
+                'paytime'      => $time,
+                'updatetime'   => $time,
+            ];
+            $rs = Db::name('package_order')->where('order_no',$orderInfo['out_trade_no'])->update($update); //这里不用id,是因为另有赠品单
+            if($rs === false){
+                Db::rollback();
+                return false;
+            }
+
+            //修改预约单。这一块最好搬到计划任务里
+            $args = json_decode($orderInfo['args'],true);
+            if(isset($args['lesson_order_id']) && !empty($args['lesson_order_id'])){
+
+                $package_order = Db::name('package_order')->where('order_no',$orderInfo['out_trade_no'])->where('is_gift',0)->find();
+                $lesson_order  = Db::name('lesson_order')->where('id',$args['lesson_order_id'])->find();
+
+                //课时能够支撑报名人数
+                if($package_order['remain'] >= $lesson_order['number']){
+
+                    //扣除一节
+                    $update = [
+                        'remain'     => $package_order['remain'] - $lesson_order['number'],
+                        'updatetime' => time(),
+                    ];
+                    $rs1 = Db::name('package_order')->where('id',$package_order['id'])->update($update);
+                    if($rs1 === false){
+                        Db::rollback();
+                        return false;
+                    }
+
+                    //修改预约单状态
+                    $update = [
+                        'order_status' => 10,
+                        'paytime'      => $time,
+                        'updatetime'   => $time,
+                        'package_order_id' => $package_order['id'],
+                    ];
+                    if($lesson_order['number'] > 1){
+                        $update['package_remark'] = ($package_order['sessions'] - $package_order['remain'] + 1) . '-' . ($package_order['sessions'] - $package_order['remain'] + $lesson_order['number']) .'/'. $package_order['sessions'];
+                    }else{
+                        $update['package_remark'] = ($package_order['sessions'] - $package_order['remain'] + 1) .'/'. $package_order['sessions'];
+                    }
+                    $rs = Db::name('lesson_order')->where('id',$args['lesson_order_id'])->update($update);
+                    if($rs === false){
+                        Db::rollback();
+                        return false;
+                    }
+                }
+            }
+
+        }
+
         //逻辑结束
 
         //状态
-        $ros = Db::name('pay_order')->where(['out_trade_no' => $out_trade_no])->update(['order_status'=>1,'notifytime'=>time()]);
+        $ros = Db::name('pay_order')->where(['out_trade_no' => $out_trade_no])->update(['order_status'=>1,'notifytime'=>$time]);
         if($ros === false) {
             Db::rollback();
             return false;

+ 1 - 1
application/api/controller/Trylesson.php

@@ -67,7 +67,7 @@ class Trylesson extends Api
 
         //支付订单下单
         $pay_order = [];
-        $pay_order['user_id'] = $data['user_id'];
+        $pay_order['user_id'] = $sysdata['user_id'];
         $pay_order['out_trade_no'] = $sysdata['order_no'];
         $pay_order['order_amount'] = $sysdata['order_amount'];
         $pay_order['createtime'] = $sysdata['createtime'];