一套基于 ThinkPHP 6 + Layui 构建的轻量级 SQL 审核工单管理系统,支持多数据源、多级审核流程、企业微信通知,适用于团队对 MySQL 数据库变更进行规范化审批管理。
一、系统概述
本系统是一套面向研发、DBA、运维团队的 SQL 审核工单平台,核心目标是规范数据库变更流程:开发人员提交 SQL 工单 → 指定审核人 → 审核人在线审核并执行 SQL → 全程记录可追溯。
系统基于 caozha-admin 后台管理框架,由雄鹰(童建平)当时在职【联生活】公司时独立进行二次开发。
二、技术栈
| 类别 | 技术 |
|---|---|
| 后端框架 | ThinkPHP 6.0(多应用模式) |
| 前端 UI | Layui + LayuiMini 后台模板 |
| 数据库 | MySQL 8.0 |
| PHP 版本 | >= 7.1 |
| 缓存 | ThinkPHP Cache(文件缓存) |
| 验证码 | think-captcha 3.0 |
| 模板引擎 | think-view |
| 通知集成 | 企业微信 API |
三、核心功能模块
3.1 SQL 工单管理(核心)
- 提交工单:填写工单名称、选择数据源、选择目标数据库、编写 SQL 语句、描述变更内容、指定审核人
- 工单状态:审核中 / 已执行,两种状态清晰标识
- 审核流程:
- 审核人可在线查看工单详情(SQL 内容、数据源、目标库等)
- 支持 审核通过并执行:系统自动连接目标数据源执行 SQL,返回执行结果(影响行数、耗时)
- 支持 拒绝审核:需填写拒绝原因
- 支持 转交审核人:将工单流转给下一位审核人
- 执行日志:每次审核操作自动追加到
sql_log字段,完整记录审核流转历史 - SQL 解析:支持多条 SQL 语句按分号拆分,逐条执行并分别返回结果
- 工单搜索:支持按关键词模糊搜索(工单名、SQL 内容、审核人、提交人等)
- 工单权限:普通员工只能查看自己提交的工单,管理员可查看所有工单
3.2 数据源管理
- 支持管理多个 MySQL 数据源(IP、端口、用户名、密码)
- 数据源可设置是否在前端下拉中显示(
sql_show字段) - 支持排序管理
- 创建工单时,选择数据源后自动连接获取可用数据库列表(排除系统库)
3.3 管理员管理
- 管理员的增删改查
- 支持字段:账号、密码、真实姓名、手机、邮箱、微信号、QQ、备注
- 记录最后登录 IP、最后登录时间、最后退出时间、登录次数
- 管理员与权限组关联(一对一关系)
- 密码采用 MD5 加强加密(
md5("caozha.com|" . md5($str)))
3.4 权限组管理
- 支持自定义权限组,每个权限组可勾选多个权限标识
- 内置权限标识:
| 标识 | 说明 |
|---|---|
config |
网站配置 |
roles |
权限组管理(超级管理员) |
admin |
管理员管理(超级管理员) |
log_view |
查看系统日志 |
log_del |
删除系统日志 |
mine |
修改自己资料 |
dbsource |
数据源管理 |
order |
查看工单 |
order_add |
添加工单 |
order_mod |
修改工单 |
order_del |
删除工单 |
order_approve |
审核工单 |
- 预置角色:超级管理员(全部权限)、1级员工(仅提交工单)、2级管理(可增删改工单)、3级管理(可审核执行)、4级管理(Boss 级别,可审核执行)
3.5 系统日志
- 自动记录所有关键操作(登录、退出、新增/修改/删除工单、修改配置等)
- 日志内容包含:操作内容、操作人、IP 地址、时间、浏览器类型、操作系统
- 支持关键词搜索
- 支持单条删除和批量清理(自动删除一周前的日志)
3.6 系统设置
- 以 JSON 格式存储配置项,包括:
- 站点名称、站点 URL
- 各模块列表页默认显示条数(管理员、权限组、工单、日志等)
- SEO 相关(标题、关键词、描述)
- 页脚版权信息
3.7 个人中心
- 管理员可查看和修改自己的个人资料(姓名、手机、邮箱、微信、QQ)
- 支持修改登录密码
四、系统特色
4.1 企业微信深度集成
- 微信登录:移动端支持企业微信扫码登录,通过微信 UserId 匹配管理员账号
- 工单通知:
- 提交工单时,自动发送企业微信消息通知审核人
- 审核通过/拒绝/转交时,自动通知相关人员
- 审核执行完成后,自动通知工单提交人
- Token 管理:通过
cz_token表存储企业微信access_token
4.2 多角色审核流程
- 支持多级审核人指定,工单可在不同审核人之间流转
- 不同角色看到不同的菜单和功能:
- 超级管理员:所有功能
- 普通员工:仅工单管理(提交)
- 审核管理:可查看、审核、执行工单
- 审核页面根据角色动态展示不同操作按钮
4.3 移动端适配
- 自动检测移动端访问(支持微信浏览器、Android、iOS 等)
- 移动端自动切换为适配小屏的登录和审核界面
- 支持移动端企业微信 OAuth2 扫码登录
4.4 安全防护
- 全局 SQL 注入过滤(
filter_sql函数过滤危险关键字) - 验证码机制防止暴力登录
- 基于中间件的身份认证(
Auth中间件) - 基于权限标识的细粒度访问控制(
cz_auth函数) - 密码加强型 MD5 加密
- 字段白名单更新(
allowField)防止非法字段写入 - HTML 标签过滤(
filter_html)防止 XSS 攻击
4.5 缓存机制
- 权限组数据缓存(按角色 ID 缓存)
- 数据源数据缓存
- 工单数据缓存
- 管理员数据缓存
- 系统配置缓存
- 支持一键清除所有缓存
五、数据库结构
系统共 6 张数据表,表前缀 cz_:
| 表名 | 说明 |
|---|---|
cz_administrators |
管理员表(账号、密码、权限组、联系方式、登录记录等) |
cz_roles |
权限组表(权限标识、组名、备注、启用状态) |
cz_dbsource |
数据源表(名称、IP、端口、用户名、密码、排序、是否显示) |
cz_order |
工单表(工单名、状态、数据源、目标库、SQL 内容、审核人、提交人、审核日志等) |
cz_syslog |
系统日志表(日志内容、操作人、IP、时间) |
cz_web_config |
系统配置表(JSON 格式存储全局配置) |
cz_token |
企业微信 Token 表(access_token、更新时间) |
六、目录结构
wxsql/
├── app/
│ ├── admin/ # 后台管理应用
│ │ ├── config/ # 应用配置
│ │ │ └── app.php # 菜单配置、权限标识定义
│ │ ├── controller/ # 控制器
│ │ │ ├── Index.php # 首页、登录、验证码、菜单初始化
│ │ │ ├── Order.php # 工单管理(核心)
│ │ │ ├── Dbsource.php # 数据源管理
│ │ │ ├── Administrators.php# 管理员管理
│ │ │ ├── Roles.php # 权限组管理
│ │ │ ├── Syslog.php # 系统日志
│ │ │ ├── WebConfig.php # 系统设置
│ │ │ ├── Mine.php # 个人中心
│ │ │ ├── Common.php # 公共页面(错误/成功/确认)
│ │ │ └── Tree.php # 树型结构工具类
│ │ ├── middleware/
│ │ │ └── Auth.php # 身份认证中间件
│ │ ├── model/ # 数据模型
│ │ ├── view/ # 视图模板
│ │ ├── common.php # 公共函数库
│ │ └── middleware.php # 中间件注册
│ ├── index/ # 前台应用(占位页)
│ ├── common.php # 全局公共函数
│ ├── BaseController.php # 控制器基类
│ └── middleware.php # 全局中间件
├── config/
│ └── database.php # 数据库连接配置
├── mysql/ # SQL 初始化脚本
├── public/ # 入口目录
│ ├── index.php # 应用入口
│ ├── static/ # 静态资源(Layui、后台 UI)
│ └── uploads/ # 上传目录
├── runtime/ # 运行时目录(日志、缓存、Session)
├── vendor/ # Composer 依赖
├── composer.json # 依赖配置
└── think # ThinkPHP CLI 入口
七、部署说明
7.1 环境要求
- PHP >= 7.1
- MySQL 5.7+ / 8.0
- Nginx / Apache
- Composer
7.2 安装步骤
- 导入数据库:将
mysql/目录下的 SQL 文件导入 MySQL - 安装依赖:
composer install - 配置数据库:修改
config/database.php中的数据库连接信息(或通过.env文件配置) - 配置 Web 服务器:将网站根目录指向
public/目录 - 设置运行时目录权限:确保
runtime/目录可写 - 访问后台:
http://your-domain/admin/index/login - 默认管理员:账号
admin
7.3 Nginx 配置参考
server {
listen 80;
server_name your-domain.com;
root /path/to/wxsql/public;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
八、使用流程
开发人员提交工单 审核人审核 执行结果
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1.选择数据源 │ │ 1.查看SQL内容 │ │ 自动连接目标库 │
│ 2.选择目标库 │ ──→── │ 2.选择操作 │ ──→── │ 逐条执行SQL │
│ 3.编写SQL │ │ - 通过并执行 │ │ 返回影响行数 │
│ 4.指定审核人 │ │ - 拒绝 │ │ 记录执行日志 │
│ 5.提交工单 │ │ - 转交他人 │ │ 微信通知提交人│
└─────────────┘ └──────────────┘ └──────────────┘
九、适用场景
- 研发团队:规范数据库变更流程,避免直接操作生产数据库
- DBA 管理:集中审核 SQL 语句,控制数据库变更风险
- 运维审计:所有 SQL 执行记录可追溯,满足合规要求
- 多环境管理:支持配置测试库、正式库等多个数据源,分别管控
十、平台截图








