提交 f576eff3 authored 作者: chengye's avatar chengye

test

上级 8b7c7f60
......@@ -35,14 +35,18 @@ class Payment
{
$paymentFk = (new EmPaymentFk())->get(['oafk_numb' => $numb]);
$payment = (new PaymentModel())->get(['payment_id' => $paymentFk->payment_id]);
$res = $this->writeOffFromPayment($payment->account_id, $payment->payment_id);
$payment->status = $status;
$payment->pay_date = time();
$account = EmAccount::get(['account_id'=>$payment->account_id]);
$account->amount += $payment->amount ;
$account->save();
$payment->status = $status;
$payment->pay_date = time();
$payment->save();
$res = $this->writeOffFromPayment($payment->account_id, $payment->payment_id);
return json([
'code' => 200,
'message' => $mes ?: '已成功付款',
......@@ -95,43 +99,43 @@ class Payment
}
//从缴费单消账单
public function writeOffFromPayment($account_id, $payment_id)
{
public function writeOffFromPayment($account_id,$payment_id){
//获取缴费单对象
$payment = EmPayment::where('payment_id', '=', $payment_id)->find();
$payment = EmPayment::where('payment_id','=',$payment_id)->find();
//获取关联的账单对象
$invs = (new EmInvoice())->alias('ei')->field('ei.invoice_id')
->leftJoin(['em_payment_invoice' => 'epi'], 'epi.invoice_id = ei.invoice_id')
->where('epi.payment_id', '=', $payment_id)
->where('ei.payment_balance', 'neq', 0)
$invs = (new EmInvoice())->alias('ei')->field('ei.invoice_id')
->leftJoin(['em_payment_invoice'=>'epi'],'epi.invoice_id = ei.invoice_id')
->where('epi.payment_id','=',$payment_id)
->where('ei.payment_balance','neq',0)
->order('ei.invoice_id asc')
->select();
$invsArr = [];
//更新缴费单状态
if ($invs->isEmpty()) {
if($invs->isEmpty()){
$payment->status = 4;
$payment->pay_date = time();
$payment->save();
return '审核成功';
} else {
foreach ($invs as $inv) {
foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id;
}
}
//查询可消的额度
$payments_balance = (new EmInvoice)->where('invoice_id', 'in', $invsArr)->sum('payment_balance');
$payments_balance = (new EmInvoice)->where('invoice_id','in',$invsArr)->sum('payment_balance');
//如果可以完全销账 则继续销账
if ($payment->balance > $payments_balance) {
if($payment->balance > $payments_balance){
$invs = (new EmInvoice())->field('invoice_id')
->where('account_id', '=', $account_id)
->where('payment_balance', 'neq', 0)
->where('account_id','=',$account_id)
->where('payment_balance','neq',0)
->order('invoice_id asc')
->select();
if (!$invs->isEmpty()) {
foreach ($invs as $inv) {
if(!$invs->isEmpty()) {
foreach ($invs as $inv){
$invsArr[] = $inv->invoice_id;
}
}
......@@ -140,7 +144,7 @@ class Payment
$paymentIds[] = $payment->payment_id;
//处理账户金额
return $this->writeOff($paymentIds, $invsArr);
return $this->writeOff($paymentIds,$invsArr);
}
/**
......@@ -149,58 +153,48 @@ class Payment
* @param $paymentIds
* @return mixed
*/
private function writeOff($paymentIds, $invoiceIds)
{
private function writeOff($paymentIds,$invoiceIds){
//获取可销账缴费单
$payments = EmPayment::where('payment_id', 'in', $paymentIds)->select();
$payments = EmPayment::where('payment_id','in',$paymentIds)->select();
//获取可销账账单
$invs = EmInvoice::where('invoice_id', 'in', $invoiceIds)->select();
$invs = EmInvoice::where('invoice_id','in',$invoiceIds)->select();
$result = 0;
foreach ($payments as $key => $payment) {
if ($payment->balance == 0)
continue;
foreach ($payments as $key => $payment){
if($payment->balance == 0) continue;
foreach ($invs as $index => $inv) {
$balanceMode = new EmPaymentInvoiceBalance();
$balanceMode->payment_id = $payment->payment_id;
if ($inv->payment_balance == 0)
continue;
if ($inv->payment_balance == 0) continue;
$balanceMode->invoice_id = $inv->invoice_id;
//如果该缴费单可以完全消除当前账单额度
if ($payment->balance >= $inv->payment_balance) {
//单笔销账多少
$balanceMode->balance = $inv->payment_balance;
//缴费额度变化
if (($payment->balance - $inv->payment_balance) == 0) {
$payment->status = 4;
} else {
$payment->status = 4; //缴费部分销账
}
$payment->balance = $payment->balance - $inv->payment_balance;
//账单额度变化
$inv->payment_balance = 0;
//更新账户status 首字母 = 2
$inv->status = $this->setInvoiceStatus($inv->status, 2);
$inv->status = setInvoiceStatus($inv->status, 2);
} else {
//单笔销账多少
$balanceMode->balance = $payment->balance;
//账单额度变化
$inv->status = $this->setInvoiceStatus($inv->status, 1);
$inv->status = setInvoiceStatus($inv->status, 1);
$inv->payment_balance = $inv->payment_balance - $payment->balance;
//缴费额度变化
$payment->balance = 0;
$payment->status = 4; //缴费已经完全销账
}
$model = new EmPaymentInvoice();
if (!$model->where(['payment_id' => $payment->payment_id, 'invoice_id' => $inv->invoice_id])->find()) {
//查找是否已经存在相关联的账单关系
$model = (new EmPaymentInvoice())->where(['payment_id'=>$payment->payment_id,'invoice_id'=>$inv->invoice_id])->find();
if(!$model){
$model->payment_id = $payment->payment_id;
$model->invoice_id = $inv->invoice_id;
$model->save();
......@@ -209,31 +203,19 @@ class Payment
//更新账单状态
$inv->save();
//todo::history; 保存历史记录
$invData = $inv->toArray();
$invData['id'] = null;
$invData['create_time'] = strtotime($invData['create_time']);
$invData['update_time'] = strtotime($invData['update_time']);
//EmInvoiceHistory::create($invData);
//unset($invs[$index]); //从结果集中去掉无效的数据
//更新状态
//更新缴费状态
$payment->save();
//todo::history;保存历史记录
$payData = $payment->toArray();
$payData['id'] = null;
$payData['create_time'] = strtotime($payData['create_time']);
$payData['update_time'] = strtotime($payData['update_time']);
$payData['pay_date'] = strtotime($payData['pay_date']);
//EmPaymentHistory::create($payData);
unset($payments[$key]);
$balanceMode->isUpdate(false)->save();
//更新账户余额
$account = EmAccount::get(['account_id'=>$inv->account_id]);
$account->amount -= $balanceMode->balance;
$account->save();
}
}
$msg = $result == 0 ? '已审核,没有可销账的账单.' : '已审核,成功销账 ' . $result . ' 笔账单.';
$msg = $result == 0 ? '已审核,没有可销账的账单.' : '已审核,成功销账 '.$result.' 笔账单.';
return $msg;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论