1]; // echo authcode(json_encode($j),'f'); $GLOBALS['data'] = []; // 全局变量 $api_version = ''; //当前版本号 $timeout = env('APP_DEBUG') ? 1000000 : 20; //处理超时时间 $userid = 0; //默认用户ID是0 $appKey = env('app.DEFAULT_KEY'); $GLOBALS['appKey'] = env('app.DEFAULT_KEY');//定义全局变量,报错时使用 $startTime = microtime(true); //开始时间时间 $LogArray = []; //记录日志数组 $message = [ 'token_error' => 'Token验证失败', 'token_Illegal' => 'Token非法', 'data_Illegal' => '非法数据', 'logout_success' => '退出成功', 'sign_error' => '数据签名错误', 'data_timeout' => '请求数据超时', 'cmd_error' => '没有CMD信息', ]; // $independent = ["user.logout"]; try { //获取访问者IP $LogArray['ip'] = get_client_ip(); //获取用户上传的token $clientToken = request()->post('tk'); //如果TOKEN不存在,则设置为空 $clientToken = ! empty($clientToken) ? $clientToken : ''; //记录日志开始,记录token和开始时间 $LogArray['token'] = $clientToken; $LogArray['start_time'] = $startTime; //如果存在TOKEN则需要解析token $appToken = ""; if ($clientToken) { try { $tk = json_decode(authcode($clientToken), true); $userid = $tk['userid']; } catch (\Exception $e) { return show($message['token_Illegal'], TOKEN_ERROR); } } //解密数据 $data = request()->post(); //定义常量 define('PLATFORM', $data['RequestBody']['Platform'] ?? ''); //手机系统平台 IOS、ANDROID define('DEVICE', $data['RequestBody']['Device'] ?? ''); //手机型号 define('IM_NUMBER', $data['RequestBody']['IM'] ?? ''); //设备码 define('APP_VERSION', $data['RequestBody']['APPVersion'] ?? ''); //版本号 $LogArray['userid'] = $userid; $LogArray['platform'] = PLATFORM; $LogArray['device'] = DEVICE; $LogArray['im_number'] = IM_NUMBER; $LogArray['app_version'] = APP_VERSION; $LogArray['api_version'] = $api_version; $LogArray['cmd'] = ! empty($data['RequestBody']['CMD']) ? $data['RequestBody']['CMD'] : ''; $LogArray['data'] = json_encode($data); if (empty($data['cmd'])) { return show($message['cmd_error'], MISSING_PARAMETER); } /********** * start 调用退出 ************* * 把apptoken表数据清空,只退出当前设置 * 其它设置信息保留 */ if (strtolower($data['cmd']) == "sign.logout") { if (! empty($appToken['id'])) { $this->logout($appToken['id']); $LogArray['return_data'] = $message['logout_success']; $this->log($LogArray); } return show("退出成功!", SUCCESS_CODE); } if (($data['cmd'])) { $action = explode('.', $data['cmd']); if (is_array($action)) { $ClassName = '\\app\\controller\\'.ucfirst($action[0]); $FunctionName = $action[1]; $class = new $ClassName(); $GLOBALS['data'] = [ 'data' => $data, 'userid' => $userid ]; if (! empty($_FILES['file'])) { $GLOBALS['data']['file'] = $_FILES['file']; } $backdata = $class->$FunctionName(); $LogArray['return_data'] = ! empty($GLOBALS['data']['returnData']) ? $GLOBALS['data']['returnData'] : ''; $this->log($LogArray); unset($data); return $backdata; } } } catch (\Exception $e) { if (env("APP_DEBUG")) { $msg = $e->getMessage(); } else { $msg = "服务器故障!"; } return show($msg, SYSTEM_ERROR_CODE); } } private function logout($userid) { (new \app\model\AppToken)->where('id', $userid)->delete(); } private function log($data) { $addData = [ 'ip' => ! empty($data['ip']) ? $data['ip'] : '', 'token' => ! empty($data['token']) ? $data['token'] : '', 'start_time' => ! empty($data['start_time']) ? $data['start_time'] : '', 'userid' => ! empty($data['userid']) ? $data['userid'] : '', 'platform' => ! empty($data['platform']) ? $data['platform'] : '', 'device' => ! empty($data['device']) ? $data['device'] : '', 'im_number' => ! empty($data['im_number']) ? $data['im_number'] : '', 'app_version' => ! empty($data['app_version']) ? $data['app_version'] : '', 'api_version' => ! empty($data['api_version']) ? $data['api_version'] : '', 'cmd' => ! empty($data['cmd']) ? $data['cmd'] : '', 'data' => ! empty($data['data']) ? $data['data'] : '', 'return_data' => ! empty($data['return_data']) ? $data['return_data'] : '', 'end_time' => microtime(true), 'usetime' => microtime(true) - $data['start_time'] ]; $applog = (new \app\model\AppLog)->insertGetId($addData); return $applog; } }