app_id = $params['app_id']; } $this->log_file = __CLASS__."_app_id_".$this->app_id.'.log'; $this->load->model('apporder/order_purchase_model', 'purchase_model'); $this->load->model('app/liche/app_liche_orders_model'); $this->load->model('receiver/receiver_clues_model','clues_model'); $this->load->model('receiver/receiver_customers_model','customers_model'); $this->load->model('receiver/order/receiver_orders_model','orders_model'); $this->load->model('receiver/order/receiver_order_signs_model','order_signs_model'); $this->load->model('receiver/order/receiver_order_bills_model','bills_model'); $this->load->model('receiver/order/receiver_order_ckcars_model','ckcars_model'); } /** * 支付后逻辑 * @param string $sid * @param float $pay_price 订单真实支付金额 */ public function after_pay($sid,$pay_price = ''){ if($sid){ debug_log("[start] ". __FUNCTION__ . ": sid:".$sid, $this->log_file); $order = $this->purchase_model->get(array('sid'=>$sid,'app_id'=>$this->app_id)); if(!$order){ debug_log("[error] ". __FUNCTION__ . ":{$sid}_订单不存在", $this->log_file); return array('code'=>0,'msg'=>'订单不存在'); } if($order['status']>1){ debug_log("[error] ". __FUNCTION__ . ":{$sid}_订单已支付", $this->log_file); return array('code'=>0,'msg'=>'订单已支付'); } switch ($order['type']){ case 1: //实物商品 break; case 2: //虚拟物品 break; case 3: //活动订单 $upd = array('status'=>2,'status_detail'=>21,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $res = $this->purchase_model->update($upd,array('id'=>$order['id'])); if($res){ //判断客户是否存在 $clues = $this->clues_model->get(['id'=>$order['cf_id']]); if($clues){ $cus = $this->customers_model->get(['rid'=>$clues['id']]); if($cus){ $this->customers_model->update(['status'=>2],['id'=>$cus['id']]); } } return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; case 4: //定金 $upd = array('status'=>2,'status_detail'=>21,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $res = $this->purchase_model->update($upd,array('id'=>$order['id'])); if($res){ //更新订单状态 $row = $this->orders_model->get(['id'=>$order['item_id']]); if($row){ if($row['payway']){//全款 $status = 2; $this->load->model('receiver/order/receiver_order_ckcars_model','next_model'); }else{ $status = 1; $this->load->model('receiver/order/receiver_order_loans_model','next_model'); } $res = $this->orders_model->update(['status'=>$status],['id'=>$row['id']]); $this->order_signs_model->update(['status'=>2],['o_id'=>$row['id']]); if($res){ $add_data = [ 'o_id' => $row['id'], 'c_time' => time() ]; $this->next_model->add($add_data); } } return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; case 5: //委托服务费 case 6: //首付或尾款 $upd = array('status'=>2,'status_detail'=>21,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $res = $this->purchase_model->update($upd,array('id'=>$order['id'])); if($res){ $nopay = $this->purchase_model->count(['app_id'=>$this->app_id,'cf_id'=>$order['item_id'],'type in (5,6)'=>null,'status'=>1,'status_detail'=>11]); //未支付的尾款或者服务费 if(!$nopay){ //更新订单状态 $row = $this->orders_model->get(['id'=>$order['item_id']]); if($row){ $this->ckcars_model->update(['status'=>3],['o_id'=>$row['id']]); $this->orders_model->update(['status'=>3],['id'=>$row['id']]); if(!$this->bills_model->count(['o_id'=>$row['id']])){ $this->bills_model->add(['o_id'=>$row['id'],'c_time'=>time()]); } } } return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; default: debug_log("[error] ". __FUNCTION__ . ":{$order['type']}_未知商品类型", $this->log_file); return array('code'=>0,'msg'=>'未知商品类型'); } } } /** * 支付后逻辑 * @param string $sid * @param float $pay_price 订单真实支付金额 * @param string $descrip 订单描述 */ public function after_pay_liche($sid,$pay_price = '',$descrip=''){ if($sid){ debug_log("[start] ". __FUNCTION__ . ": sid:".$sid, $this->log_file); $order = $this->app_liche_orders_model->get(array('sid'=>$sid)); if(!$order){ debug_log("[error] ". __FUNCTION__ . ":{$sid}_订单不存在", $this->log_file); return array('code'=>0,'msg'=>'订单不存在'); } if($order['status']>0){ debug_log("[error] ". __FUNCTION__ . ":{$sid}_订单已支付", $this->log_file); return array('code'=>0,'msg'=>'订单已支付'); } switch ($order['type']){ case 1: //定金 $upd = array('status'=>1,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $descrip && $upd['descrip'] = $descrip; $res = $this->app_liche_orders_model->update($upd,array('id'=>$order['id'])); if($res) { //更新订单状态 $row = $this->orders_model->get(['id' => $order['o_id']]); if ($row) { $this->order_signs_model->update(['status' => 2], ['o_id' => $row['id']]); if ($row['payway']) {//全款 $status = 2; $this->load->model('receiver/order/receiver_order_ckcars_model', 'next_model'); } else { $status = 1; $this->load->model('receiver/order/receiver_order_loans_model', 'next_model'); } $next_row = $this->next_model->get(['o_id'=>$row['id']]); $order_update = [ 'status' => $status, ]; $row['order_time'] == '0000-00-00 00:00:00' && $order_update['order_time'] = date('Y-m-d H:i:s'); $this->orders_model->update($order_update, ['id' => $row['id']]); if(!$next_row){ $add_data = [ 'o_id' => $row['id'], 'c_time' => time() ]; $this->next_model->add($add_data); } } return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; case 2: //服务费 $upd = array('status'=>1,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $descrip && $upd['descrip'] = $descrip; $res = $this->app_liche_orders_model->update($upd,array('id'=>$order['id'])); if($res){ return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; case 3: //尾款 $upd = array('status'=>1,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $descrip && $upd['descrip'] = $descrip; $res = $this->app_liche_orders_model->update($upd,array('id'=>$order['id'])); if($res){ //判断是否尾款支付完成 $is_pay = $this->app_liche_orders_model->sum('total_price',['status'=>1,'uid'=>$order['uid'],'pid'=>$order['pid']]); //已支付金额 $p_row = $this->app_liche_orders_model->get(['uid'=>$order['uid'],'id'=>$order['pid']]); if($is_pay['total_price']>=$p_row['total_price']){ $this->app_liche_orders_model->update(['status'=>1,'pay_time'=>date('Y-m-d H:i:s')],['id'=>$p_row['id']]); //更新订单状态 $row = $this->orders_model->get(['id'=>$order['o_id']]); if($row){ $this->ckcars_model->update(['status'=>3],['o_id'=>$row['id']]); $this->orders_model->update(['status'=>3],['id'=>$row['id']]); if(!$this->bills_model->count(['o_id'=>$row['id']])){ $this->bills_model->add(['o_id'=>$row['id'],'c_time'=>time()]); } } } return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; case 4: //意向金 $upd = array('status'=>1,'pay_time'=>date('Y-m-d H:i:s')); $pay_price && $upd['pay_price'] = $pay_price; $descrip && $upd['descrip'] = $descrip; $res = $this->app_liche_orders_model->update($upd,array('id'=>$order['id'])); if($res) { //更新订单下定时间 $this->orders_model->update(['order_time' => date('Y-m-d H:i:s')], ['id' => $order['o_id']]); return array('code'=>1,'msg'=>'操作成功'); }else{ return array('code'=>0,'msg'=>'更新失败'); } break; default: debug_log("[error] ". __FUNCTION__ . ":{$order['type']}_未知商品类型", $this->log_file); return array('code'=>0,'msg'=>'未知商品类型'); } } } }