Files
code/合并优化说明.md
2026-01-29 17:48:51 +08:00

106 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 两套后台合并优化说明
## 优化目标
`admin``adminghd` 两套后台的重复代码进行合并,通过统一的架构减少代码冗余,提高可维护性。
## 优化成果
### 1. 创建公共配置类
**文件**: `application/common/config/BusinessConfig.php`
- 统一管理业务类型配置
- 提供数据表映射(`wechat_user` vs `ghd_wechat_user`
- 提供Session标识映射`admin_user_id` vs `adminghd_user_id`
- 自动根据模块名识别业务类型
### 2. 创建公共基础控制器
**文件**: `application/common/common/BaseController.php`
- 统一处理登录验证逻辑
- 自动识别业务类型并加载对应的数据表映射
- 提供 `getTableName()` 方法,自动获取正确的数据表名
### 3. 创建公共业务控制器
**文件**:
- `application/common/controller/WechatinfroBase.php` - 微信用户信息管理
- `application/common/controller/WechatsetBase.php` - 微信设置管理
- `application/common/controller/DashboardBase.php` - 系统概览
**功能**:
- 统一的业务逻辑实现
- 自动使用正确的数据表(通过 `getTableName()` 方法)
- 减少重复代码约 **70%**
### 4. 重构模块控制器
**修改文件**:
- `application/admin/controller/Wechatinfro.php`
- `application/admin/controller/Wechatset.php`
- `application/admin/controller/Dashboard.php`
- `application/adminghd/controller/Wechatinfro.php`
- `application/adminghd/controller/Wechatset.php`
- `application/adminghd/controller/Dashboard.php`
**改进**:
- 继承公共控制器,代码量减少 **80%**
- 只保留视图渲染方法,业务逻辑全部复用
### 5. 统一Base类
**修改文件**:
- `application/admin/common/Base.php`
- `application/adminghd/common/Base.php`
**改进**:
- 继承公共 `BaseController`
- 自动处理业务类型识别和登录验证
- 修复了 `adminghd` 模块中的调试代码问题
## 代码减少统计
### 控制器代码减少
- **Wechatinfro**: 从 ~105 行减少到 ~25 行(减少 76%
- **Wechatset**: 从 ~183 行减少到 ~30 行(减少 84%
- **Dashboard**: 从 ~68 行减少到 ~12 行(减少 82%
### 总体效果
- **总代码行数减少**: 约 **600+ 行**
- **重复代码消除**: 约 **90%**
- **维护成本降低**: 修改业务逻辑只需在一个地方进行
## 架构优势
1. **单一职责**: 公共控制器只负责业务逻辑,模块控制器只负责视图渲染
2. **易于扩展**: 新增业务类型只需在 `BusinessConfig` 中添加配置
3. **向后兼容**: 保持两套后台的访问路径不变(`/admin/``/adminghd/`
4. **数据隔离**: 通过配置自动使用不同的数据表,保证数据隔离
## 使用说明
### 添加新的业务类型
1.`BusinessConfig.php` 中添加新的业务类型常量
2.`getTableMap()` 方法中添加数据表映射
3.`getSessionKey()` 方法中添加Session标识映射
### 添加新的公共业务逻辑
1.`application/common/controller/` 下创建新的公共控制器
2. 继承 `BaseController`,使用 `getTableName()` 获取数据表名
3. 在模块控制器中继承公共控制器
## 注意事项
1. **静态资源**: CSS和JS文件保持独立因为路径不同`/admin/` vs `/adminghd/`
2. **视图文件**: 视图文件保持独立,因为可能有个性化需求
3. **登录控制器**: 登录逻辑保持独立因为Session标识不同
## 后续优化建议
1. **统一静态资源**: 可以考虑通过动态变量统一CSS/JS路径
2. **统一视图模板**: 如果视图完全一致,可以考虑使用公共视图
3. **API统一**: 可以考虑将API接口也进行统一管理
## 测试建议
1. 测试 `admin` 模块的所有功能是否正常
2. 测试 `adminghd` 模块的所有功能是否正常
3. 验证数据表是否正确使用(`wechat_user` vs `ghd_wechat_user`
4. 验证Session是否正确隔离