This commit is contained in:
knowpia
2022-09-08 15:23:13 +08:00
commit 96a49d1bd6
26 changed files with 1597 additions and 0 deletions

145
app/controller/Main.php Normal file
View File

@@ -0,0 +1,145 @@
<?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) {
$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;
}
}