chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: ywxapp<admin@ywxapp.cn>
|
||||
// +----------------------------------------------------------------------
|
||||
namespace ywxapp\controller;
|
||||
|
||||
use ywxapp\service\AddonService as AddonService;
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* Addon 类
|
||||
*
|
||||
* @author ywxapp <admin@ywxapp.cn>
|
||||
*/
|
||||
class Addon
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
$list = [];
|
||||
if (defined('ADDON_PATH') && is_dir(ADDON_PATH)) {
|
||||
foreach (scandir(ADDON_PATH) as $name) {
|
||||
if ($name === '.' || $name === '..' || !is_dir(ADDON_PATH . $name)) {
|
||||
continue;
|
||||
}
|
||||
$infoFile = ADDON_PATH . $name . DIRECTORY_SEPARATOR . 'info.php';
|
||||
if (!is_file($infoFile)) {
|
||||
continue;
|
||||
}
|
||||
$info = include $infoFile;
|
||||
if (!isset($info['name'])) {
|
||||
continue;
|
||||
}
|
||||
$installedInfo = Db::name('addon')->where('name', $name)->find();
|
||||
$list[] = [
|
||||
'name' => $name,
|
||||
'title' => $info['title'] ?? $name,
|
||||
'description' => $info['description'] ?? '',
|
||||
'version' => $info['version'] ?? '1.0.0',
|
||||
'author' => $info['author'] ?? '',
|
||||
'installed' => $installedInfo ? true : false,
|
||||
'status' => $installedInfo['status'] ?? 0,
|
||||
'installed_version' => $installedInfo['version'] ?? null,
|
||||
'has_update' => $installedInfo
|
||||
? version_compare($info['version'] ?? '1.0.0', $installedInfo['version'], '>')
|
||||
: false,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 200,
|
||||
'data' => $list
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
public function install($name)
|
||||
{
|
||||
try {
|
||||
AddonService::instance($name)->install();
|
||||
return json(['code' => 200, 'msg' => '安装成功']);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 500, 'msg' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function uninstall($name)
|
||||
{
|
||||
try {
|
||||
AddonService::instance($name)->uninstall();
|
||||
return json(['code' => 200, 'msg' => '卸载成功']);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 500, 'msg' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function enable($name)
|
||||
{
|
||||
try {
|
||||
AddonService::instance($name)->enable();
|
||||
return json(['code' => 200, 'msg' => '启用成功']);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 500, 'msg' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function disable($name)
|
||||
{
|
||||
try {
|
||||
AddonService::instance($name)->disable();
|
||||
return json(['code' => 200, 'msg' => '禁用成功']);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 500, 'msg' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function upgrade($name)
|
||||
{
|
||||
try {
|
||||
$service = AddonService::instance($name);
|
||||
if (!method_exists($service, 'upgrade')) {
|
||||
return json(['code' => 500, 'msg' => '当前版本不支持在线升级']);
|
||||
}
|
||||
$service->upgrade();
|
||||
return json(['code' => 200, 'msg' => '升级成功']);
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 500, 'msg' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function info($name)
|
||||
{
|
||||
try {
|
||||
$info = AddonService::instance($name)->getInfo();
|
||||
} catch (\Exception $e) {
|
||||
return json(['code' => 404, 'msg' => '插件不存在']);
|
||||
}
|
||||
$installed = Db::name('addon')->where('name', $name)->find();
|
||||
|
||||
return json([
|
||||
'code' => 200,
|
||||
'data' => [
|
||||
'info' => $info,
|
||||
'installed' => $installed ?: false
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user