234 lines
12 KiB
PHP
234 lines
12 KiB
PHP
<?php
|
|
/**
|
|
* Created by vim
|
|
* User: lcc
|
|
* Date: 2021/3/25
|
|
* Time: 16:57
|
|
*/
|
|
class Payment_service extends HD_Service{
|
|
|
|
public function __construct($params){
|
|
parent::__construct();
|
|
if($params['app_id']){
|
|
$this->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 订单真实支付金额
|
|
*/
|
|
public function after_pay_liche($sid,$pay_price = ''){
|
|
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;
|
|
$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']]);
|
|
$this->orders_model->update(['status' => $status,'order_time' => date('Y-m-d H:i:s')], ['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;
|
|
$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;
|
|
$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;
|
|
$res = $this->app_liche_orders_model->update($upd,array('id'=>$order['id']));
|
|
if($res) {
|
|
//更新订单状态
|
|
$row = $this->orders_model->get(['id' => $order['o_id']]);
|
|
if($order['total_price']==$row['deposit']){ //意向金等于定金 更新订单下定时间
|
|
$this->orders_model->update(['order_time' => date('Y-m-d H:i:s')], ['id' => $row['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'=>'未知商品类型');
|
|
}
|
|
}
|
|
}
|
|
}
|