签入版本

This commit is contained in:
2026-10-08 17:50:29 +08:00
parent 809750b47e
commit e213a9b31d
444 changed files with 39366 additions and 37533 deletions
+205 -213
View File
@@ -6,104 +6,133 @@
```text
1. 清晰的层次结构:按照功能模块划分目录,方便团队成员快速定位代码。
2. 模块化管理:通过多模块结构,实现功能模块的独立管理,提高系统的可维护性和扩展性。
3. 分层架构:Controller(HTTP)、Logic(业务)、Model(数据)分离,职责清晰。
2. 分层架构:Controller(HTTP)、Service(业务)、Model(数据)分离,职责清晰。
3. Trait 组合复用:通用能力集中在 BaseService 与 6 个 Concerns Trait,子类只声明差异。
4. 提升开发效率:清晰的目录结构和模块划分,减少查找代码的时间,提高开发效率。
```
## 项目根目录
```text
├── app/ // 后端源码
├── ui/ // 前端源码(Vue3 + ElementPlus)
├── config/ // 配置文件
├── document/ // 项目文档(SQL脚本、开发手册等)
├── extend/ // 扩展类库
├── public/ // 公共资源(入口文件、上传目录)
├── route/ // 路由定义
├── templates/ // 代码生成模板
├── wiki/ // VitePress 文档站点
RXThinkCMF_Laravel13_EleVue/
├── app/ // 后端源码(见下方详解)
├── bootstrap/ // 应用引导(app.php 注册中间件别名与健康检查路由)
├── config/ // 配置文件(18 个)
├── database/
│ ├── migrations/ // 数据库迁移(本项目为空,建表以 SQL 脚本为准)
│ ├── seeders/ // 种子数据(DatabaseSeeder:租户/部门/角色/菜单/用户/字典)
│ └── factories/ // 模型工厂(测试数据)
├── docker/ // Docker 部署文件(Dockerfile / nginx.conf / .env.docker)
├── document/ // 项目资料(五种数据库初始化脚本,按类型分组)
├── docs/ // 专项文档(定时任务调度说明)
├── public/ // Web 公开目录(入口 index.php、静态资源)
├── resources/
│ ├── templates/ // ★ 代码生成器模板(*.tpl + ui/ + ui2/)
│ ├── views/ // Blade 视图(欢迎页等少量页面)
│ ├── css/ js/ // Vite 资源入口(TailwindCSS)
├── routes/
│ ├── api.php // ★ 全部 API 路由(公开接口在中间件组外)
│ ├── console.php // 命令调度注册
│ └── web.php // 欢迎页路由
├── storage/ // 运行时产物(日志/缓存/会话/编译视图,需可写)
├── tests/ // PHPUnit 测试(Feature / Unit)
├── ui/ // ★ 前端 EleVue 管理后台(Vue3 + ElementPlus,见第 9 章)
├── uploads/ // 上传文件目录
├── vendor/ // Composer 依赖(不提交到版本控制)
├── runtime/ // 运行时缓存(不提交到版本控制)
├── artisan // Artisan 命令行入口
├── composer.json // PHP 依赖清单(含 setup / dev / test 脚本)
├── package.json // 后端资源构建依赖(Vite + TailwindCSS,前端依赖见 ui/package.json)
├── vite.config.js // Vite 构建配置
├── docker-compose.yml // Docker 容器编排
├── .env.example // 环境变量模板
├── .env // 环境变量(不提交到版本控制)
├── composer.json // PHP 依赖清单
├── composer.lock // 依赖锁定文件
├── think // ThinkPHP 命令行入口
└── README.md // 项目说明
```
:::tip 前端代码位置
本仓库包含**后端服务**与 `ui/` 目录内的前端 EleVue 管理后台(Vue3 + ElementPlus);代码生成器会把生成的前端页面输出到 `ui/src/` 对应位置(见 [10.6 自定义模板开发](/zh/generator/templates.html))。前端工程结构详见 [第 9 章 前端开发](/zh/frontend/overview.html)。
:::
## 后端目录 (app/)
```text
app/
├── BaseController.php // 控制器基类(统一响应、参数获取、通用CRUD)
├── BaseLogic.php // 逻辑基类(属性配置、生命周期钩子、横切处理)
├── BaseTenantLogic.php // 租户逻辑基类(继承BaseLogic,自动租户隔离)
├── BaseModel.php // 模型基类(软删除、审计字段自动写入)
├── ExceptionHandle.php // 统一异常处理(所有异常渲染为JSON)
├── common.php // 公共函数库(加密、文件处理、驼峰转换)
├── event.php // 事件定义
├── middleware.php // 全局中间件注册
├── attribute/ // PHP 8 注解
│ ├── Log.php // 操作日志注解(40种操作类型)
│ ├── Permission.php // 权限校验注解
├── Attributes/ // PHP 8 注解
│ ├── Permission.php // 权限校验注解(#[Permission('sys:user:add')])
│ ├── OperationLog.php // 操作日志注解(类型 + 模板,40 种操作类型)
│ └── DemoAllow.php // 演示环境放行注解
├── command/ // 命令行命令
│ ├── JobRunCommand.php // 定时任务一次性执行(配合系统 cron)
│ ├── JobDaemonCommand.php // 定时任务常驻进程(配合 supervisor)
│ ├── GeneratorCommand.php // 代码生成器 CLI
│ └── DbMigrateCommand.php // 数据库迁移工具
├── controller/ // 控制器层(HTTP 入口)
│ ├── UserController.php // 用户管理
│ ├── RoleController.php // 角色管理
│ ├── MenuController.php // 菜单管理
│ ├── DeptController.php // 部门管理
│ ├── PositionController.php // 岗位管理
│ ├── LevelController.php // 职级管理
│ ├── ArticleController.php // 文章管理
│ ├── DictController.php // 字典管理
│ ├── ConfigController.php // 配置管理
│ ├── JobController.php // 定时任务
│ ├── TenantController.php // 租户管理
│ ├── GeneratorController.php // 代码生成器
│ └── ... // 其他模块
├── logic/ // 业务逻辑层
│ ├── UserLogic.php // 用户业务逻辑
│ ├── RoleLogic.php // 角色业务逻辑
│ ├── ArticleLogic.php // 文章业务逻辑
│ ├── GeneratorLogic.php // 代码生成逻辑
│ ├── LoginLogic.php // 登录业务逻辑
│ ├── LoginLogLogic.php // 登录日志逻辑
│ ├── OperLogLogic.php // 操作日志逻辑
│ ├── IndexLogic.php // 首页/仪表盘逻辑
│ └── ... // 其他模块
├── model/ // 数据模型层
│ ├── User.php // 用户模型
│ ├── Role.php // 角色模型
│ ├── Menu.php // 菜单模型
│ ├── UserRole.php // 用户角色关联
│ ├── RoleMenu.php // 角色菜单关联
│ └── ... // 其他模型
├── validate/ // 验证器
│ ├── UserValidate.php // 用户验证
│ └── ... // 其他验证器
├── task/ // 定时任务处理器
│ ├── BaseTask.php // 任务处理器基类
│ ├── HelloWorldTask.php // 测试任务(验证 daemon 调度器)
│ └── SendSmsTask.php // 示例任务
└── service/ // 服务层(通用能力)
├── JwtService.php // JWT 认证(登录/刷新/解析)
├── PasswordService.php // 密码加密(bcrypt 双重加盐)
├── DictService.php // 字典服务(两级缓存)
├── ParamService.php // 系统参数服务
├── CaptchaService.php // 验证码服务
├── RequestInfoService.php // 请求信息解析
├── AttributeService.php // 注解读取(反射+缓存)
├── GeneratorService.php // 代码生成服务
├── ExcelService.php // Excel 导入导出
├── DbSchemaBuilder.php // 跨数据库 DDL 生成器
└── DbMigrateService.php // 跨数据库数据迁移
├── Console/Commands/ // 5 个 Artisan 命令
│ ├── GeneratorCommand.php // generate:code 代码生成器 CLI
│ ├── DbMigrateCommand.php // db:migrate 跨库数据迁移
│ ├── JobRunCommand.php // job:run 定时任务一次性执行(配合系统 cron)
│ ├── JobDaemonCommand.php // job:daemon 定时任务常驻进程(配合 supervisor)
│ └── ClearDictCache.php // dict:clear-cache 清除字典缓存
├── Exceptions/ // 统一异常处理
│ ├── BizException.php // 业务异常(Service 层抛出,默认 code=1)
│ └── Handler.php // 全局异常渲染(异常 → 统一 JSON)
├── Helpers/helpers.php // 21 个全局辅助函数(composer autoload.files 加载)
├── Http/
│ ├── Controllers/
│ │ ├── Controller.php // 控制器基类(统一响应 + _page/_add 等通用 CRUD)
│ │ └── Api/ // 28 个业务控制器
│ │ ├── AuthController.php // 登录认证(JWT 双令牌 / OAuth2)
│ │ ├── UserController.php // 用户管理
│ │ ├── RoleController.php // 角色管理
│ │ ├── MenuController.php // 菜单管理
│ │ ├── ExampleController.php // 案例演示(标准 CRUD 参考模板)
│ │ ├── GeneratorController.php // 代码生成器
│ │ └── ... // 其他模块
│ ├── Middleware/ // 7 个中间件
│ │ ├── ProxyMiddleware.php // 真实 IP 提取(受信代理)
│ │ ├── Cors.php // 跨域处理
│ │ ├── ForceJsonResponse.php // 强制 JSON 响应
│ │ ├── Authenticate.php // JWT 认证 + #[Permission] 鉴权(auth.jwt)
│ │ ├── ResolveTenant.php // 租户上下文解析(tenant)
│ │ ├── LogOperation.php // 操作日志采集(log.operation,terminable 落库)
│ │ └── DemoMiddleware.php // 演示模式写操作拦截
│ └── Requests/ // 24 个 FormRequest(统一继承 BaseRequest)
│ ├── BaseRequest.php // 基类:授权放行 + 失败统一 JSON
│ ├── ExampleRequest.php // 示例请求验证
│ └── ... // 其他模块请求验证
├── Models/ // Eloquent 模型(25 个)
│ ├── Concerns/ // 3 个模型 Trait
│ │ ├── SoftDeletesByFlag.php // is_delete 软删除
│ │ ├── SoftDeleteFlagScope.php// 全局软删除范围
│ │ └── HasAuditColumns.php // 审计字段自动填充
│ ├── User.php // 用户模型($table = 'user',前缀由 DB_PREFIX 决定)
│ ├── Example.php // 案例模型
│ └── ... // 其他模型
├── Observers/ // 模型观察者(数据变更 → 缓存失效)
│ ├── DictItemObserver.php // 字典项变更 → 清除字典缓存
│ ├── MenuObserver.php // 菜单变更 → 清除菜单/权限缓存
│ └── RoleMenuObserver.php // 角色菜单变更 → 清除角色权限缓存
├── Providers/
│ └── AppServiceProvider.php // 启动校验(JWT_SECRET fail-close)+ Observer 注册
├── Services/ // ★ 业务逻辑层(36 个)
│ ├── BaseService.php // 核心基类(全部声明式属性集中于此)
│ ├── BaseTenantService.php // 租户版基类(tenant_id 查询/写入双隔离)
│ ├── Concerns/ // 7 个 Service Trait(只放方法)
│ │ ├── HasCrudOperations.php // add/update/delete + 生命周期钩子 + 事务
│ │ ├── HasQueryScopes.php // buildQuery / 排序白名单
│ │ ├── HasFileProcessing.php // 文件字段自动处理(临时→正式、域名补全)
│ │ ├── HasDataScope.php // 数据权限 + 租户隔离
│ │ ├── HasSerializeMaps.php // 字典翻译(DictCacheService 批量优化)
│ │ ├── HasUniqueCheck.php // 唯一性校验
│ │ └── HasConfigValueProcessing.php // 配置项 value 按类型处理(文件迁移 / valueList)
│ ├── ExampleService.php // 案例演示服务(标准 CRUD 参考模板)
│ ├── JwtService.php // JWT 签发 / 刷新 / 解析
│ ├── DictCacheService.php // 字典服务(两级缓存)
│ ├── GeneratorService.php // 代码生成服务
│ ├── ExcelService.php // Excel 导入导出
│ ├── DbMigrateService.php // 跨数据库数据迁移
│ └── ... // 其他业务/横切服务
├── Support/ // 基础支撑
│ ├── Auth.php // 当前登录用户(Auth::userId() 等)
│ └── Result.php // 统一响应类(success/page/fail/...)
└── Task/ // 定时任务处理器
├── BaseTask.php // 任务基类
├── HelloWorldTask.php // 测试任务(验证 daemon 调度)
└── SendSmsTask.php // 示例任务
```
## 后端模块内部结构
@@ -111,62 +140,69 @@ app/
每个业务模块遵循统一的文件结构:
```text
app/controller/{Name}Controller.php // HTTP 入口(注解 + 异常处理)
app/logic/{Name}Logic.php // 业务逻辑(属性配置 + 钩子)
app/model/{Name}.php // 数据模型(表映射)
app/validate/{Name}Validate.php // 验证器(字段校验规则)
app/Http/Controllers/Api/{Name}Controller.php // HTTP 入口(注解 + 调用快捷方法)
app/Http/Requests/{Name}Request.php // 参数格式验证(FormRequest)
app/Services/{Name}Service.php // 业务逻辑(属性配置 + 钩子)
app/Models/{Name}.php // 数据模型(表映射 + 关联)
```
| 文件 | 职责 | 基类 |
|------|------|------|
| Controller | 接收请求、调用 Logic、返回响应 | BaseController |
| Logic | 业务逻辑、属性配置、钩子处理 | BaseLogic / BaseTenantLogic |
| Model | 数据库表映射、关联关系 | BaseModel |
| Validate | 参数校验规则 | ThinkPHP Validate |
| Controller | 接收请求、调用 Service、返回统一响应 | `App\Http\Controllers\Controller` |
| Request | 参数格式验证(必填、类型、格式) | `BaseRequest` |
| Service | 业务逻辑、属性声明、生命周期钩子 | `BaseService` / `BaseTenantService` |
| Model | 数据库表映射、关联关系、软删除、审计字段 | Eloquent Model + Concerns Trait |
## 配置目录 (config/)
```text
config/
├── api.php // API 配置(驼峰转换开关)
├── app.php // 应用配置(时区/调试模式/演示模式)
├── cache.php // 缓存配置(支持 file / redis)
├── console.php // 命令行配置
├── cookie.php // Cookie 配置
├── cors.php // 跨域配置(允许来源/方法/头)
├── database.php // 数据库配置(5种数据库)
├── file.php // 文件上传配置(目录/域名/大小限制)
├── filesystem.php // 文件系统配置
├── jwt.php // JWT 配置(密钥/有效期/算法)
├── lang.php // 多语言配置
├── log.php // 日志配置
├── middleware.php // 中间件排除列表
├── route.php // 路由配置
├── session.php // Session 配置
├── tenant.php // 多租户配置(默认租户ID)
├── trace.php // 调试追踪配置
└── view.php // 视图配置
├── api.php // API 配置(驼峰/下划线自动转换开关)★ 独立配置
├── captcha.php // 验证码配置(长度/字符集/有效期/万能码)★ 独立配置
├── cors.php // 跨域配置(允许来源/方法/头)★ 独立配置
├── file.php // 文件上传配置(目录/域名/大小/后缀白名单)★ 独立配置
├── jwt.php // JWT 配置(密钥/有效期/签发者)★ 独立配置
├── middleware.php // 中间件配置(受信代理等)★ 独立配置
├── tenant.php // 多租户配置(默认租户 ID)★ 独立配置
├── generator.php // 代码生成器配置(父菜单 ID、应用名)
├── app.php // 应用配置(名称/时区/调试模式)
├── auth.php // 认证配置
├── cache.php // 缓存配置(redis 驱动)
├── database.php // 数据库配置(mysql/pgsql/sqlsrv/sqlite + redis)
├── filesystems.php // 文件系统配置
├── logging.php // 日志配置
├── mail.php // 邮件配置
├── queue.php // 队列配置
├── services.php // 第三方服务配置
└── session.php // 会话配置
```
## 扩展目录 (extend/)
:::tip 独立配置约定
标 ★ 的 7 个配置文件为本项目**独立维护**(不与 Laravel 默认配置合并),通过 `config('jwt.secret')`、`config('file.domain_url')` 等方式读取。完整配置项见 [附录 C 配置项速查](/zh/appendix/config-reference.html)。
:::
## 数据库目录 (database/)
```text
extend/
├── jwt/
│ └── Jwt.php // JWT 工具类(签发/解析/刷新)
├── response/
│ └── Result.php // 统一响应类(code/ok/msg/data)
└── (无自定义扩展类)
database/
├── migrations/ // 迁移目录(本项目为空,建表以 SQL 导出为准)
├── seeders/
│ └── DatabaseSeeder.php // 初始数据:租户、部门、角色、菜单、用户、字典
└── factories/ // 模型工厂
```
## 代码生成模板 (templates/)
:::warning 注意
本项目**未使用 Laravel 迁移建表**,数据库结构以 `document/<数据库类型>/rxthinkcmf.laravel13.elevue.sql` 脚本为准(25 张业务表,`laravel_` 前缀,五种数据库各有专用脚本)。`composer setup` 中的 `migrate --force` 仅初始化迁移记录表,不会创建业务表。详见 [2.5 数据库初始化](/zh/quickstart/database-init.html)。
:::
## 代码生成模板 (resources/templates/)
```text
templates/
resources/templates/
├── controller.php.tpl // 控制器模板
├── logic.php.tpl // 业务逻辑模板
├── service.php.tpl // 服务层模板
├── model.php.tpl // 模型模板
├── validate.php.tpl // 验证器模板
├── request.php.tpl // FormRequest 模板
├── ui/ // 普通列表模板(前端文件)
│ ├── index.vue.tpl // 列表页模板
│ ├── edit.vue.tpl // 编辑弹窗模板
@@ -177,115 +213,71 @@ templates/
└── ui2/ // 树形结构模板(前端文件)
```
## 前端目录 (ui/src/)
## 路由目录 (routes/)
```text
ui/src/
├── main.ts // 入口文件(注册插件、挂载应用)
├── App.vue // 根组件
├── api/ // API 接口定义(按业务分组)
│ ├── system/ // 系统管理接口(user.ts / role.ts / menu.ts 等)
│ ├── content/ // 内容管理接口
│ ├── data/ // 数据管理接口
│ ├── monitor/ // 监控管理接口
│ ├── tool/ // 工具接口(example.ts / generator.ts)
│ ├── file/ // 文件接口
│ ├── region/ // 地区接口
│ ├── setting/ // 设置接口
│ ├── dashboard/ // 仪表盘接口
│ └── common/ // 公共接口(login / menu / user)
├── views/ // 页面视图(按业务分组)
│ ├── login/ // 登录页
│ ├── dashboard/ // 控制台
│ ├── system/ // 系统管理页面(user / role / menu / dept / position / level / tenant)
│ ├── content/ // 内容管理页面(article / category / link)
│ ├── data/ // 数据管理页面(dict / config / notice / param / city)
│ ├── monitor/ // 监控管理页面(job)
│ ├── file/ // 文件管理页面(fileTemplate)
│ ├── tool/ // 工具页面(generator / example)
│ ├── setting/ // 设置页面(profile / configWeb)
│ ├── iframe/ // 内嵌 iframe 页面
│ ├── redirect/ // 重定向页面
│ ├── exception/ // 异常页面(403 / 404 / 500)
│ └── about/ // 关于页面
├── components/ // 公共组件
│ ├── Table/ // BasicTable 表格组件
│ ├── Form/ // BasicForm 表单组件
│ ├── Modal/ // Modal 弹窗组件
│ ├── Page/ // PageWrapper 页面容器
│ ├── Upload/ // 文件上传组件
│ ├── Editor/ // 富文本编辑器(TinyMce)
│ ├── Cropper/ // 图片裁剪组件
│ ├── Qrcode/ // 二维码组件
│ ├── Excel/ // Excel 导入导出组件
│ ├── ChinaArea/ // 省市区联动组件
│ ├── Region/ // 区域选择组件
│ ├── Password/ // 密码强度组件
│ ├── Authority/ // 权限组件
│ ├── icon/ // 图标组件
│ └── ... // 其他组件
├── hooks/ // 组合式函数
│ ├── index.ts // hooks 统一导出
│ ├── useTime.ts // 时间 hook
│ ├── useDomWidth.ts // DOM 宽度 hook
│ ├── useOnline.ts // 网络状态 hook
│ ├── useBattery.ts // 电量 hook
│ ├── use-async.ts // 异步操作 hook
│ ├── core/ // 核心 hooks
│ ├── event/ // 事件 hooks
│ ├── setting/ // 配置 hooks
│ └── web/ // Web hooks(含权限判断)
├── store/ // Pinia 状态管理
│ └── modules/
│ ├── user.ts // 用户 Store(Token/用户信息/权限)
│ ├── asyncRoute.ts // 动态路由 Store(菜单/keep-alive)
│ ├── projectSetting.ts // 项目配置 Store
│ ├── tabsView.ts // 标签页 Store
│ ├── designSetting.ts // 设计/主题配置 Store
│ ├── lockscreen.ts // 锁屏 Store
│ └── ossConfig.ts // 云存储配置 Store
├── router/ // 路由配置
│ ├── index.ts // 路由实例
│ ├── base.ts // 静态路由(登录/404)
│ ├── generator-routers.ts // 动态路由生成(后端菜单→Vue Router)
│ ├── router-guards.ts // 路由守卫(登录校验/菜单加载)
│ └── router-icons.ts // 路由图标映射
├── utils/ // 工具函数
│ ├── http/ // HTTP 请求封装(Axios 拦截器)
│ └── Storage.ts // 本地存储封装
├── layout/ // 布局组件(侧边栏/顶栏/内容区)
├── plugins/ // 插件注册
├── settings/ // 项目配置(标题/主题/布局)
├── directives/ // 自定义指令(v-perm 权限指令)
├── styles/ // 全局样式(Tailwind CSS / 主题变量)
├── enums/ // 枚举定义(HTTP / 页面)
└── assets/ // 静态资源(图标/图片)
routes/
├── api.php // ★ 全部 API 路由(约 165 条)
│ // 公开接口(login/captcha/refresh/oauth2)在中间件组外
│ // 认证接口在 ['auth.jwt','tenant','log.operation'] 组内
├── console.php // Artisan 调度注册
└── web.php // 欢迎页路由(/up 健康检查由 bootstrap/app.php 注册)
```
## Docker 目录 (docker/)
```text
docker-compose.yml // 四容器编排(Nginx + PHP-FPM + MySQL + Redis)
docker/
├── Dockerfile // PHP 8.3-fpm 应用镜像(扩展 + Composer 依赖)
├── nginx.conf // Nginx 站点配置(Laravel 路由重写 + 安全规则)
└── .env.docker // 容器环境变量(密码、端口、JWT 密钥)
```
## 资料目录 (document/)
```text
document/
├── .gitignore // 忽略规则(脚本等大文件不进版本库)
├── mysql/
│ └── rxthinkcmf.laravel13.elevue.sql // ★ MySQL 初始化脚本(约 226MB,25 张业务表 + 初始数据)
├── postgresql/
│ └── rxthinkcmf.laravel13.elevue.sql // PostgreSQL 初始化脚本
├── sqlserver/
│ └── rxthinkcmf.laravel13.elevue.sql // SQL Server 初始化脚本
├── oracle/
│ └── rxthinkcmf.laravel13.elevue.sql // Oracle 初始化脚本
└── sqlite/
└── rxthinkcmf.laravel13.elevue.sql // SQLite 初始化脚本
```
:::tip
五种数据库脚本按类型分组,已做对应 SQL 语法适配,直接导入即可(见 [2.5 数据库初始化](/zh/quickstart/database-init.html))。Docker 首次启动自动导入 `document/mysql/` 下的脚本。
:::
## 关键配置文件
| 文件 | 作用 |
|------|------|
| `.env` | 数据库连接、JWT 密钥、文件上传路径等环境变量 |
| `config/database.php` | 数据库配置(支持 5 种数据库) |
| `config/jwt.php` | JWT 配置(密钥/有效期/算法) |
| `config/file.php` | 文件上传配置(目录/域名/大小限制) |
| `config/cors.php` | 跨域配置(允许来源/方法/头) |
| `config/middleware.php` | 中间件排除列表 |
| `config/api.php` | API 配置(驼峰/下划线转换开关) |
| `config/cache.php` | 缓存配置(file/redis 驱动) |
| `config/tenant.php` | 多租户配置(默认租户ID) |
| `ui/.env.development` | 前端开发环境配置(API 代理地址) |
| `ui/vite.config.ts` | Vite 构建配置 |
| `ui/package.json` | 前端依赖和脚本命令 |
| `.env` | 数据库连接、JWT 密钥、Redis 密码、文件上传等环境变量 |
| `config/database.php` | 数据库配置(4 种关系库 + Redis 连接) |
| `config/jwt.php` | JWT 配置(密钥 / access·refresh 有效期 / 签发者) |
| `config/file.php` | 文件上传配置(目录 / 域名 / 大小 / 后缀白名单) |
| `config/cors.php` | 跨域配置(允许来源 / 方法 / 头) |
| `config/middleware.php` | 受信代理等中间件配置 |
| `config/api.php` | 响应驼峰/下划线自动转换开关 |
| `config/tenant.php` | 多租户配置(默认租户 ID) |
| `config/generator.php` | 代码生成器配置(父菜单 ID、应用名) |
| `composer.json` | 依赖清单 + `setup` / `dev` / `test` 脚本 |
| `bootstrap/app.php` | 中间件别名注册、全局中间件组、`/up` 健康检查 |
:::tip 注意事项
+ 保持一致性:目录结构一旦确定,应保持一致性,避免随意更改。
+ 合理划分模块:根据项目的实际需求,合理划分功能模块,避免过度模块化。
+ 文档记录:在项目文档中详细说明目录结构和各模块的功能,便于新成员快速上手。
+ 版本控制:使用 `Git` 等版本控制工具,并在 `.gitignore` 文件中配置不需要跟踪的目录和文件。
+ 版本控制:使用 `Git` 等版本控制工具,并在 `.gitignore` 文件中配置不需要跟踪的目录和文件(`vendor/`、`storage/`、`.env` 等)。
:::
## 总结
软件架构的目录结构是项目开发和维护的基础,直接影响到项目的可维护性、可扩展性和开发效率。采用分层的目录结构(后端 Controller → Logic → Model,前端 api → views → components),结合模块化管理,是一个有效的解决方案。通过合理规划和遵循最佳实践,可以确保项目的结构清晰、功能明确,为团队开发和长期维护打下坚实的基础。
软件架构的目录结构是项目开发和维护的基础,直接影响到项目的可维护性、可扩展性和开发效率。本项目采用分层的目录结构(后端 Controller → Service → Model,Trait 组合复用横切能力),结合模块化管理,是一个有效的解决方案。通过合理规划和遵循最佳实践,可以确保项目的结构清晰、功能明确,为团队开发和长期维护打下坚实的基础。