🌍 获取天气中...
在线2FA 开发工具 IP查询 友情链接
首页 PHP SQL审核平台
PHP

SQL审核平台

原创 作者: 童建平 2022-03-24

一套基于 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 安装步骤

  1. 导入数据库:将 mysql/ 目录下的 SQL 文件导入 MySQL
  2. 安装依赖
    composer install
    
  3. 配置数据库:修改 config/database.php 中的数据库连接信息(或通过 .env 文件配置)
  4. 配置 Web 服务器:将网站根目录指向 public/ 目录
  5. 设置运行时目录权限:确保 runtime/ 目录可写
  6. 访问后台http://your-domain/admin/index/login
  7. 默认管理员:账号 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 执行记录可追溯,满足合规要求
  • 多环境管理:支持配置测试库、正式库等多个数据源,分别管控

十、平台截图

sqlreview1
sqlreview2
sqlreview3
sqlreview4
sqlreview5
sqlreview6
sqlreview7
sqlreview8
sqlreview9