5.1 项目根目录结构
/gyro-craftsman-owen/
├── .trae/ # Trae IDE 配置目录
├── app/ # 应用程序核心代码
├── bootstrap/ # 引导文件
├── config/ # 配置文件
├── crmeb/ # 自定义工具库
├── database/ # 数据库相关
├── helper/ # 辅助工具
├── public/ # 公共资源文件
├── routes/ # 路由定义
├── storage/ # 存储文件
├── tests/ # 测试文件
├── vendor/ # Composer 依赖
├── .env # 环境变量
├── .env.example # 环境变量示例
├── composer.json # Composer 依赖配置
├── artisan # Laravel 命令行工具
└── phpunit.xml # PHPUnit 配置文件
5.2 app/ 目录结构
app/ 目录是应用程序的核心代码目录,包含了所有业务逻辑和功能实现。
app/
├── Console/ # 控制台命令
│ └── Commands/ # 自定义命令
├── Exceptions/ # 异常处理
│ └── Handler.php # 异常处理器
├── Http/ # HTTP 相关代码
│ ├── Controller/ # 控制器
│ ├── Dao/ # 数据访问对象
│ ├── Middleware/ # 中间件
│ ├── Model/ # 数据模型
│ ├── Requests/ # 请求验证
│ └── Service/ # 业务服务
├── Jobs/ # 队列任务
├── Listeners/ # 事件监听器
├── Providers/ # 服务提供者
├── Task/ # 任务处理
├── Constants/ # 常量定义
└── Traits/ # 可复用特性
5.3 app/Http/Controller/ 目录结构
控制器目录采用模块化组织,按功能模块划分。
Controller/
├── AdminApi/ # 后台 API 控制器
│ ├── Auth/ # 认证模块
│ │ └── AuthController.php
│ ├── User/ # 用户模块
│ │ ├── UserController.php
│ │ └── UserInfoController.php
│ ├── Chat/ # 聊天模块
│ │ ├── ApplicationController.php
│ │ ├── HistoryController.php
│ │ └── RecordController.php
│ ├── Approve/ # 审批模块
│ │ ├── ApproveController.php
│ │ └── ApproveApplyController.php
│ ├── Attendance/ # 考勤模块
│ │ ├── AttendanceController.php
│ │ └── ClockController.php
│ ├── Assess/ # 考核模块
│ │ └── AssessController.php
│ └── System/ # 系统模块
│ ├── ConfigController.php
│ └── LogController.php
├── UniApi/ # 统一 API 控制器
│ └── ...
└── Install.php # 安装控制器
5.4 app/Http/Dao/ 目录结构
数据访问对象目录按模块组织,封装数据库操作逻辑。
Dao/
├── Admin/ # 管理员数据访问
│ ├── AdminDao.php
│ └── AdminInfoDao.php
├── Auth/ # 认证数据访问
│ ├── RoleDao.php
│ └── UserRoleDao.php
├── User/ # 用户数据访问
│ ├── UserDao.php
│ └── UserTokenDao.php
├── Chat/ # 聊天数据访问
│ ├── ApplicationDao.php
│ ├── HistoryDao.php
│ ├── ModelsDao.php
│ └── RecordDao.php
├── Approve/ # 审批数据访问
│ ├── ApproveDao.php
│ ├── ApproveApplyDao.php
│ └── ApproveFormDao.php
├── Attendance/ # 考勤数据访问
│ ├── AttendanceGroupDao.php
│ └── ClockRecordDao.php
├── Assess/ # 考核数据访问
│ └── AssessDao.php
├── Company/ # 公司数据访问
│ └── CompanyDao.php
├── Config/ # 配置数据访问
│ ├── ConfigDao.php
│ └── BackupDao.php
├── Finance/ # 财务数据访问
│ ├── BillDao.php
│ └── PaytypeDao.php
├── Message/ # 消息数据访问
│ └── MessageDao.php
└── Work/ # 工作数据访问
├── WorkLabelDao.php
├── WorkClientDao.php
└── WorkMemberDao.php
5.5 app/Http/Model/ 目录结构
数据模型目录按功能模块组织,定义数据表结构。
Model/
├── Admin/ # 管理员模型
│ ├── Admin.php
│ └── AdminInfo.php
├── Auth/ # 认证授权模型
│ ├── Role.php
│ └── Permission.php
├── User/ # 用户模型
│ ├── User.php
│ └── UserToken.php
├── Chat/ # 聊天模型
│ ├── Application.php
│ ├── History.php
│ ├── Models.php
│ └── Record.php
├── Approve/ # 审批模型
│ ├── Approve.php
│ ├── ApproveApply.php
│ └── ApproveForm.php
├── Attendance/ # 考勤模型
│ ├── AttendanceGroup.php
│ ├── AttendanceGroupMember.php
│ └── ClockRecord.php
├── Assess/ # 考核模型
│ ├── Assess.php
│ ├── AssessSpace.php
│ └── AssessTarget.php
├── Company/ # 公司模型
│ └── Company.php
├── Finance/ # 财务模型
│ └── Bill.php
├── Message/ # 消息模型
│ └── Message.php
└── Work/ # 工作模型
├── WorkClient.php
├── WorkLabel.php
└── WorkMember.php
5.6 app/Http/Service/ 目录结构
业务服务目录按模块组织,实现核心业务逻辑。
Service/
├── Admin/ # 管理员服务
│ ├── AdminService.php
│ └── AdminInfoService.php
├── Auth/ # 认证服务
│ ├── AuthService.php
│ └── RoleService.php
├── User/ # 用户服务
│ ├── UserService.php
│ └── UserTokenService.php
├── Chat/ # 聊天服务
│ ├── ApplicationService.php
│ ├── ChatService.php
│ ├── HistoryService.php
│ └── RecordService.php
├── Approve/ # 审批服务
│ ├── ApproveService.php
│ └── ApproveApplyService.php
├── Attendance/ # 考勤服务
│ ├── AttendanceService.php
│ └── ClockService.php
├── Assess/ # 考核服务
│ └── AssessService.php
├── Company/ # 公司服务
│ └── CompanyService.php
├── Config/ # 配置服务
│ └── ConfigService.php
├── Message/ # 消息服务
│ └── MessageService.php
└── Work/ # 工作服务
└── WorkService.php
5.7 app/Http/Middleware/ 目录结构
中间件目录包含请求过滤和处理逻辑。
Middleware/
├── Auth/ # 认证中间件
│ ├── AuthAdmin.php # 后台认证中间件
│ ├── AuthUser.php # 用户认证中间件
│ └── AuthCrud.php # CRUD 认证中间件
├── Language/ # 语言中间件
│ └── Language.php # 语言切换中间件
├── CORS/ # 跨域中间件
│ └── Cors.php
└── RateLimit/ # 限流中间件
└── ApiRateLimiter.php
5.8 app/Constants/ 目录结构
常量目录按功能模块组织,定义系统常量。
Constants/
├── System/ # 系统常量
│ └── ConfigEnum.php # 配置常量
├── Work/ # 工作常量
│ ├── MediaEnum.php # 媒体常量
│ ├── LabelEnum.php # 标签常量
│ └── StatusEnum.php # 状态常量
├── ApproveEnum.php # 审批常量
├── AssessEnum.php # 评估常量
├── AttachEnum.php # 附件常量
├── CacheEnum.php # 缓存常量
├── ClientEnum.php # 客户常量
├── CompanyEnum.php # 公司常量
├── DailyEnum.php # 日报常量
├── MenuEnum.php # 菜单常量
└── UserEnum.php # 用户常量
5.9 config/ 目录结构
配置文件目录包含系统所有配置项。
config/
├── app.php # 应用配置
├── auth.php # 认证配置
├── cache.php # 缓存配置
├── database.php # 数据库配置
├── filesystems.php # 文件系统配置
├── hashing.php # 哈希配置
├── jwt.php # JWT 配置
├── laravels.php # LaravelS 配置
├── lauthz.php # Casbin 权限配置
├── logging.php # 日志配置
├── mail.php # 邮件配置
├── queue.php # 队列配置
├── services.php # 服务配置
├── session.php # Session 配置
└── upload.php # 上传配置
5.10 routes/ 目录结构
路由目录定义系统所有路由。
routes/
├── web.php # Web 路由
├── api.php # API 路由
├── console.php # 控制台路由
├── channels.php # 广播通道
└── websocket.php # WebSocket 路由
5.11 database/ 目录结构
数据库目录包含迁移、种子和工厂文件。
database/
├── factories/ # 模型工厂
│ ├── UserFactory.php
│ └── ...
├── migrations/ # 数据库迁移
│ ├── 2024_01_01_000001_create_users_table.php
│ ├── 2024_01_01_000002_create_admins_table.php
│ └── ...
├── seeders/ # 数据库种子
│ ├── DatabaseSeeder.php
│ └── ...
└── schema/ # 数据库 schema
└── ...
5.12 crmeb/ 目录结构
自定义工具库目录包含项目特定的工具类和服务。
crmeb/
├── basic/ # 基础类
│ └── BaseService.php
├── exceptions/ # 异常类
│ └── BusinessException.php
├── services/ # 服务类
│ ├── UploadService.php
│ └── CacheService.php
├── socket/ # Socket 类
│ └── WebSocket.php
├── traits/ # 特质类
│ └── Singleton.php
└── utils/ # 工具类
├── Helper.php
└── Validator.php
5.13 public/ 目录结构
公共资源目录包含前端文件和静态资源。
public/
├── admin/ # 后台前端文件
│ ├── index.html
│ ├── static/
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── ...
├── chat/ # 聊天前端文件
│ └── ...
├── install/ # 安装程序文件
│ └── ...
├── favicon.ico # 网站图标
└── index.php # 入口文件
5.14 开发指南
5.14.1 新增模块流程
- 创建目录结构:
bash
# 在 Controller 下创建模块目录
mkdir -p app/Http/Controller/AdminApi/NewModule/
# 在 Service 下创建模块目录
mkdir -p app/Http/Service/NewModule/
# 在 Dao 下创建模块目录
mkdir -p app/Http/Dao/NewModule/
# 在 Model 下创建模块目录
mkdir -p app/Http/Model/NewModule/
- 创建核心文件:
-
创建控制器类
-
创建服务类
-
创建数据访问类
-
创建模型类
-
创建请求验证类
- 配置路由:
-
在控制器中添加路由属性
-
配置中间件
- 创建数据库迁移:
bash
php artisan make:migration create_new_module_table
- 测试验证:
bash
php artisan route:list | grep new_module
5.14.2 代码组织原则
-
单一职责原则:每个类只负责一项功能
-
依赖注入:通过构造函数注入依赖
-
接口隔离:使用接口定义行为
-
开闭原则:对扩展开放,对修改关闭
5.14.3 目录命名规范
-
目录名使用小写字母
-
多个单词使用下划线分隔
-
按功能模块组织相关文件
-
保持目录结构扁平化