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... 后端运行中... - -
-
-
- 基本 - 文件 - 流程 - 错误 - SQL - 调试 -
-
-
-
    -
  1. 请求信息 : 2026-01-15 10:16:13 HTTP/1.1 GET : http://localhost:8000/admin
  2. 运行时间 : 0.016702s [ 吞吐率:59.87req/s ] 内存消耗:2,516.36kb 文件加载:112
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6892e22bca2caa199cd7b85e5525b388
-
-
-
    -
  1. E:\Demos\DemoCompany\PHP\official\tp\public\router.php ( 0.78 KB )
  2. E:\Demos\DemoCompany\PHP\official\tp\public\index.php ( 0.82 KB )
  3. E:\Demos\DemoCompany\PHP\official\tp\vendor\autoload.php ( 0.73 KB )
  4. E:\Demos\DemoCompany\PHP\official\tp\vendor\composer\autoload_real.php ( 1.63 KB )
  5. E:\Demos\DemoCompany\PHP\official\tp\vendor\composer\platform_check.php ( 0.90 KB )
  6. E:\Demos\DemoCompany\PHP\official\tp\vendor\composer\ClassLoader.php ( 15.99 KB )
  7. E:\Demos\DemoCompany\PHP\official\tp\vendor\composer\autoload_static.php ( 4.83 KB )
  8. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-helper\src\helper.php ( 8.34 KB )
  9. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-validate\src\helper.php ( 2.19 KB )
  10. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\helper.php ( 1.47 KB )
  11. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\stubs\load_stubs.php ( 0.16 KB )
  12. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Exception.php ( 1.69 KB )
  13. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-container\src\Facade.php ( 2.71 KB )
  14. E:\Demos\DemoCompany\PHP\official\tp\vendor\symfony\deprecation-contracts\function.php ( 0.99 KB )
  15. E:\Demos\DemoCompany\PHP\official\tp\vendor\symfony\polyfill-mbstring\bootstrap.php ( 8.26 KB )
  16. E:\Demos\DemoCompany\PHP\official\tp\vendor\symfony\polyfill-mbstring\bootstrap80.php ( 9.78 KB )
  17. E:\Demos\DemoCompany\PHP\official\tp\vendor\symfony\var-dumper\Resources\functions\dump.php ( 1.49 KB )
  18. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-dumper\src\helper.php ( 0.18 KB )
  19. E:\Demos\DemoCompany\PHP\official\tp\vendor\symfony\var-dumper\VarDumper.php ( 4.30 KB )
  20. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\App.php ( 15.30 KB )
  21. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-container\src\Container.php ( 15.76 KB )
  22. E:\Demos\DemoCompany\PHP\official\tp\vendor\psr\container\src\ContainerInterface.php ( 1.02 KB )
  23. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Http.php ( 6.04 KB )
  24. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-helper\src\helper\Str.php ( 7.29 KB )
  25. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Env.php ( 4.68 KB )
  26. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\helper.php ( 18.78 KB )
  27. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Config.php ( 5.54 KB )
  28. E:\Demos\DemoCompany\PHP\official\tp\config\app.php ( 1.21 KB )
  29. E:\Demos\DemoCompany\PHP\official\tp\config\cache.php ( 0.78 KB )
  30. E:\Demos\DemoCompany\PHP\official\tp\config\console.php ( 0.23 KB )
  31. E:\Demos\DemoCompany\PHP\official\tp\config\cookie.php ( 0.56 KB )
  32. E:\Demos\DemoCompany\PHP\official\tp\config\database.php ( 2.13 KB )
  33. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\facade\Env.php ( 1.67 KB )
  34. E:\Demos\DemoCompany\PHP\official\tp\config\filesystem.php ( 0.61 KB )
  35. E:\Demos\DemoCompany\PHP\official\tp\config\lang.php ( 0.91 KB )
  36. E:\Demos\DemoCompany\PHP\official\tp\config\log.php ( 1.35 KB )
  37. E:\Demos\DemoCompany\PHP\official\tp\config\middleware.php ( 0.29 KB )
  38. E:\Demos\DemoCompany\PHP\official\tp\config\route.php ( 1.68 KB )
  39. E:\Demos\DemoCompany\PHP\official\tp\config\session.php ( 0.57 KB )
  40. E:\Demos\DemoCompany\PHP\official\tp\config\trace.php ( 0.34 KB )
  41. E:\Demos\DemoCompany\PHP\official\tp\config\view.php ( 0.82 KB )
  42. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Lang.php ( 7.35 KB )
  43. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\lang\zh-cn.php ( 13.70 KB )
  44. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Event.php ( 7.67 KB )
  45. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\initializer\Error.php ( 3.31 KB )
  46. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\initializer\RegisterService.php ( 1.33 KB )
  47. E:\Demos\DemoCompany\PHP\official\tp\vendor\services.php ( 0.18 KB )
  48. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\service\PaginatorService.php ( 1.52 KB )
  49. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Service.php ( 1.64 KB )
  50. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\service\ValidateService.php ( 0.99 KB )
  51. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\service\ModelService.php ( 2.04 KB )
  52. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-multi-app\src\Service.php ( 1.08 KB )
  53. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-trace\src\Service.php ( 0.77 KB )
  54. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Middleware.php ( 6.72 KB )
  55. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\initializer\BootService.php ( 0.77 KB )
  56. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\Paginator.php ( 11.86 KB )
  57. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-validate\src\Validate.php ( 63.20 KB )
  58. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\Model.php ( 23.55 KB )
  59. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\Attribute.php ( 21.05 KB )
  60. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\AutoWriteData.php ( 4.20 KB )
  61. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\Conversion.php ( 6.75 KB )
  62. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\DbConnect.php ( 5.16 KB )
  63. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\ModelEvent.php ( 2.33 KB )
  64. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\concern\RelationShip.php ( 28.30 KB )
  65. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-helper\src\contract\Arrayable.php ( 0.09 KB )
  66. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-helper\src\contract\Jsonable.php ( 0.13 KB )
  67. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\model\contract\Modelable.php ( 0.09 KB )
  68. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Db.php ( 2.88 KB )
  69. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-orm\src\DbManager.php ( 8.52 KB )
  70. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Log.php ( 6.28 KB )
  71. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Manager.php ( 3.92 KB )
  72. E:\Demos\DemoCompany\PHP\official\tp\vendor\psr\log\src\LoggerTrait.php ( 2.69 KB )
  73. E:\Demos\DemoCompany\PHP\official\tp\vendor\psr\log\src\LoggerInterface.php ( 2.71 KB )
  74. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Cache.php ( 4.92 KB )
  75. E:\Demos\DemoCompany\PHP\official\tp\vendor\psr\simple-cache\src\CacheInterface.php ( 4.71 KB )
  76. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-helper\src\helper\Arr.php ( 17.45 KB )
  77. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\cache\driver\File.php ( 7.84 KB )
  78. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\cache\Driver.php ( 9.03 KB )
  79. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\contract\CacheHandlerInterface.php ( 1.99 KB )
  80. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Console.php ( 22.89 KB )
  81. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Request.php ( 55.78 KB )
  82. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Pipeline.php ( 2.61 KB )
  83. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-multi-app\src\MultiApp.php ( 7.06 KB )
  84. E:\Demos\DemoCompany\PHP\official\tp\app\admin\common.php ( 0.05 KB )
  85. E:\Demos\DemoCompany\PHP\official\tp\app\admin\event.php ( 0.07 KB )
  86. E:\Demos\DemoCompany\PHP\official\tp\app\admin\middleware.php ( 0.33 KB )
  87. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\middleware\SessionInit.php ( 1.94 KB )
  88. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Session.php ( 1.80 KB )
  89. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\session\driver\File.php ( 6.27 KB )
  90. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\contract\SessionHandlerInterface.php ( 0.87 KB )
  91. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\session\Store.php ( 7.12 KB )
  92. E:\Demos\DemoCompany\PHP\official\tp\app\admin\middleware\Cors.php ( 1.25 KB )
  93. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-trace\src\TraceDebug.php ( 3.40 KB )
  94. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Route.php ( 23.73 KB )
  95. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\RuleName.php ( 5.75 KB )
  96. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\Domain.php ( 2.53 KB )
  97. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\RuleGroup.php ( 22.43 KB )
  98. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\Rule.php ( 26.95 KB )
  99. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\RuleItem.php ( 9.78 KB )
  100. E:\Demos\DemoCompany\PHP\official\tp\app\admin\route\app.php ( 4.73 KB )
  101. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\facade\Route.php ( 4.70 KB )
  102. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\dispatch\Callback.php ( 3.78 KB )
  103. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\route\Dispatch.php ( 10.44 KB )
  104. E:\Demos\DemoCompany\PHP\official\tp\app\admin\controller\Index.php ( 0.34 KB )
  105. E:\Demos\DemoCompany\PHP\official\tp\app\admin\BaseController.php ( 2.14 KB )
  106. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Response.php ( 8.81 KB )
  107. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\response\Html.php ( 0.97 KB )
  108. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\Cookie.php ( 6.06 KB )
  109. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\think-trace\src\Html.php ( 4.42 KB )
  110. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\log\driver\File.php ( 5.96 KB )
  111. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\contract\LogHandlerInterface.php ( 0.86 KB )
  112. E:\Demos\DemoCompany\PHP\official\tp\vendor\topthink\framework\src\think\log\Channel.php ( 3.89 KB )
-
-
-
    -
-
-
-
    -
-
-
-
    -
-
-
-
    -
-
-
-
-
- -
-
-
-
0.019183s
- -
- - -