• chengye's avatar
    test · 115f403a
    chengye 提交于
    115f403a
Payment.php 2.5 KB
<?php
/**
 * Created by PhpStorm.
 * User: chouchou
 * Date: 2020-6-21
 * Time: 18:52
 */

namespace app\api\controller\v2\common;
use app\em\controller\WriteOff;
use app\em\model\EmAccount;
use app\em\model\EmPayment;
use app\em\model\EmPaymentFk;
use app\em\model\EmPaymentInvoice;
use think\facade\Log;

class Payment
{
    public function index()
    {
        $data = request()->get();
        $res = $this->checkKey($data['key']);
        if ($res !== true) return json([
            'code' => 201,
            'message' => $res,
            'data' => ''
        ]);
        if ($data['action'] == 1) {
            Log::record(date('Y-m-d H:i:s').' OA单号:'.$data['numb'].' 接口操作:单据状态更新');
            return $this->update($data['numb'],$data['status'],$data['mes']);
        } else {
            return $this->dropNumb($data['numb'],$data['status']);
        }
    }

    //更新payment状态
    private function update($numb,$status,$mes='')
    {
        $paymentFk = (new EmPaymentFk())->get(['oafk_numb' => $numb]);
        $payment = (new EmPayment())->get(['payment_id' => $paymentFk->payment_id]);

        $account = EmAccount::get(['account_id'=>$payment->account_id]);
        $account->amount += $payment->amount ;
        $account->save();

        $payment->status = $status;
        $payment->pay_date = time();
        $payment->save();
        $res = (new WriteOff())->writeOffFromPayment($payment->payment_id);
        Log::record(date('Y-m-d H:i:s').' OA单号:'.$numb . $res);

    }

    //作废单据
    private function dropNumb($numb,$status)
    {

        $paymentFk = (new EmPaymentFk())->get(['oafk_numb' => $numb]);
        $payment = (new EmPayment())->get(['payment_id' => $paymentFk->payment_id]);

        $paymentFk->delete();
        $payment->status = $status;
        $payment->save();

        //删除payment_invoice表
        $delNum = (new EmPaymentInvoice())->where('payment_id', '=', $payment->payment_id)->delete();
        Log::record(date('Y-m-d H:i:s').' OA单号:'.$numb. '缴费单已作废');

    }

    private function checkKey($key)
    {
        if (empty($key)) {
            return '秘钥不能为空';
        }

        $baseKey = substr(md5(config('oafk.oa_key') . date('Y-m-d')), 0, 12);

        if ($key != $baseKey) {
            return '秘钥错误';
        }

        return true;
    }

    public function setInvoiceStatus($statusCode, $value, $index = 0)
    {
        return substr_replace($statusCode, $value, $index, 1);
    }

}