CallApiLog.php 2.2 KB
<?php
namespace app\api\behavior;

use think\Db;
use think\Request;

class CallApiLog
{
    public function run(&$params)
    {
        // 行为逻辑
        $reqUri = trim(request()->path(), '/');
        $res = preg_match('/^(api\/cloudapi\/)/', $reqUri);
        if ($res){
            $apiModel = new \app\admin\model\cloudapi\Api();
            $api = $apiModel->where(['api_uri' => ['LIKE',"%" . trim($reqUri,'/')]])->find();
            if (!empty($api)){
                $responseData = $params->getData();
                if ($responseData['code'] == 1){
                    $status = 1;
                }else{// todo 可根据具体需求决定哪些日志需要记录
                    $status = 2;
                }
                $reqParams = Request::instance()->param();
                if (isset($reqParams['device_code']) && !empty($reqParams['device_code'])){
                    $device_code = $reqParams['device_code'];
                }elseif(isset($reqParams['equipment_id']) && !empty($reqParams['equipment_id'])){
                    $device_code = $reqParams['equipment_id'];
                }elseif(isset($reqParams['number']) && !empty($reqParams['number'])){
                    $device_code = $reqParams['number'];
                }
                if (!empty($device_code)){
                    $device = Db::name('reservoir_equipment')->field('deviceId,type,reservoir_id')->where(['deviceId' => $device_code])->find();
                    if (!empty($device)){
                        $logData = [
                            'api_uri' => '/' . $reqUri,
                            'api_type' => $api['api_type'],
                            'reservoir_id' => $device['reservoir_id'],
                            'device_code' => $device['deviceId'],
                            'device_type' => $device['type'],
                            'createtime' => time(),
                            'status' => $status,
                            'error_code' => $responseData['code'],
                            'error_msg' => $responseData['msg']
                        ];
                        Db::name('cloudapi_log')->insert($logData);
                    }
                }
            }
        }
    }
}