{{wikiTitle}}
目录结构说明
复制链接
编辑文档
CRMEB PRO 目录结构说明
概述
CRMEB PRO 是基于 ThinkPHP 8.0 + Swoole 4 框架开发的商业电商系统,采用前后端分离架构。本文档详细说明项目的目录结构和各目录的作用。
根目录结构
CRMEB_PRO/
├── app/ # 应用目录(核心业务代码)
├── config/ # 配置文件目录
├── crmeb/ # CRMEB核心类库目录
├── help/ # 帮助文件(Docker配置等)
├── public/ # 公共访问目录(入口文件)
├── route/ # 路由配置目录
├── runtime/ # 运行时目录(缓存、日志)
├── vendor/ # Composer依赖包
├── view/ # 前端视图文件
├── .env # 环境配置文件
├── composer.json # Composer配置文件
└── think # ThinkPHP命令行入口
app/ 应用目录详解
app/
├── command/ # 命令行脚本
│ ├── ClearCache.php # 清除缓存命令
│ ├── ResetAdminPwd.php # 重置管理员密码
│ └── Timer.php # 定时任务命令
│
├── common/ # 公共控制器
│ └── controller/
│ ├── Order.php # 订单公共控制器
│ └── Recharge.php # 充值公共控制器
│
├── controller/ # 控制器目录
│ ├── admin/ # 后台管理控制器
│ │ └── v1/ # V1版本API
│ ├── api/ # 前端API控制器
│ │ ├── v1/ # V1版本(主要)
│ │ ├── v2/ # V2版本
│ │ ├── admin/ # 移动端商家管理
│ │ ├── pc/ # PC端接口
│ │ └── store/ # 门店接口
│ ├── erp/ # ERP对接控制器
│ ├── kefu/ # 客服系统控制器
│ ├── out/ # 对外接口控制器
│ └── supplier/ # 供应商控制器
│
├── dao/ # 数据访问层(DAO)
│ ├── activity/ # 活动相关DAO
│ ├── agent/ # 分销相关DAO
│ ├── article/ # 文章相关DAO
│ ├── community/ # 社区相关DAO
│ ├── diy/ # DIY装修相关DAO
│ ├── message/ # 消息相关DAO
│ ├── order/ # 订单相关DAO
│ ├── other/ # 其他DAO
│ ├── product/ # 商品相关DAO
│ ├── store/ # 门店相关DAO
│ ├── supplier/ # 供应商相关DAO
│ ├── system/ # 系统相关DAO
│ ├── user/ # 用户相关DAO
│ ├── wechat/ # 微信相关DAO
│ ├── work/ # 企业微信相关DAO
│ └── BaseDao.php # DAO基类
│
├── http/middleware/ # 中间件目录
│ ├── admin/ # 后台中间件
│ │ ├── AdminAuthTokenMiddleware.php # Token验证
│ │ ├── AdminCkeckRoleMiddleware.php # 权限检查
│ │ └── AdminLogMiddleware.php # 操作日志
│ ├── api/ # 前端API中间件
│ │ ├── AuthTokenMiddleware.php # 用户Token验证
│ │ ├── BlockerMiddleware.php # 防重复提交
│ │ ├── ClientMiddleware.php # 客户端验证
│ │ └── CustomerMiddleware.php # 客户验证
│ ├── kefu/ # 客服中间件
│ ├── out/ # 对外接口中间件
│ ├── supplier/ # 供应商中间件
│ ├── AllowOriginMiddleware.php # 跨域处理
│ ├── InstallMiddleware.php # 安装检测
│ └── StationOpenMiddleware.php # 站点开关
│
├── jobs/ # 队列任务目录
│ ├── activity/ # 活动相关队列
│ ├── agent/ # 分销相关队列
│ ├── community/ # 社区相关队列
│ ├── notice/ # 通知相关队列
│ ├── order/ # 订单相关队列
│ ├── product/ # 商品相关队列
│ ├── system/ # 系统相关队列
│ ├── user/ # 用户相关队列
│ └── work/ # 企业微信相关队列
│
├── listener/ # 事件监听器目录
│ ├── activity/ # 活动事件监听
│ ├── community/ # 社区事件监听
│ ├── notice/ # 通知事件监听
│ ├── order/ # 订单事件监听
│ ├── pay/ # 支付事件监听
│ ├── product/ # 商品事件监听
│ ├── store/ # 门店事件监听
│ ├── supplier/ # 供应商事件监听
│ ├── system/ # 系统事件监听
│ ├── user/ # 用户事件监听
│ ├── wechat/ # 微信事件监听
│ └── work/ # 企业微信事件监听
│
├── model/ # 数据模型目录
│ ├── activity/ # 活动模型
│ ├── agent/ # 分销模型
│ ├── article/ # 文章模型
│ ├── community/ # 社区模型
│ ├── diy/ # DIY模型
│ ├── message/ # 消息模型
│ ├── order/ # 订单模型
│ ├── other/ # 其他模型
│ ├── product/ # 商品模型
│ ├── store/ # 门店模型
│ ├── supplier/ # 供应商模型
│ ├── system/ # 系统模型
│ ├── user/ # 用户模型
│ ├── wechat/ # 微信模型
│ └── work/ # 企业微信模型
│
├── services/ # 业务服务层(核心业务逻辑)
│ ├── activity/ # 活动服务
│ │ ├── bargain/ # 砍价活动
│ │ ├── combination/ # 拼团活动
│ │ ├── coupon/ # 优惠券
│ │ ├── discounts/ # 优惠套餐
│ │ ├── integral/ # 积分商城
│ │ ├── lottery/ # 抽奖活动
│ │ ├── newcomer/ # 新人专享
│ │ ├── promotions/ # 优惠活动
│ │ ├── seckill/ # 秒杀活动
│ │ └── video/ # 短视频
│ ├── agent/ # 分销服务
│ ├── article/ # 文章服务
│ ├── community/ # 社区服务
│ ├── diy/ # DIY服务
│ ├── kefu/ # 客服服务
│ ├── message/ # 消息服务
│ ├── order/ # 订单服务(核心)
│ ├── other/ # 其他服务
│ ├── pay/ # 支付服务
│ ├── pc/ # PC端服务
│ ├── product/ # 商品服务
│ ├── serve/ # 第三方服务
│ ├── statistic/ # 统计服务
│ ├── store/ # 门店服务
│ ├── supplier/ # 供应商服务
│ ├── system/ # 系统服务
│ ├── user/ # 用户服务
│ ├── wechat/ # 微信服务
│ ├── work/ # 企业微信服务
│ └── BaseServices.php # 服务基类
│
├── validate/ # 数据验证器
│ ├── admin/ # 后台验证器
│ ├── api/ # API验证器
│ ├── kefu/ # 客服验证器
│ └── supplier/ # 供应商验证器
│
├── webscoket/ # WebSocket处理
│ ├── handler/ # WebSocket处理器
│ │ ├── AdminHandler.php # 后台WebSocket
│ │ ├── KefuHandler.php # 客服WebSocket
│ │ ├── SupplierHandler.php # 供应商WebSocket
│ │ └── UserHandler.php # 用户WebSocket
│ ├── BaseHandler.php # 处理器基类
│ ├── Manager.php # 连接管理
│ ├── Response.php # 响应处理
│ └── Room.php # 房间管理
│
├── AppService.php # 应用服务提供者
├── common.php # 公共函数文件
├── event.php # 事件定义文件
├── ExceptionHandle.php # 异常处理
├── middleware.php # 全局中间件配置
├── provider.php # 容器服务提供者
├── Request.php # 请求类扩展
└── service.php # 服务配置
config/ 配置目录详解
config/
├── admin.php # 后台配置
├── ajcaptcha.php # 滑块验证码配置
├── annotation.php # 注解配置
├── app.php # 应用配置
├── auth.php # 权限路由配置
├── cache.php # 缓存配置
├── captcha.php # 验证码配置
├── console.php # 控制台配置
├── cookie.php # Cookie配置
├── database.php # 数据库配置
├── delivery.php # 配送配置
├── filesystem.php # 文件系统配置
├── lang.php # 多语言配置
├── log.php # 日志配置
├── pay.php # 支付配置
├── plat.php # 平台配置
├── printer.php # 打印机配置
├── qrcode.php # 二维码配置
├── queue.php # 队列配置
├── route.php # 路由配置
├── session.php # Session配置
├── sms.php # 短信配置
├── swoole.php # Swoole配置
├── template.php # 模板消息配置
├── throttle.php # 限流配置
├── trace.php # 调试配置
├── upload.php # 上传配置
├── view.php # 视图配置
└── wechat.php # 微信配置
crmeb/ 核心类库目录详解
crmeb/
├── basic/ # 基础类
│ ├── BaseAuth.php # 认证基类
│ ├── BaseController.php # 控制器基类
│ ├── BaseDelivery.php # 配送基类
│ ├── BaseJobs.php # 队列任务基类
│ ├── BaseManager.php # 管理器基类
│ ├── BaseMessage.php # 消息基类
│ ├── BaseModel.php # 模型基类
│ ├── BasePay.php # 支付基类
│ ├── BasePrinter.php # 打印机基类
│ ├── BaseSmss.php # 短信基类
│ ├── BaseStorage.php # 存储基类
│ └── BaseUpload.php # 上传基类
│
├── command/ # 命令行工具
│ ├── stubs/ # 代码模板
│ ├── Dao.php # 生成DAO命令
│ ├── Install.php # 安装命令
│ └── Service.php # 生成Service命令
│
├── exceptions/ # 异常类
│ ├── AdminException.php # 后台异常
│ ├── ApiException.php # API异常
│ └── AuthException.php # 认证异常
│
├── form/ # 表单构建器
│
├── interfaces/ # 接口定义
│ ├── HandlerInterface.php # 处理器接口
│ ├── JobInterface.php # 队列任务接口
│ ├── ListenerInterface.php # 监听器接口
│ ├── MiddlewareInterface.php # 中间件接口
│ └── ProviderInterface.php # 服务提供者接口
│
├── listeners/ # 核心监听器
│
├── services/ # 核心服务
│ ├── ai/ # AI服务
│ ├── delivery/ # 配送服务
│ ├── erp/ # ERP服务
│ ├── express/ # 快递服务
│ ├── printer/ # 打印服务
│ ├── product/ # 商品复制服务
│ ├── serve/ # 第三方服务
│ ├── sms/ # 短信服务
│ ├── template/ # 模板服务
│ ├── upload/ # 上传服务
│ ├── wechat/ # 微信服务
│ ├── AliPayService.php # 支付宝服务
│ ├── CacheService.php # 缓存服务
│ ├── HttpService.php # HTTP服务
│ ├── QrcodeService.php # 二维码服务
│ ├── RedisService.php # Redis服务
│ └── UploadService.php # 上传服务
│
├── traits/ # Trait特性
│ ├── ErrorTrait.php # 错误处理
│ ├── QueueTrait.php # 队列特性
│ └── ServicesTrait.php # 服务特性
│
└── utils/ # 工具类
├── Arr.php # 数组工具
├── Canvas.php # 画布工具
├── Hook.php # 钩子工具
├── JwtAuth.php # JWT认证
├── Queue.php # 队列工具
└── Str.php # 字符串工具
route/ 路由目录详解
route/
├── admin.php # 后台管理路由
├── api.php # 前端API路由
├── erp.php # ERP对接路由
├── kefu.php # 客服系统路由
├── out.php # 对外接口路由
├── supplier.php # 供应商路由
└── zroute.php # 其他路由
view/ 前端视图目录详解
view/
├── admin/ # 后台管理前端
│ ├── src/ # 源代码
│ ├── public/ # 静态资源
│ └── package.json # 依赖配置
│
├── uniapp/ # 移动端(uni-app)
│ ├── api/ # API接口封装
│ ├── components/ # 公共组件
│ ├── config/ # 配置文件
│ ├── libs/ # 工具库
│ ├── pages/ # 页面文件
│ ├── static/ # 静态资源
│ ├── store/ # Vuex状态管理
│ │ ├── modules/ # 模块
│ │ │ ├── app.js # 应用状态
│ │ │ ├── hotWords.js # 热词状态
│ │ │ └── indexData.js# 首页数据
│ │ ├── getters.js # 计算属性
│ │ └── index.js # 入口文件
│ ├── utils/ # 工具函数
│ ├── App.vue # 根组件
│ ├── main.js # 入口文件
│ ├── manifest.json # uni-app配置
│ └── pages.json # 页面配置
│
└── uniapp_live/ # 直播模块
public/ 公共目录详解
public/
├── install/ # 安装程序
│ ├── crmeb.sql # 数据库文件
│ └── install.lock # 安装锁定文件
│
├── statics/ # 静态资源
│ ├── mp_view/ # 小程序资源
│ └── ip.dat # IP数据库
│
├── upgrade/ # 升级文件
│
├── index.php # 入口文件
├── index.html # 默认HTML
├── nginx.htaccess # Nginx伪静态
└── router.php # 路由文件
目录权限说明
以下目录需要设置可写权限(建议777):
/public- 上传文件存储/runtime- 运行时缓存和日志
代码组织规范
分层架构
Controller → Services → DAO → Model
↓ ↓ ↓ ↓
接收请求 业务逻辑 数据操作 数据映射
命名规范
| 类型 | 命名规范 | 示例 |
|---|---|---|
| 控制器 | 大驼峰 + Controller后缀 | StoreOrderController |
| 服务类 | 大驼峰 + Services后缀 | StoreOrderServices |
| DAO类 | 大驼峰 + Dao后缀 | StoreOrderDao |
| 模型类 | 大驼峰 | StoreOrder |
| 中间件 | 大驼峰 + Middleware后缀 | AuthTokenMiddleware |
| 监听器 | 大驼峰 | PayNotifyListener |
| 队列任务 | 大驼峰 + Job后缀 | OrderPaySuccessJob |
文件组织原则
- 按功能模块划分: 每个模块包含完整的 Controller、Services、DAO、Model
- 版本控制: API接口使用 v1、v2 等版本目录管理
- 公共代码: 公共类放在
common或crmeb目录 - 配置分离: 所有配置统一放在
config目录
注意事项
- 目录权限:
public和runtime目录需要可写权限,生产环境建议设置为 755 或 775 - 入口文件安全:只有
public/index.php是 Web 入口,其他 PHP 文件不应被直接访问 - runtime 目录:定期清理
runtime/log日志文件和runtime/cache缓存文件,避免磁盘空间不足 - crmeb 目录保护:
crmeb目录是核心依赖库,升级时会被覆盖,不要直接修改其中的文件 - 环境配置文件:
.env文件包含敏感配置,不要提交到代码仓库 - 上传目录:用户上传的文件默认存储在
public/uploads,建议配置独立的文件存储服务 - 命名空间对应:目录结构与命名空间严格对应,新建文件时注意 namespace 声明
- view 目录结构:前端代码位于
view目录,admin 是后台管理,uniapp 是移动端
常见问题
Q: 新建的类找不到或报命名空间错误?
A: 检查文件路径是否与命名空间对应,ThinkPHP 使用 PSR-4 自动加载规范,目录名对应命名空间Q: runtime 目录报权限错误?
A: 确保runtime目录及其子目录对 Web 服务器用户(如 www-data、nginx)有写权限Q: 如何区分不同端的代码位置?
A: 后台管理在controller/admin,前端 API 在controller/api,供应商在controller/supplier,路由文件在route目录对应命名Q: 配置文件在哪里修改?
A: 系统配置在config目录下的对应文件,数据库配置优先读取.env环境变量Q: docs 目录的文档会影响系统运行吗?
A:docs目录仅存放开发文档,不参与系统运行,可以根据需要删除或保留Q: 如何添加自定义的工具类?
A: 建议在app目录下新建utils或helpers目录存放自定义工具类,避免修改crmeb目录
评论({{cateWiki.comment_num}})
最新
最早
{{cateWiki.page_view_num}}人看过该文档
评论(0)
最新
最早
372人看过
登录/注册
即可发表评论
{{item.user ? item.user.nickname : ''}}
(自评)
{{item.content}}
搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:
{{path.name}}
{{(i+1) == getCataloguePathData(item.catalogue).length ? '':'/'}}
