Appearance
项目概述
EBAOZU 多门店 V4,基于 CRMEB 二次开发的多门店电商与租赁平台。
- 后端:ThinkPHP 8.0 + Swoole 4,PHP 8.0+
- 前端:总后台 Admin(
view/admin)、门店后台 Store(view/store)、移动端 Uniapp(view/uniapp)
技术栈
| 技术 | 版本/说明 |
|---|---|
| Swoole | 4.0.10(topthink/think-swoole) |
| ThinkPHP ORM | 3.0 |
| Think Queue | 3.0 |
| MySQL | >= 8.0 |
| Redis | 缓存、队列、WebSocket 房间 |
| 支付宝 | Alipay EasySDK 2.2 |
| 总管理后台 | Vue 2.6 + View UI |
| 移动端 | Vue 2 + Uni-app |
目录结构
app/
controller/ # 控制器(按 admin/api/store/cashier/supplier/kefu 分目录)
services/ # 业务逻辑层
dao/ # 数据访问层
model/ # ORM 模型
jobs/ # 队列任务
listener/ # 事件监听器
validate/ # 验证器(按子域分目录)
webscoket/ # WebSocket 处理器
Request.php # 自定义请求类(注入鉴权上下文)
ExceptionHandle.php # 全局异常处理
crmeb/
basic/ # BaseJobs、BaseModel 等底层基类
services/ # 共享底层服务(上传、微信、缓存、HTTP 等)
traits/ # 可复用 Trait
utils/ # 工具类(JwtAuth、Json、Arr 等)
route/
admin.php # /adminapi/*
api.php # /api/*(移动端)
store.php # /storeapi/*严格分层规范
Controller → Services → DAO → Model- 严禁跨层调用:Controller 必须通过 Services 操作,严禁直接调用 Model 或 DAO。
- 数据组装在 Services 层:Model 层仅定义搜索器和关联关系。
关键基类与运行时独立性
系统自 2026-07 起业务调用栈已实现完全的明文独立运行,不依赖加密授权门:
| 基类/服务 | 说明 |
|---|---|
app\basic\OpenBaseController | 所有业务控制器的明文基类(替代旧加密 BaseController) |
app\services\BaseServices | 服务层基类(封装分页、事务) |
app\dao\BaseDao | DAO 基类(需实现 setModel();搜索器解析为明文实现) |
crmeb\basic\BaseModel | ORM 模型基类 |
crmeb\utils\JwtAuth | 明文 JWT Token 解析工具(Token 解析统一走明文) |
app/helpers_open.php | 全局明文公共辅助函数库 |
路由与请求处理
- ThinkPHP 路由注解已禁用,所有路由显式定义于
route/各端文件。 - 使用
app\Request的getMore()/postMore()提取参数:
php
[$name, $status] = $request->postMore([
'name',
['status', 1], // 带默认值
], true); // true = 一维数组(方便解构)API 响应与异常处理
php
return app('json')->success('操作成功', $data);
return app('json')->fail('操作失败', $data);
throw new \crmeb\exceptions\AuthException('错误信息', 400); // 由 ExceptionHandle 统一捕获