151 lines
6.0 KiB
PHP
151 lines
6.0 KiB
PHP
<?php
|
||
|
||
namespace app\controller;
|
||
|
||
//use app\model\AppToken;
|
||
|
||
class Main
|
||
{
|
||
public function index()
|
||
{
|
||
// $j = ["userid"=>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;
|
||
}
|
||
}
|