|
@@ -268,6 +268,8 @@ class Usercenter extends Api
|
|
|
$this->error('取消失败');
|
|
|
}
|
|
|
|
|
|
+ $wait_rs = $this->lesson_order_wait($lesson_order,$slot);
|
|
|
+
|
|
|
//更新已预约人数
|
|
|
$pay_number = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('order_status',10)->sum('usernumber');
|
|
|
$rs_slot = Db::name('lesson_slot')->where('id',$lesson_order['slot_id'])->update(['bookednum' => $pay_number]);
|
|
@@ -281,6 +283,72 @@ class Usercenter extends Api
|
|
|
|
|
|
}
|
|
|
|
|
|
+ //候补上位
|
|
|
+ private function lesson_order_wait($lesson_order,$slot){
|
|
|
+ //找到所有的候补单
|
|
|
+ $houbu_list = Db::name('lesson_order')->where('slot_id',$lesson_order['slot_id'])->where('jointype',2)->order('id asc')->select();
|
|
|
+ if(!empty($houbu_list)){
|
|
|
+
|
|
|
+ $up_usernumber = 0; //此次循环转正的人数
|
|
|
+
|
|
|
+ foreach($houbu_list as $key => $order){
|
|
|
+ if($order['usernumber'] + $up_usernumber <= $lesson_order['usernumber']){
|
|
|
+ //此订单可以转正
|
|
|
+
|
|
|
+ //检查可用的套餐,找一个就可以
|
|
|
+ $map = [
|
|
|
+ 'user_id' => $order['user_id'],
|
|
|
+
|
|
|
+ 'endtime' => ['gt',time()],
|
|
|
+ 'remain' => ['gt',$order['usernumber_hours']],
|
|
|
+ 'order_status' => 1,
|
|
|
+ 'use_status' => 1, //已激活的
|
|
|
+ ];
|
|
|
+ $package_order = Db::name('package_order')->where($map)->where('find_in_set(:lesson_ids,lesson_ids)', ['lesson_ids' => $slot['lesson_id']])->order('endtime asc')->find();
|
|
|
+ if(!$package_order){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //扣除一节。
|
|
|
+ $update = [
|
|
|
+ 'remain' => bcsub($package_order['remain'],$order['usernumber_hours'],1),
|
|
|
+ 'updatetime' => time(),
|
|
|
+ ];
|
|
|
+ $rs1 = Db::name('package_order')->where('id',$package_order['id'])->update($update);
|
|
|
+ if($rs1 === false){
|
|
|
+ Db::rollback();
|
|
|
+// $this->error('扣除套餐余额失败');
|
|
|
+ $this->error('取消失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改预约单数据。延迟到转正的时候处理
|
|
|
+ $lesson_order['order_amount'] = 0;
|
|
|
+ $lesson_order['order_status'] = 10;
|
|
|
+ $lesson_order['paytime'] = time();
|
|
|
+ $lesson_order['package_order_id'] = $package_order['id'];
|
|
|
+
|
|
|
+ $lesson_order['package_remark'] = ($package_order['sessions'] - $package_order['remain']) . '-' . ($package_order['sessions'] - $package_order['remain'] + $order['usernumber_hours']) .'/'. $package_order['sessions'];
|
|
|
+ $lesson_order['paytype'] = 1; //修改支付方式为配套
|
|
|
+ $lesson_order['jointype'] = 1; //修改加入方式为预约
|
|
|
+
|
|
|
+ $rs2 = Db::name('lesson_order')->where('id',$order['id'])->update($lesson_order);
|
|
|
+ if($rs2 === false){
|
|
|
+ Db::rollback();
|
|
|
+// $this->error('扣除套餐余额失败');
|
|
|
+ $this->error('取消失败');
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //加上本次转正的人数
|
|
|
+ $up_usernumber += $order['usernumber'];
|
|
|
+ }else{
|
|
|
+ break;//跳出
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
//过期课程。就是过了上课时间,没签到的
|
|
|
public function lesson_order_signout(){
|
|
|
$map = [
|