dootask/app/Http/Controllers/Api/SystemController.php
2021-06-03 15:33:41 +08:00

348 lines
11 KiB
PHP
Executable File
Raw 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\Http\Controllers\Api;
use App\Models\User;
use App\Module\Base;
use Request;
/**
* @apiDefine system
*
* 系统
*/
class SystemController extends AbstractController
{
/**
* @api {get} api/system/setting 01. 获取设置、保存设置
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName setting
*
* @apiParam {String} type
* - get: 获取(默认)
* - save: 保存设置参数reg、login_code
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function setting()
{
$type = trim(Request::input('type'));
if ($type == 'save') {
if (env("SYSTEM_SETTING") == 'disabled') {
return Base::retError('当前环境禁止修改!');
}
$user = User::authE();
if (Base::isError($user)) {
return $user;
} else {
$user = User::IDE($user['data']);
}
if (!$user->isAdmin()) {
return Base::retError('权限不足!');
}
$all = Request::input();
foreach ($all AS $key => $value) {
if (!in_array($key, ['reg', 'login_code'])) {
unset($all[$key]);
}
}
$setting = Base::setting('system', Base::newTrim($all));
} else {
$setting = Base::setting('system');
}
//
$setting['reg'] = $setting['reg'] ?: 'open';
$setting['login_code'] = $setting['login_code'] ?: 'auto';
//
return Base::retSuccess('success', $setting ?: json_decode('{}'));
}
/**
* @api {get} api/system/get/info 02. 获取终端详细信息
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName get__info
*
* @apiParam {String} key key值
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function get__info()
{
if (Request::input("key") !== env('APP_KEY')) {
return [];
}
return Base::retSuccess('success', [
'ip' => Base::getIp(),
'ip-info' => Base::getIpInfo(Base::getIp()),
'ip-gcj02' => Base::getIpGcj02(Base::getIp()),
'ip-iscn' => Base::isCnIp(Base::getIp()),
'header' => Request::header(),
'token' => Base::getToken(),
'url' => url('') . Base::getUrl(),
]);
}
/**
* @api {get} api/system/get/ip 03. 获取IP地址
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName get__ip
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function get__ip() {
return Base::getIp();
}
/**
* @api {get} api/system/get/cnip 04. 是否中国IP地址
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName get__cnip
*
* @apiParam {String} ip IP值
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function get__cnip() {
return Base::isCnIp(Request::input('ip'));
}
/**
* @api {get} api/system/get/ipgcj02 05. 获取IP地址经纬度
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName get__ipgcj02
*
* @apiParam {String} ip IP值
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function get__ipgcj02() {
return Base::getIpGcj02(Request::input("ip"));
}
/**
* @api {get} api/system/get/ipinfo 06. 获取IP地址详细信息
*
* @apiVersion 1.0.0
* @apiGroup system
* @apiName get__ipinfo
*
* @apiParam {String} ip IP值
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function get__ipinfo() {
return Base::getIpInfo(Request::input("ip"));
}
/**
* @api {post} api/system/imgupload 10. 上传图片
*
* @apiDescription 需要token身份
* @apiVersion 1.0.0
* @apiGroup system
* @apiName imgupload
*
* @apiParam {String} image64 图片base64
* @apiParam {String} filename 文件名
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function imgupload()
{
if (User::token2userid() === 0) {
return Base::retError('身份失效,等重新登录!');
}
$scale = [intval(Request::input('width')), intval(Request::input('height'))];
if (!$scale[0] && !$scale[1]) {
$scale = [2160, 4160, -1];
}
$path = "uploads/picture/" . User::token2userid() . "/" . date("Ym") . "/";
$image64 = trim(Base::getPostValue('image64'));
$fileName = trim(Base::getPostValue('filename'));
if ($image64) {
$data = Base::image64save([
"image64" => $image64,
"path" => $path,
"fileName" => $fileName,
"scale" => $scale
]);
} else {
$data = Base::upload([
"file" => Request::file('image'),
"type" => 'image',
"path" => $path,
"fileName" => $fileName,
"scale" => $scale
]);
}
if (Base::isError($data)) {
return Base::retError($data['msg']);
} else {
return Base::retSuccess('success', $data['data']);
}
}
/**
* @api {get} api/system/get/imgview 11. 浏览图片空间
*
* @apiDescription 需要token身份
* @apiVersion 1.0.0
* @apiGroup system
* @apiName imgview
*
* @apiParam {String} path 路径
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function imgview()
{
if (User::token2userid() === 0) {
return Base::retError('身份失效,等重新登录!');
}
$publicPath = "uploads/picture/" . User::token2userid() . "/";
$dirPath = public_path($publicPath);
$dirs = $files = [];
//
$path = Request::input('path');
if ($path && is_string($path)) {
$path = str_replace(array('||', '|'), '/', $path);
$path = trim($path, '/');
$path = str_replace('..', '', $path);
$path = Base::leftDelete($path, $publicPath);
if ($path) {
$path = $path . '/';
$dirPath .= $path;
//
$dirs[] = [
'type' => 'dir',
'title' => '...',
'path' => substr(substr($path, 0, -1), 0, strripos(substr($path, 0, -1), '/')),
'url' => '',
'thumb' => Base::fillUrl('images/other/dir.png'),
'inode' => 0,
];
}
} else {
$path = '';
}
$list = glob($dirPath . '*', GLOB_BRACE);
foreach ($list as $v) {
$filename = basename($v);
$pathTemp = $publicPath . $path . $filename;
if (is_dir($v)) {
$dirs[] = [
'type' => 'dir',
'title' => $filename,
'path' => $pathTemp,
'url' => Base::fillUrl($pathTemp),
'thumb' => Base::fillUrl('images/other/dir.png'),
'inode' => fileatime($v),
];
} elseif (substr($filename, -10) != "_thumb.jpg") {
$array = [
'type' => 'file',
'title' => $filename,
'path' => $pathTemp,
'url' => Base::fillUrl($pathTemp),
'thumb' => $pathTemp,
'inode' => fileatime($v),
];
//
$extension = pathinfo($dirPath . $filename, PATHINFO_EXTENSION);
if (in_array($extension, array('gif', 'jpg', 'jpeg', 'png', 'bmp'))) {
if (file_exists($dirPath . $filename . '_thumb.jpg')) {
$array['thumb'] .= '_thumb.jpg';
}
$array['thumb'] = Base::fillUrl($array['thumb']);
$files[] = $array;
}
}
}
if ($dirs) {
$inOrder = [];
foreach ($dirs as $key => $item) {
$inOrder[$key] = $item['title'];
}
array_multisort($inOrder, SORT_DESC, $dirs);
}
if ($files) {
$inOrder = [];
foreach ($files as $key => $item) {
$inOrder[$key] = $item['inode'];
}
array_multisort($inOrder, SORT_DESC, $files);
}
//
return Base::retSuccess('success', ['dirs' => $dirs, 'files' => $files]);
}
/**
* @api {post} api/system/fileupload 12. 上传文件
*
* @apiDescription 需要token身份
* @apiVersion 1.0.0
* @apiGroup system
* @apiName fileupload
*
* @apiParam {String} [image64] 图片base64
* @apiParam {String} filename 文件名
* @apiParam {String} [files] 文件名
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function fileupload()
{
if (User::token2userid() === 0) {
return Base::retError('身份失效,等重新登录!');
}
$path = "uploads/files/" . User::token2userid() . "/" . date("Ym") . "/";
$image64 = trim(Base::getPostValue('image64'));
$fileName = trim(Base::getPostValue('filename'));
if ($image64) {
$data = Base::image64save([
"image64" => $image64,
"path" => $path,
"fileName" => $fileName,
]);
} else {
$data = Base::upload([
"file" => Request::file('files'),
"type" => 'file',
"path" => $path,
"fileName" => $fileName,
]);
}
//
return $data;
}
}