mirror of
https://gitee.com/apiadmin/ApiAdmin.git
synced 2025-04-06 03:58:00 +08:00
modified 完成应用功能移植
This commit is contained in:
parent
b17a464f24
commit
3160491af6
218
app/controller/admin/App.php
Normal file
218
app/controller/admin/App.php
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
<?php
|
||||||
|
declare (strict_types=1);
|
||||||
|
/**
|
||||||
|
* 应用管理
|
||||||
|
* @since 2018-02-11
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace app\controller\admin;
|
||||||
|
|
||||||
|
use app\model\AdminApp;
|
||||||
|
use app\model\AdminList;
|
||||||
|
use app\model\AdminGroup;
|
||||||
|
use app\util\ReturnCode;
|
||||||
|
use app\util\Strs;
|
||||||
|
use app\util\Tools;
|
||||||
|
use think\Response;
|
||||||
|
|
||||||
|
class App extends Base {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取应用列表
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function index(): Response {
|
||||||
|
$limit = $this->request->get('size', config('apiadmin.ADMIN_LIST_DEFAULT'));
|
||||||
|
$start = $this->request->get('page', 1);
|
||||||
|
$keywords = $this->request->get('keywords', '');
|
||||||
|
$type = $this->request->get('type', '');
|
||||||
|
$status = $this->request->get('status', '');
|
||||||
|
|
||||||
|
$obj = new AdminApp();
|
||||||
|
if (strlen($status)) {
|
||||||
|
$obj = $obj->where('app_status', $status);
|
||||||
|
}
|
||||||
|
if ($type) {
|
||||||
|
switch ($type) {
|
||||||
|
case 1:
|
||||||
|
$obj = $obj->where('app_id', $keywords);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$obj = $obj->whereLike('app_name', "%{$keywords}%");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$listObj = $obj->order('app_add_time', 'DESC')->paginate(['page' => $start, 'list_rows' => $limit])->toArray();
|
||||||
|
|
||||||
|
return $this->buildSuccess([
|
||||||
|
'list' => $listObj['data'],
|
||||||
|
'count' => $listObj['total']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取AppId,AppSecret,接口列表,应用接口权限细节
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function getAppInfo(): Response {
|
||||||
|
$apiArr = (new AdminList())->select();
|
||||||
|
foreach ($apiArr as $api) {
|
||||||
|
$res['apiList'][$api['group_hash']][] = $api;
|
||||||
|
}
|
||||||
|
$groupArr = (new AdminGroup())->select();
|
||||||
|
$groupArr = Tools::buildArrFromObj($groupArr);
|
||||||
|
$res['groupInfo'] = array_column($groupArr, 'name', 'hash');
|
||||||
|
$id = $this->request->get('id', 0);
|
||||||
|
if ($id) {
|
||||||
|
$appInfo = (new AdminApp())->where('id', $id)->find()->toArray();
|
||||||
|
$res['app_detail'] = json_decode($appInfo['app_api_show'], true);
|
||||||
|
} else {
|
||||||
|
$res['app_id'] = mt_rand(1, 9) . Strs::randString(7, 1);
|
||||||
|
$res['app_secret'] = Strs::randString(32);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess($res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新APPSecret
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function refreshAppSecret(): Response {
|
||||||
|
$data['app_secret'] = Strs::randString(32);
|
||||||
|
|
||||||
|
return $this->buildSuccess($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增应用
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function add(): Response {
|
||||||
|
$postData = $this->request->post();
|
||||||
|
$data = [
|
||||||
|
'app_id' => $postData['app_id'],
|
||||||
|
'app_secret' => $postData['app_secret'],
|
||||||
|
'app_name' => $postData['app_name'],
|
||||||
|
'app_info' => $postData['app_info'],
|
||||||
|
'app_group' => $postData['app_group'],
|
||||||
|
'app_add_time' => time(),
|
||||||
|
'app_api' => '',
|
||||||
|
'app_api_show' => ''
|
||||||
|
];
|
||||||
|
if (isset($postData['app_api']) && $postData['app_api']) {
|
||||||
|
$appApi = [];
|
||||||
|
$data['app_api_show'] = json_encode($postData['app_api']);
|
||||||
|
foreach ($postData['app_api'] as $value) {
|
||||||
|
$appApi = array_merge($appApi, $value);
|
||||||
|
}
|
||||||
|
$data['app_api'] = implode(',', $appApi);
|
||||||
|
}
|
||||||
|
$res = AdminApp::create($data);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用状态编辑
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function changeStatus(): Response {
|
||||||
|
$id = $this->request->get('id');
|
||||||
|
$status = $this->request->get('status');
|
||||||
|
$res = AdminApp::update([
|
||||||
|
'id' => $id,
|
||||||
|
'app_status' => $status
|
||||||
|
]);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
$appInfo = (new AdminApp())->where('id', $id)->find();
|
||||||
|
cache('AccessToken:Easy:' . $appInfo['app_secret'], null);
|
||||||
|
if ($oldWiki = cache('WikiLogin:' . $id)) {
|
||||||
|
cache('WikiLogin:' . $oldWiki, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑应用
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function edit(): Response {
|
||||||
|
$postData = $this->request->post();
|
||||||
|
$data = [
|
||||||
|
'app_secret' => $postData['app_secret'],
|
||||||
|
'app_name' => $postData['app_name'],
|
||||||
|
'app_info' => $postData['app_info'],
|
||||||
|
'app_group' => $postData['app_group'],
|
||||||
|
'app_api' => '',
|
||||||
|
'app_api_show' => ''
|
||||||
|
];
|
||||||
|
if (isset($postData['app_api']) && $postData['app_api']) {
|
||||||
|
$appApi = [];
|
||||||
|
$data['app_api_show'] = json_encode($postData['app_api']);
|
||||||
|
foreach ($postData['app_api'] as $value) {
|
||||||
|
$appApi = array_merge($appApi, $value);
|
||||||
|
}
|
||||||
|
$data['app_api'] = implode(',', $appApi);
|
||||||
|
}
|
||||||
|
$res = AdminApp::update($data, ['id' => $postData['id']]);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
$appInfo = (new AdminApp())->where('id', $postData['id'])->find();
|
||||||
|
cache('AccessToken:Easy:' . $appInfo['app_secret'], null);
|
||||||
|
if ($oldWiki = cache('WikiLogin:' . $postData['id'])) {
|
||||||
|
cache('WikiLogin:' . $oldWiki, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除应用
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function del(): Response {
|
||||||
|
$id = $this->request->get('id');
|
||||||
|
if (!$id) {
|
||||||
|
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, '缺少必要参数');
|
||||||
|
}
|
||||||
|
$appInfo = (new AdminApp())->where('id', $id)->find();
|
||||||
|
cache('AccessToken:Easy:' . $appInfo['app_secret'], null);
|
||||||
|
|
||||||
|
AdminApp::destroy($id);
|
||||||
|
if ($oldWiki = cache('WikiLogin:' . $id)) {
|
||||||
|
cache('WikiLogin:' . $oldWiki, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
}
|
140
app/controller/admin/AppGroup.php
Normal file
140
app/controller/admin/AppGroup.php
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
<?php
|
||||||
|
declare (strict_types=1);
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @since 2018-02-11
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace app\controller\admin;
|
||||||
|
|
||||||
|
use app\model\AdminApp;
|
||||||
|
use app\model\AdminAppGroup;
|
||||||
|
use app\util\ReturnCode;
|
||||||
|
use think\Response;
|
||||||
|
|
||||||
|
class AppGroup extends Base {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取应用组列表
|
||||||
|
* @return \think\Response
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function index(): Response {
|
||||||
|
$limit = $this->request->get('size', config('apiadmin.ADMIN_LIST_DEFAULT'));
|
||||||
|
$start = $this->request->get('page', 1);
|
||||||
|
$keywords = $this->request->get('keywords', '');
|
||||||
|
$type = $this->request->get('type', '');
|
||||||
|
$status = $this->request->get('status', '');
|
||||||
|
|
||||||
|
$obj = new AdminAppGroup();
|
||||||
|
if (strlen($status)) {
|
||||||
|
$obj = $obj->where('status', $status);
|
||||||
|
}
|
||||||
|
if ($type) {
|
||||||
|
switch ($type) {
|
||||||
|
case 1:
|
||||||
|
if (strlen($keywords)) {
|
||||||
|
$obj = $obj->where('hash', $keywords);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$obj = $obj->whereLike('name', "%{$keywords}%");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$listObj = $obj->paginate(['page' => $start, 'list_rows' => $limit])->toArray();
|
||||||
|
|
||||||
|
return $this->buildSuccess([
|
||||||
|
'list' => $listObj['data'],
|
||||||
|
'count' => $listObj['total']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取全部有效的应用组
|
||||||
|
* @return Response
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function getAll(): Response {
|
||||||
|
$listInfo = (new AdminAppGroup())->where(['status' => 1])->select();
|
||||||
|
|
||||||
|
return $this->buildSuccess([
|
||||||
|
'list' => $listInfo
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用组状态编辑
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function changeStatus(): Response {
|
||||||
|
$id = $this->request->get('id');
|
||||||
|
$status = $this->request->get('status');
|
||||||
|
$res = AdminAppGroup::update([
|
||||||
|
'id' => $id,
|
||||||
|
'status' => $status
|
||||||
|
]);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加应用组
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function add(): Response {
|
||||||
|
$postData = $this->request->post();
|
||||||
|
$res = AdminAppGroup::create($postData);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用组编辑
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function edit(): Response {
|
||||||
|
$postData = $this->request->post();
|
||||||
|
$res = AdminAppGroup::update($postData);
|
||||||
|
if ($res === false) {
|
||||||
|
return $this->buildFailed(ReturnCode::DB_SAVE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用组删除
|
||||||
|
* @return Response
|
||||||
|
* @author zhaoxiang <zhaoxiang051405@gmail.com>
|
||||||
|
*/
|
||||||
|
public function del(): Response {
|
||||||
|
$hash = $this->request->get('hash');
|
||||||
|
if (!$hash) {
|
||||||
|
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, '缺少必要参数');
|
||||||
|
}
|
||||||
|
|
||||||
|
$has = (new AdminApp())->where(['app_group' => $hash])->count();
|
||||||
|
if ($has) {
|
||||||
|
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, '当前分组存在' . $has . '个应用,禁止删除');
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminAppGroup::destroy(['hash' => $hash]);
|
||||||
|
|
||||||
|
return $this->buildSuccess();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user