|
|
|
|
# ZDXT 执法码管理系统
|
|
|
|
|
|
|
|
|
|
> 基于 [zdxt-Vue-Plus](https://gitee.com/dromara/zdxt-Vue-Plus) v5.6.0 二次开发的多租户执法码管理平台,前后端分离架构。
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
|
|
|
| 层级 | 技术 | 版本 |
|
|
|
|
|
|------|------|------|
|
|
|
|
|
| **后端框架** | Spring Boot | 3.5.12 |
|
|
|
|
|
| **服务网关** | Spring Cloud Gateway | 2025.0.0 |
|
|
|
|
|
| **ORM** | MyBatis-Plus | 3.5.16 |
|
|
|
|
|
| **权限认证** | Sa-Token + JWT | 1.44.0 |
|
|
|
|
|
| **缓存** | Redis + Redisson | 3.52.0 |
|
|
|
|
|
| **数据库** | MySQL | — |
|
|
|
|
|
| **定时任务** | Quartz | — |
|
|
|
|
|
| **接口文档** | SpringDoc OpenAPI | 2.8.15 |
|
|
|
|
|
| **工具库** | Hutool | 5.8.43 |
|
|
|
|
|
| **对象映射** | MapStruct Plus | 1.5.0 |
|
|
|
|
|
| **前端管理端** | Vue 3 + Element Plus + Vite | Vue 3.5 / Vite 6.4 |
|
|
|
|
|
| **前端移动端** | Vue 3 + Vant 4 + Vite | Vue 3.4 / Vite 6.2 |
|
|
|
|
|
| **编译要求** | JDK | ≥ 17 |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 工程结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
zdxt-Vue-Plus/
|
|
|
|
|
├── zdxt-common/ # 通用模块(24 个子模块)
|
|
|
|
|
│ ├── zdxt-common-bom # 依赖清单 BOM
|
|
|
|
|
│ ├── zdxt-common-core # 核心工具
|
|
|
|
|
│ ├── zdxt-common-mybatis # MyBatis-Plus 封装
|
|
|
|
|
│ ├── zdxt-common-redis # Redis & Redisson 封装
|
|
|
|
|
│ ├── zdxt-common-satoken # Sa-Token 集成
|
|
|
|
|
│ ├── zdxt-common-security # 安全模块
|
|
|
|
|
│ ├── zdxt-common-web # Web 通用配置
|
|
|
|
|
│ ├── zdxt-common-oss # 对象存储
|
|
|
|
|
│ ├── zdxt-common-excel # Excel 导入导出
|
|
|
|
|
│ ├── zdxt-common-doc # 接口文档
|
|
|
|
|
│ ├── zdxt-common-log # 操作日志
|
|
|
|
|
│ ├── zdxt-common-tenant # 多租户
|
|
|
|
|
│ ├── zdxt-common-encrypt # 数据加密
|
|
|
|
|
│ ├── zdxt-common-idempotent # 幂等控制
|
|
|
|
|
│ ├── zdxt-common-ratelimiter # 限流
|
|
|
|
|
│ ├── zdxt-common-sensitive # 数据脱敏
|
|
|
|
|
│ ├── zdxt-common-translation # 翻译模块
|
|
|
|
|
│ ├── zdxt-common-mail # 邮件
|
|
|
|
|
│ ├── zdxt-common-sms # 短信
|
|
|
|
|
│ ├── zdxt-common-social # 第三方登录
|
|
|
|
|
│ ├── zdxt-common-sse # SSE 推送
|
|
|
|
|
│ ├── zdxt-common-websocket # WebSocket
|
|
|
|
|
│ ├── zdxt-common-json # JSON 处理
|
|
|
|
|
│ └── zdxt-common-quartz # Quartz 定时任务
|
|
|
|
|
│
|
|
|
|
|
├── zdxt-modules/ # 业务模块
|
|
|
|
|
│ ├── zdxt-system # 系统管理(用户/角色/菜单/部门等)
|
|
|
|
|
│ ├── zdxt-generator # 代码生成器
|
|
|
|
|
│ ├── zdxt-demo # 演示模块
|
|
|
|
|
│ └── zdxt-enforcement-code # ★ 执法码核心业务模块
|
|
|
|
|
│ └── com.zdxt.enforcementcode
|
|
|
|
|
│ ├── controller/ # 控制器
|
|
|
|
|
│ ├── domain/ # 实体 & DTO & VO
|
|
|
|
|
│ ├── mapper/ # 数据访问层
|
|
|
|
|
│ ├── service/ # 业务逻辑层
|
|
|
|
|
│ ├── util/ # 工具类(二维码生成、文件处理等)
|
|
|
|
|
│ ├── quartz/ # 定时任务
|
|
|
|
|
│ └── runner/ # 启动执行器
|
|
|
|
|
│
|
|
|
|
|
├── zdxt-extend/ # 扩展模块
|
|
|
|
|
│ └── zdxt-monitor-admin # Spring Boot Admin 监控中心
|
|
|
|
|
│
|
|
|
|
|
├── zdxt-web-server/ # 服务端入口
|
|
|
|
|
│ ├── zdxt-admin-web-server # 主应用服务(端口 8080)
|
|
|
|
|
│ └── zdxt-gateway-web-server # API 网关(Spring Cloud Gateway)
|
|
|
|
|
│
|
|
|
|
|
├── zdxt-web-client/ # 前端工程
|
|
|
|
|
│ ├── zdxt-admin-plus-ui # 管理后台(Vue3 + Element Plus)
|
|
|
|
|
│ └── zdxt-enforcement-code-app # 移动端 H5(Vue3 + Vant4)
|
|
|
|
|
│ ├── enterprise-dev / enterprise-prod # 企业端(双环境)
|
|
|
|
|
│ └── enforcement-dev / enforcement-prod # 执法端(双环境)
|
|
|
|
|
│
|
|
|
|
|
├── cmd/ # 打包脚本
|
|
|
|
|
│ ├── all-package.bat # 一键全量打包(前后端)
|
|
|
|
|
│ ├── ep-package.bat / ep-package.ps1 # 后端打包
|
|
|
|
|
│ └── client-package.bat / client-package.ps1 # 前端打包
|
|
|
|
|
│
|
|
|
|
|
├── script/ # 脚本 & 配置
|
|
|
|
|
│ ├── sql/ # 数据库脚本
|
|
|
|
|
│ │ ├── ry_vue_5.X.sql # 基础表结构
|
|
|
|
|
│ │ ├── ry_job.sql # 定时任务表
|
|
|
|
|
│ │ └── zfjd-refactoring-v1/ # 执法码业务迁移脚本
|
|
|
|
|
│ ├── docker/ # Docker 部署配置
|
|
|
|
|
│ └── bin/ # 启停脚本
|
|
|
|
|
│
|
|
|
|
|
└── dist/ # 打包产物输出目录
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 环境要求
|
|
|
|
|
|
|
|
|
|
| 依赖 | 最低版本 |
|
|
|
|
|
|------|---------|
|
|
|
|
|
| JDK | 17 |
|
|
|
|
|
| Node.js | 20.15.0 |
|
|
|
|
|
| npm | 8.19.0 |
|
|
|
|
|
| MySQL | 8.x |
|
|
|
|
|
| Redis | 6.x |
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 多环境配置
|
|
|
|
|
|
|
|
|
|
项目支持三套环境,通过 Maven Profile 切换:
|
|
|
|
|
|
|
|
|
|
| Profile | 用途 | 日志级别 | 默认激活 |
|
|
|
|
|
|---------|------|---------|---------|
|
|
|
|
|
| `local` | 本地开发 | info | — |
|
|
|
|
|
| `dev` | 开发/测试环境 | info | ✅ |
|
|
|
|
|
| `prod` | 生产环境 | warn | — |
|
|
|
|
|
|
|
|
|
|
后端配置文件位于 `zdxt-web-server/zdxt-admin-web-server/src/main/resources/`:
|
|
|
|
|
- `application.yml` — 通用配置
|
|
|
|
|
- `application-dev.yml` — 开发环境
|
|
|
|
|
- `application-prod.yml` — 生产环境
|
|
|
|
|
- `application-{env}-{endpoint}-ep.yml` — 多端点差异化配置(sup / ent / enf)
|
|
|
|
|
|
|
|
|
|
前端移动端支持 4 种构建模式:
|
|
|
|
|
- `enterprise-dev` / `enterprise-prod` — 企业端
|
|
|
|
|
- `enforcement-dev` / `enforcement-prod` — 执法端
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
### 1. 后端启动
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 1) 初始化数据库
|
|
|
|
|
# 创建 MySQL 数据库,执行 script/sql/ 下的 SQL 脚本
|
|
|
|
|
|
|
|
|
|
# 2) 修改配置
|
|
|
|
|
# 编辑 application-dev.yml 中的数据库连接、Redis 地址
|
|
|
|
|
|
|
|
|
|
# 3) 启动主应用
|
|
|
|
|
# IDEA 运行 zdxt-admin-web-server 下的 SpringBoot 启动类
|
|
|
|
|
# 默认端口: 8080
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. 前端启动
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 管理后台
|
|
|
|
|
cd zdxt-web-client/zdxt-admin-plus-ui
|
|
|
|
|
npm install
|
|
|
|
|
npm run web-vite-supervision-dev
|
|
|
|
|
|
|
|
|
|
# 移动端 H5(企业端/开发环境为例)
|
|
|
|
|
cd zdxt-web-client/zdxt-enforcement-code-app
|
|
|
|
|
npm install
|
|
|
|
|
npm run app-vite:enterprise-dev
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. 一键打包
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 全量打包(前后端)
|
|
|
|
|
cmd/all-package.bat dev
|
|
|
|
|
|
|
|
|
|
# 仅后端打包
|
|
|
|
|
cmd/ep-package.bat dev
|
|
|
|
|
|
|
|
|
|
# 仅前端打包
|
|
|
|
|
cmd/client-package.bat dev
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
打包产物输出至 `dist/{时间戳}_{环境}/` 目录,包含:
|
|
|
|
|
- `zdxt-sup-web/` — 管理后台前端
|
|
|
|
|
- `zdxt-ent-app/` — 企业端 H5
|
|
|
|
|
- `zdxt-enf-app/` — 执法端 H5
|
|
|
|
|
- `zdxt-admin-web-server.jar` — 后端服务
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 核心功能
|
|
|
|
|
|
|
|
|
|
### 基础平台(继承自 zdxt-Vue-Plus)
|
|
|
|
|
- 多租户管理(基于 SaaS 模式)
|
|
|
|
|
- 用户 / 角色 / 菜单 / 部门权限管理
|
|
|
|
|
- Sa-Token + JWT 认证授权
|
|
|
|
|
- 操作日志 / 登录日志
|
|
|
|
|
- 数据字典 / 参数配置
|
|
|
|
|
- 代码生成器
|
|
|
|
|
- 接口文档(SpringDoc OpenAPI)
|
|
|
|
|
- 分布式锁(Lock4j + Redisson)
|
|
|
|
|
- 文件存储(OSS)
|
|
|
|
|
- SSE 实时推送
|
|
|
|
|
- XSS 防御 / 接口加密 / 幂等控制 / 限流
|
|
|
|
|
|
|
|
|
|
### 执法码业务(zdxt-enforcement-code 模块)
|
|
|
|
|
- 执法码核心业务管理
|
|
|
|
|
- 二维码生成(基于 ZXing)
|
|
|
|
|
- 本地文件上传与管理
|
|
|
|
|
- 企业端 / 执法端双端 H5 应用
|
|
|
|
|
- 定时任务调度(Quartz)
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
### IDEA 运行测试报 "Command line is too long"
|
|
|
|
|
|
|
|
|
|
项目依赖多,Windows 下 classpath 超过 8191 字符限制。
|
|
|
|
|
|
|
|
|
|
**解决方法**:`Run → Edit Configurations → Shorten command line → JAR manifest`
|
|
|
|
|
|
|
|
|
|
建议修改 JUnit 配置模板(Edit configuration templates → JUnit),一劳永逸。
|