本文档旨在详细说明CRMEB系统中系统设置模块的设计架构、核心功能、代码实现及开发规范,为系统开发人员提供完整的开发参考。
本文档适用于CRMEB系统开发人员、维护人员及二次开发人员,用于指导系统设置模块的开发、扩展和维护工作。
| 术语 | 解释 |
|---|---|
| RBAC | 基于角色的权限控制(Role-Based Access Control) |
| 管理员等级 | 管理员的层级关系,上级可管理下级 |
| 角色 | 权限的集合,用于分配给管理员 |
| 菜单权限 | 控制管理员可访问的菜单 |
| 操作权限 | 控制管理员可执行的操作 |
| 配置项 | 系统的各项设置参数 |
| 云存储 | 用于存储图片、文件等资源的云服务 |
| 定时任务 | 系统自动执行的任务 |
系统采用分层架构设计,严格遵循MVC设计模式:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Routes │ │ Controllers │ │ Services │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Models │
└─────────────────┘
│
┌─────────────────┐
│ Daos │
└─────────────────┘
crmeb/app/adminapi/route/setting.php - 包含管理员、角色、菜单、系统配置等路由crmeb/app/adminapi/route/system.php - 包含存储配置、系统日志、数据备份、定时任务等路由crmeb/app/adminapi/route/common.php - 包含左侧菜单获取等公共接口系统设置控制器:crmeb/app/adminapi/controller/v1/setting/
SystemAdmin.php - 管理员管理控制器SystemRole.php - 角色管理控制器SystemMenus.php - 菜单管理控制器SystemConfig.php - 系统配置控制器SystemStorage.php - 存储配置控制器SystemRoute.php - 路由管理控制器SystemCrud.php - 代码生成控制器系统维护控制器:crmeb/app/adminapi/controller/v1/system/
SystemLog.php - 系统日志控制器SystemDatabackup.php - 数据备份控制器SystemCrontab.php - 定时任务控制器系统设置Services:crmeb/app/services/system/
SystemAdminServices.php - 管理员管理服务SystemRoleServices.php - 角色管理服务SystemMenusServices.php - 菜单管理服务SystemConfigServices.php - 系统配置服务SystemStorageServices.php - 存储配置服务SystemRouteServices.php - 路由管理服务SystemCrudServices.php - 代码生成服务系统维护Services:
SystemLogServices.php - 系统日志服务SystemDatabackupServices.php - 数据备份服务SystemCrontabServices.php - 定时任务服务系统设置模型:crmeb/app/model/system/
SystemAdmin.php - 管理员模型SystemRole.php - 角色模型SystemMenus.php - 菜单模型SystemConfig.php - 系统配置模型SystemStorage.php - 存储配置模型SystemRoute.php - 路由模型系统维护模型:
SystemLog.php - 系统日志模型SystemDatabackup.php - 数据备份模型SystemCrontab.php - 定时任务模型| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 管理员ID |
| role_id | int(10) | 角色ID |
| level | tinyint(1) | 管理员等级 |
| username | varchar(20) | 用户名 |
| password | varchar(60) | 密码 |
| salt | varchar(10) | 密码盐 |
| real_name | varchar(20) | 真实姓名 |
| avatar | varchar(255) | 头像 |
| phone | varchar(20) | 手机号 |
| varchar(50) | 邮箱 | |
| last_login_ip | varchar(15) | 最后登录IP |
| last_login_time | int(10) | 最后登录时间 |
| login_num | int(10) | 登录次数 |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| is_delete | tinyint(1) | 是否删除 |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 角色ID |
| role_name | varchar(20) | 角色名称 |
| level | tinyint(1) | 角色等级 |
| auth_rules | text | 权限规则(JSON格式) |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| is_delete | tinyint(1) | 是否删除 |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 菜单ID |
| pid | int(10) | 父菜单ID |
| menu_name | varchar(20) | 菜单名称 |
| menu_type | tinyint(1) | 菜单类型(0-目录,1-菜单,2-按钮) |
| url | varchar(100) | 菜单路径 |
| icon | varchar(50) | 菜单图标 |
| auth | varchar(50) | 权限标识 |
| open_type | varchar(10) | 打开方式(_self, _blank) |
| sort | int(10) | 排序 |
| is_show | tinyint(1) | 是否显示(0-隐藏,1-显示) |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 配置ID |
| menu_name | varchar(20) | 菜单名称 |
| type | tinyint(1) | 配置类型 |
| title | varchar(50) | 配置标题 |
| name | varchar(50) | 配置名称 |
| value | text | 配置值 |
| placeholder | varchar(100) | 配置说明 |
| tips | varchar(255) | 配置提示 |
| sort | int(10) | 排序 |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 配置ID |
| name | varchar(20) | 存储名称 |
| type | varchar(20) | 存储类型(local, oss, cos, qiniu) |
| config | text | 存储配置(JSON格式) |
| is_default | tinyint(1) | 是否默认(0-否,1-是) |
| status | tinyint(1) | 状态(0-禁用,1-启用) |
| add_time | int(10) | 添加时间 |
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | int(10) unsigned | 日志ID |
| admin_id | int(10) | 管理员ID |
| admin_name | varchar(20) | 管理员名称 |
| ip | varchar(15) | 操作IP |
| url | varchar(255) | 操作URL |
| method | varchar(10) | 请求方法 |
| param | text | 请求参数 |
| type | tinyint(1) | 日志类型(0-登录日志,1-操作日志) |
| content | varchar(255) | 操作内容 |
| add_time | int(10) | 添加时间 |
/adminapi/v1/setting/admin/list/adminapi/v1/setting/admin/create/adminapi/v1/setting/admin/update/{id}/adminapi/v1/setting/role/list/adminapi/v1/setting/role/create/adminapi/v1/setting/role/permission/{id}/adminapi/v1/setting/menu/list/adminapi/v1/setting/menu/create/adminapi/v1/common/menu/adminapi/v1/setting/config/list/adminapi/v1/setting/config/update命名规范:
SystemAdminServicesgetAdminListrolePermissionMENU_TYPE_CATALOG代码结构:
权限控制:
问题:上级管理员无法管理下级管理员或角色 解决方案:
问题:管理员无法看到某些菜单 解决方案:
问题:修改系统配置后不生效 解决方案:
问题:系统操作没有记录日志 解决方案:
| 版本 | 更新日期 | 更新内容 | 更新人 |
|---|---|---|---|
| 1.0 | 2026-01-19 | 初始版本,包含管理员管理、角色管理、菜单管理、系统配置、存储配置、系统日志、数据备份、定时任务等核心功能 | AI Assistant |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Routes │ │ Controllers │ │ Services │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Models │
└─────────────────┘
│
┌─────────────────┐
│ Daos │
└─────────────────┘
权限控制流程:
1. 用户登录系统,获取token
2. 发起API请求,携带token
3. 权限中间件验证token合法性
4. 获取用户所属角色
5. 获取角色拥有的权限
6. 验证请求的路由是否在权限列表中
7. 验证通过,执行请求;验证失败,返回权限错误
菜单权限继承关系:
┌─────────────────┐
│ 超级管理员 │
└─────────┬───────┘
│
┌─────────▼───────┐
│ 一级管理员 │
└─────────┬───────┘
│
┌─────────▼───────┐
│ 二级管理员 │
└─────────────────┘
说明:上级管理员可以管理所有下级管理员,拥有下级管理员的所有权限
| 分类名称 | 描述 |
|---|---|
| basic | 基本配置 |
| shop | 商城配置 |
| payment | 支付配置 |
| sms | 短信配置 |
| storage | 存储配置 |
| 微信配置 | |
| express | 物流配置 |
| marketing | 营销配置 |
提示:该文档由AI生成,仅供参考。