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) { $tk = json_decode(authcode($clientToken),true); $userid = $tk['userid']; } //解密数据 $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; } }