You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
7.9 KiB

# ZDXT 执法码管理系统
5 months ago
> 基于 [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 |
---
## 工程结构
```
5 months ago
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 定时任务
5 months ago
├── zdxt-modules/ # 业务模块
│ ├── zdxt-system # 系统管理(用户/角色/菜单/部门等)
│ ├── zdxt-generator # 代码生成器
│ ├── zdxt-demo # 演示模块
│ └── zdxt-enforcement-code # ★ 执法码核心业务模块
│ └── com.zdxt.enforcementcode
│ ├── controller/ # 控制器
│ ├── domain/ # 实体 & DTO & VO
│ ├── mapper/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ ├── util/ # 工具类(二维码生成、文件处理等)
│ ├── quartz/ # 定时任务
│ └── runner/ # 启动执行器
5 months ago
├── 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` — 后端服务
---
## 核心功能
5 months ago
### 基础平台(继承自 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),一劳永逸。