diff --git a/app/admin/controller/ModulesController.php b/app/admin/controller/ModulesController.php new file mode 100644 index 0000000..886f9ac --- /dev/null +++ b/app/admin/controller/ModulesController.php @@ -0,0 +1,352 @@ +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' => [] + ]); + } + } +} diff --git a/app/admin/route/app.php b/app/admin/route/app.php index a41c269..cc9a120 100644 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -102,3 +102,13 @@ Route::post('saveLegalInfos', 'app\\admin\\controller\\SiteSettingsController@sa // 数据统计路由 Route::get('contentstats', 'app\\admin\\controller\\AnalyticsController@getContentStats'); 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'); diff --git a/app/model/AdminModules.php b/app/model/AdminModules.php new file mode 100644 index 0000000..52ac394 --- /dev/null +++ b/app/model/AdminModules.php @@ -0,0 +1,30 @@ + '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', + ]; +} diff --git a/test-output.txt b/test-output.txt deleted file mode 100644 index 23e0633..0000000 --- a/test-output.txt +++ /dev/null @@ -1,103 +0,0 @@ -Backend is running... 后端运行中... - -