Files
heping-api/app/controller/Main.php
2022-09-09 18:00:48 +08:00

151 lines
6.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}