更新架构

This commit is contained in:
李志强 2026-01-27 18:02:07 +08:00
parent 0f48ce7894
commit 89d7761887
4 changed files with 392 additions and 103 deletions

View File

@ -0,0 +1,352 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use think\response\Json;
use app\model\AdminModules;
class ModulesController extends BaseController
{
/**
* 获取所有模块列表
* @return Json
*/
public function getList()
{
try {
$modules = AdminModules::where('delete_time', null)
->order('sort', 'asc')
->order('id', 'asc')
->select()
->toArray();
$this->logSuccess('模块管理', '获取模块列表', ['count' => count($modules)]);
return json([
'code' => 200,
'msg' => '获取成功',
'data' => [
'list' => $modules,
'total' => count($modules)
]
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '获取模块列表', $e->getMessage());
return json([
'code' => 500,
'msg' => '获取失败:' . $e->getMessage(),
'data' => []
]);
}
}
/**
* 获取模块详情
* @return Json
*/
public function getDetail(int $id)
{
try {
$module = AdminModules::where('id', $id)
->where('delete_time', null)
->find();
if (!$module) {
return json([
'code' => 404,
'msg' => '模块不存在',
'data' => null
]);
}
$this->logSuccess('模块管理', '获取模块详情', ['id' => $id]);
return json([
'code' => 200,
'msg' => '获取成功',
'data' => $module
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '获取模块详情', $e->getMessage());
return json([
'code' => 500,
'msg' => '获取失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 添加模块
* @return Json
*/
public function add()
{
try {
$data = [
'name' => input('post.name', '', 'trim'),
'code' => input('post.code', '', 'trim'),
'description' => input('post.description', '', 'trim'),
'icon' => input('post.icon', '', 'trim'),
'path' => input('post.path', '', 'trim'),
'sort' => (int)input('post.sort', 0),
'status' => (int)input('post.status', 1),
'is_show' => (int)input('post.is_show', 1),
'create_time' => date('Y-m-d H:i:s'),
'update_time' => date('Y-m-d H:i:s')
];
if (empty($data['name']) || empty($data['code'])) {
return json([
'code' => 400,
'msg' => '模块名称和编码不能为空',
'data' => null
]);
}
$exists = AdminModules::where('code', $data['code'])
->where('delete_time', null)
->find();
if ($exists) {
return json([
'code' => 400,
'msg' => '模块编码已存在',
'data' => null
]);
}
$id = AdminModules::insertGetId($data);
$this->logSuccess('模块管理', '添加模块', ['id' => $id, 'name' => $data['name']]);
return json([
'code' => 200,
'msg' => '添加成功',
'data' => ['id' => $id]
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '添加模块', $e->getMessage());
return json([
'code' => 500,
'msg' => '添加失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 编辑模块
* @return Json
*/
public function edit()
{
try {
$id = (int)input('post.id', 0);
if (empty($id)) {
return json([
'code' => 400,
'msg' => '参数错误',
'data' => null
]);
}
$data = [
'name' => input('post.name', '', 'trim'),
'code' => input('post.code', '', 'trim'),
'description' => input('post.description', '', 'trim'),
'icon' => input('post.icon', '', 'trim'),
'path' => input('post.path', '', 'trim'),
'sort' => (int)input('post.sort', 0),
'status' => (int)input('post.status', 1),
'is_show' => (int)input('post.is_show', 1),
'update_time' => date('Y-m-d H:i:s')
];
if (empty($data['name']) || empty($data['code'])) {
return json([
'code' => 400,
'msg' => '模块名称和编码不能为空',
'data' => null
]);
}
$exists = AdminModules::where('code', $data['code'])
->where('id', '<>', $id)
->where('delete_time', null)
->find();
if ($exists) {
return json([
'code' => 400,
'msg' => '模块编码已存在',
'data' => null
]);
}
AdminModules::where('id', $id)->update($data);
$this->logSuccess('模块管理', '编辑模块', ['id' => $id, 'name' => $data['name']]);
return json([
'code' => 200,
'msg' => '编辑成功',
'data' => null
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '编辑模块', $e->getMessage());
return json([
'code' => 500,
'msg' => '编辑失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 删除模块
* @return Json
*/
public function delete(int $id)
{
try {
if (empty($id)) {
return json([
'code' => 400,
'msg' => '参数错误',
'data' => null
]);
}
AdminModules::where('id', $id)->update([
'delete_time' => date('Y-m-d H:i:s')
]);
$this->logSuccess('模块管理', '删除模块', ['id' => $id]);
return json([
'code' => 200,
'msg' => '删除成功',
'data' => null
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '删除模块', $e->getMessage());
return json([
'code' => 500,
'msg' => '删除失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 批量删除模块
* @return Json
*/
public function batchDelete()
{
try {
$ids = input('post.ids', []);
$ids = array_map('intval', $ids);
if (empty($ids)) {
return json([
'code' => 400,
'msg' => '请选择要删除的模块',
'data' => null
]);
}
AdminModules::whereIn('id', $ids)
->update([
'delete_time' => date('Y-m-d H:i:s')
]);
$this->logSuccess('模块管理', '批量删除模块', ['ids' => $ids]);
return json([
'code' => 200,
'msg' => '批量删除成功',
'data' => null
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '批量删除模块', $e->getMessage());
return json([
'code' => 500,
'msg' => '批量删除失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 修改状态
* @return Json
*/
public function changeStatus()
{
try {
$id = (int)input('post.id', 0);
$status = (int)input('post.status', 0);
if (empty($id)) {
return json([
'code' => 400,
'msg' => '参数错误',
'data' => null
]);
}
AdminModules::where('id', $id)->update([
'status' => $status,
'update_time' => date('Y-m-d H:i:s')
]);
$this->logSuccess('模块管理', '修改状态', ['id' => $id, 'status' => $status]);
return json([
'code' => 200,
'msg' => '状态修改成功',
'data' => null
]);
} catch (\Exception $e) {
$this->logFail('模块管理', '修改状态', $e->getMessage());
return json([
'code' => 500,
'msg' => '状态修改失败:' . $e->getMessage(),
'data' => null
]);
}
}
/**
* 获取模块选择列表
* @return Json
*/
public function getSelectList()
{
try {
$modules = AdminModules::where('delete_time', null)
->where('status', 1)
->where('is_show', 1)
->order('sort', 'asc')
->column('id, name, code');
return json([
'code' => 200,
'msg' => '获取成功',
'data' => $modules
]);
} catch (\Exception $e) {
return json([
'code' => 500,
'msg' => '获取失败:' . $e->getMessage(),
'data' => []
]);
}
}
}

View File

@ -102,3 +102,13 @@ Route::post('saveLegalInfos', 'app\\admin\\controller\\SiteSettingsController@sa
// 数据统计路由 // 数据统计路由
Route::get('contentstats', 'app\\admin\\controller\\AnalyticsController@getContentStats'); Route::get('contentstats', 'app\\admin\\controller\\AnalyticsController@getContentStats');
Route::get('usersstats', 'app\\admin\\controller\\AnalyticsController@getUserStats'); Route::get('usersstats', 'app\\admin\\controller\\AnalyticsController@getUserStats');
// 模块管理路由
Route::get('modules/list', 'app\\admin\\controller\\ModulesController@getList');
Route::get('modules/:id', 'app\\admin\\controller\\ModulesController@getDetail');
Route::post('modules', 'app\\admin\\controller\\ModulesController@add');
Route::put('modules/:id', 'app\\admin\\controller\\ModulesController@edit');
Route::delete('modules/:id', 'app\\admin\\controller\\ModulesController@delete');
Route::post('modules/batchDelete', 'app\\admin\\controller\\ModulesController@batchDelete');
Route::post('modules/status', 'app\\admin\\controller\\ModulesController@changeStatus');
Route::get('modules/select/list', 'app\\admin\\controller\\ModulesController@getSelectList');

View File

@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
namespace app\model;
use think\Model;
use think\model\concern\SoftDelete;
class AdminModules extends Model
{
use SoftDelete;
protected $name = 'admin_modules';
protected $type = [
'id' => 'integer',
'name' => 'string',
'code' => 'string',
'path' => 'string',
'icon' => 'string',
'description' => 'string',
'sort' => 'integer',
'status' => 'integer',
'is_show' => 'integer',
'create_time' => 'datetime',
'update_time' => 'datetime',
'delete_time' => 'datetime',
];
}

File diff suppressed because one or more lines are too long